터미널은 어떤 프로토콜/표준을 사용합니까?

터미널은 어떤 프로토콜/표준을 사용합니까?

명령줄 응용 프로그램의 "GUI"가 네트워크를 통해 어떻게 통신하는지 궁금합니다. 대부분의 경우 매우 간단하지만(일반 텍스트/입력) 때로는 더 복잡합니다(기능).

누구나 자신의 터미널을 작성할 수 있고 모든 터미널 구현이 동일한 방식(색상, 위치 지정 등)으로 작동하도록 일부 표준에 의해 정의되어 있습니까?

답변1

콘솔 프로그램은 일반적으로저주또는 당신이 말하는 종류의 텍스트 사용자 인터페이스를 구축하기 위한 후속 제품 중 하나입니다.

이것들도서관termcap및 라는 두 데이터베이스 중 하나를 사용합니다 terminfo. ² 이 데이터베이스에는 다음이 포함됩니다.지도다양한 터미널 유형에서 원하는 작업을 수행하기 위해 어떤 코드를 보내야 하는지 라이브러리에 알려주세요. 이러한 데이터베이스에 정의된 대부분의 터미널 유형은 살아남지 못합니다.실제 터미널, 따라서 이제는 역사적 의미만 갖습니다.

ANSI 터미널

최신 Unix 터미널 에뮬레이터³는 ANSI X3.64 프로토콜 또는 그 이후 변형 중 하나를 사용합니다.

  • ANSI X3.64: "유리 단자" 제어 표준 - 있음텔레타이프라이터— 원격 터미널에서 해석되는 특수 문자 시퀀스를 기반으로 합니다. 예를 들어 Unix 상자가 ANSI X3.64 호환 터미널에 커서를 화면의 왼쪽 상단으로 이동하라고 지시하려는 경우 문자를 보냅니다 ESC [ 1 ; 1 H. 처음 두 문자는 제어 순서가 필요함을 터미널에 알리고, 1은 행과 열이며 H"커서 이동" 명령입니다. ⁴

    퀴즈: 많은 컴퓨터법정ANSI 코드도 사용됩니다. (그래도 해, 실제로. )

  • 12월VT100: 최초의 인기 있는 ANSI 호환 유리 터미널은 Digital Equipment Corporation의 VT100이었습니다. ANSI에서 입증됨법학시장에서 표준을 확립했습니다.사실은오늘날에도 여전히 유효한 표준입니다.

    때로는 VT100의 최신 버전인 VT102 프로토콜과 사용 가능한 모든 내장 확장 옵션을 볼 수 있습니다.

    DEC 터미널 프로토콜은 1978년에 도입된 최초의 ANSI 호환 모델(VT100)부터무한한 기술1995년에는 DEC로부터 단말기 사업을 인수했습니다. (Boundless는 현재 폐업했지만 해당 단말기는 여전히 중고 시장에 가끔 등장합니다.)

  • xterm: ANSI와 VT 표준을 혼합한 것입니다. GUI 터미널 에뮬레이터 xterm나 그 파생물 중 하나를 사용할 때마다 일반적으로 xterm터미널 프로토콜, 일반적으로 더 현대적인 프로토콜 xterm-color이나 xterm-color256그 변형을 사용하게 됩니다.

  • 리눅스xterm: Linux 콘솔은 또한 프로토콜의 정신과 일치하는 ANSI 터미널 프로토콜의 확장된 변형을 사용합니다 . 확장의 대부분은 PC와 유리 단말기의 차이점과 관련이 있습니다. 예를 들어, IBM 키보드에는 DEC VT에는 없는 일부 키가 있습니다. (반대로.)

    일부 Unix 시스템에는 자체 콘솔 터미널 프로토콜도 있습니다. scoansi예를 들어, SCO Unix용 ANSI X3.64 변형이 있습니다.

일반적인 터미널 에뮬레이터 프로그램은 하이브리드이며 단일 터미널 모델을 정확하게 에뮬레이션하지 않습니다. VT320에서 모든 DEC VT 이스케이프 시퀀스의 96%를 지원할 수 있을 뿐만 아니라 ANSI 색상(VT525 기능) 및 임의 개수의 행과 열과 같은 확장도 지원합니다. 프로그램에 이러한 기능이 필요하지 않은 경우 curses프로그램에서 VT320 프로토콜을 사용하도록 요청 했더라도 프로그램이 이해하지 못하는 4%의 코드는 누락되지 않을 수 있습니다. 이러한 프로그램은 VT320과 호환된다고 주장할 수 있지만 엄밀히 말하면 그렇지 않습니다. ⁵

ANSI가 아닌 터미널

때때로 접할 수 있는 몇 가지 다른 주목할만한 표준이 있습니다.

  • 지혜: Wyse는 1980년대 초반부터 터미널 생산을 시작한 최초의 독립 유리 터미널 제조업체 중 하나입니다.워크스테이션 컴퓨팅미니컴퓨터를 대체하기 시작했습니다. Wyse 터미널은 VT100 및 기타 널리 사용되는 터미널 프로토콜을 에뮬레이션할 수 있지만 고유한 기본 코드도 있습니다.

  • IBM 3270: 엄밀히 말하면 "Unix" 터미널 유형은 아니지만 Unix 시스템을 IBM 메인프레임에 연결해야 했기 때문에 IBM 3270 시리즈 터미널 에뮬레이터 프로그램이 탄생하게 되었으며, 이 프로그램은 여전히 ​​사용되고 있습니다. 나중에 시뮬레이터IBM 5250 시리즈터미널은 또한 매우 일반적이며 현재 연결하는 데 가장 일반적으로 사용됩니다.AS/400 및 System i미니컴퓨터.

  • 텍트로닉스 4014: PC와 워크스테이션이 유리 터미널을 대체하고 비트맵 그래픽을 표준 기능으로 만들기 전에는 위의 이스케이프 시퀀스와 유사한 텍스트 명령에 응답하여 화면에 그래픽을 그리는 값비싼 그래픽 터미널이 있었습니다. 아마도 가장 인기 있는 제품은 Tektronix 4010 시리즈일 것입니다.

    사용하기 재미있습니다. 그래프를 그리는 프로그램을 작성할 수 있지만 단순히 이를 실행하여 로컬 터미널에 그리는 대신 출력을 파일로 리디렉션할 수 있습니다.

    $ ./my4014program > my-neat-graphic
    

    cat그런 다음 프로그램을 설치하지 않고도 Tek 터미널에서 그래픽을 볼 수 있는 다른 사람에게 파일을 보낼 수 있습니다 . 매력 중 하나는 이러한 터미널이 매우 느리게 그려지므로 몇 초 안에 그래프가 구성되는 것을 볼 수 있다는 것입니다.

이제 Unix 터미널 에뮬레이션을 사용하세요

curses환경 변수를 살펴보면 라이브러리에 사용을 선호하는 터미널 표준을 찾을 수 있습니다 TERM.

$ echo $TERM
xterm-color

ssh다른 시스템에 연결할 때 이 TERM변수는 원격 Unix 시스템이 로컬 터미널과 통신하는 방법을 알 수 있도록 전달됩니다.

이러한 프로토콜 중 다수는 ANSI X3.64 변형이고 유비쿼터스 ASCII 및 UTF-8 문자 인코딩 표준이 다른 많은 문제를 처리하기 때문에 TERM일반적으로 잘못된 변수는 비참한 결과를 초래하지 않습니다. 쉽게 손상되는 것에는 확장 키(예: Home, Page Up), Alt 키 조합, 인쇄 표시 기능(예: 컬러, 굵게 등)이 포함됩니다.


각주:

  1. 가장 흔한,저주.

    API에는 직접적인 경쟁자도 있습니다 curses.속어.

  2. AT&T 발행terminfotermcapBSD 데이터베이스의 대안, 이를 대체하는 데 크게 성공했지만 여전히 기존 termcap데이터베이스를 사용하는 프로그램이 있습니다. 이는 현대 시스템에서 여전히 찾을 수 있는 BSD와 AT&T의 많은 차이점 중 하나입니다.

    내 macOS 컴퓨터에는 없지만 FreeBSD의 표준 설치와는 달리 /etc/termcap있습니다 /usr/share/terminfo. 두 운영 체제는 일반적으로 명령줄 수준에서 매우 유사하지만.

  3. minicom,xterm,mintty,그놈 터미널,터미널 프로그램, 등.

  4. 올바르게 작성된 Unix 프로그램은 다음을 내보내지 않습니다.이스케이프 시퀀스곧장. 대신 위에서 언급한 라이브러리 중 하나를 사용하여 "커서를 (1,1) 위치로 이동"이라고 말한 다음도서관환경 변수 설정 에 따라 TERM필요한 터미널 제어 코드를 발행하십시오 . 이를 통해 프로그램을 실행 중인 터미널 유형에 관계없이 프로그램이 작동할 수 있습니다.

  5. 오래된 텍스트 터미널에는 프로그램에서 많이 사용되지 않는 이상한 기능이 많이 있었기 때문에 많은 인기 터미널 에뮬레이터 프로그램에서는 이러한 기능을 전혀 구현하지 않았습니다. 일반적인 누락은 지원하는 것입니다.6가지 컬러 그래픽및 이중 너비/두 배 높이 텍스트 모드.

    유지관리자xterm나는'이라는 프로그램을 썼다.vttest예를 들어 VT 터미널 에뮬레이터를 테스트하는 데 사용됩니다 xterm. 다른 터미널 에뮬레이터에 대해 실행하여 지원하지 않는 기능을 확인할 수 있습니다.

관련 정보