Presentation is loading. Please wait.

Presentation is loading. Please wait.

TCP/IP 네트워크 제 26 장 Telnet과 Rlogin 정보통신연구실.

Similar presentations


Presentation on theme: "TCP/IP 네트워크 제 26 장 Telnet과 Rlogin 정보통신연구실."— Presentation transcript:

1 TCP/IP 네트워크 제 26 장 Telnet과 Rlogin 정보통신연구실

2 목 차 1. 개요 2. Rlogin 프로토콜 3. Rlogin 예 4. Telnet 프로토콜 5. Telnet 예 6. 요약
목 차 1. 개요 2. Rlogin 프로토콜 3. Rlogin 예 4. Telnet 프로토콜 5. Telnet 예 6. 요약 정보통신연구실

3 1. 개요 원격 로그인 구조 (Telnet 클라이언트-서버) 한 호스트에서 네트워크를 통해 다른 호스트 접속
두 종단 시스템 사이에 다수의 작은 패킷 전송 Telnet : 상이한 운영체제 호스트간의 원격 로그인 Rlogin : UNIX 호스트간의 원격 로그인 구조 (Telnet 클라이언트-서버) Telnet 클라이언트 Telnet 서버 Login 쉘 터미널 드라이버 TCP/IP TCP/IP 의사 터미널 드라이버 커널 커널 터미널에 있는 사용자 TCP 연결 정보통신연구실

4 1. 개요 (cont’d) 구성 요소 Telnet 클라이언트는 터미널의 사용자와 TCP/IP를 중개한다.
점선 박스는 운영체제 커널 부분을 나타낸다. Telnet 클라이언트 / Telnet 서버는 응용프로그램이다. 원격 로그인을 통해 서버에 접속하기 위해서 계정을 가져야 한다. 정보통신연구실

5 1. 개요 (cont’d) Telnet과 Rlogin의 복잡성 비교 (소스 코드) 정보통신연구실

6 2. Rlogin 프로토콜 4.2 BSD와 함께 출현한 Rlogin 지난 수년간 Rlogin은 비 UNIX 환경에 이식 됨
Telnet 보다 단순한 프로토콜 지난 수년간 Rlogin은 비 UNIX 환경에 이식 됨 문자단위 전송, 모든 에코는 서버에서 수행 RFC 1282 : Rlogin 프로토콜 사양의 정의 [Stevens 1990] : Rlogin 소스 코드 제공 [Comer and Stevens 1993] : 구현의 세부 내용 정보통신연구실

7 2.1 응용 프로그램 시작 TCP 연결 설정 완료 이후 다음의 응용 프로토콜이 클라이언트와 서버 사이에 생김
클라이언트는 서버에 4개의 문자열을 전송 0의 바이트, 클라이언트상의 로그인 이름, 서버상의 로그인 이름, 터미널 종류/전송 속도 예) 0의 1 바이트, rstevens\0 rstevens\0 ibmpc3/9600\0 서버는 0의 바이트 응답 서버는 사용자의 암호 입력을 요구하는 옵션을 가짐 .rhosts : 호스트 이름과 사용자 이름 등록 시 암호 없이 로그인 서버는 클라이언트에게 터미널의 윈도우 크기를 요청 정보통신연구실

8 2.2 흐름 제어 Rlogin 클라이언트에 의해서 흐름 제어 Rlogin 서버에 의해서 흐름 제어 시 문제점
터미널의 출력 정지(Ctrl-S)와 시작(Ctrl-Q) Rlogin 서버에 의해서 흐름 제어 시 문제점 터미널 사용자 Rlogin 클라이언트 서버 터미널에 표시하기 위한 데이터 최대 윈도우 Ctrl-S 서버가 클라이언트에서의 흐름 제어 有無 판단 예) emacs 편집기에서 Ctrl-S, Ctrl-Q 사용 정보통신연구실

9 인터럽트 키 윈도우 크기 변경 2.3 클라이언트 인터럽트 & 윈도우 크기 변경 클라이언트에서 실행중인 서버의 프로세스를 중단
인터럽트 키(DELETE 또는 Ctrl-C) 흐름 제어와 유사 TCP의 긴급 모드를 사용할 필요가 없음 윈도우 크기 변경 윈도우 크기를 식별할 필요가 있는 응용 프로그램은 서버에서 동작하고 클라이언트에서 윈도우 크기 변화가 발생 변화된 윈도우 크기와 새로운 윈도우 크기를 서버에게 전달 정보통신연구실

10 2.4 서버에서 클라이언트로 명령 명령 도착 시 클라이언트 동작 TCP 긴급 모드 사용 TCP 긴급 모드를 사용하는 이유
명령어 바이트 번역하고, 터미널에 출력하지 않음 TCP 긴급 모드 사용 클라이언트가 긴급 모드 통지를 받을 때 명령 바이트를 만날 때까지 데이터를 저장하면서 읽고, 해당 명령에 따라서 저장된 데이터 처리 TCP 긴급 모드를 사용하는 이유 서버에서 클라이언트의 데이터 흐름이 TCP의 윈도우화된 흐름 제어에 의해 멈춰졌다고 해도 0x02 명령이 클라이언트에 보내질 필요가 있기 때문이다. 정보통신연구실

11 2.4 서버에서 클라이언트로 명령 (cont’d)
서버에서 클라이언트로 Rlogin 명령 정보통신연구실

12 2.5 클라이언트에서 서버로 명령 현재 윈도우 크기 정보 전송 명령어 도착 시 서버 동작
서버로부터 명령(0x80) 수신 시에 전송함 4 개의 16 비트 정보 행의 수, 열의 수, X 축 방향의 픽셀 수, Y 축 방향의 픽셀 수 명령어 도착 시 서버 동작 일반 데이터와 구별 연속적 0xff 값의 2 바이트와 연속적인 ‘s’ 값의 2 바이트 플래그 다음에 윈도우 크기 정보 완벽한 방법이 아님 대역내 신호방식 명령어 바이트가 일반 스트림의 데이터로 전송됨 정보통신연구실

13 2.5 클라이언트에서 서버로 명령 (cont’d)
클라이언트에 의해서 보내진 바이트와 서버에 의해 되돌려 보내진 바이트의 비율 = 약 1:20 많은 양의 출력을 생성하기 위해 짧은 명령어 사용 클라이언트에서 서버로의 데이터 흐름 대역내 신호방식 서버는 수신된 데이터를 항상 조사 서버에서 클라이언트로의 데이터 흐름 대역외 신호방식 클라이언트는 긴급 모드 경우에만 수신된 데이터 조사 정보통신연구실

14 2.6 클라이언트 빠져 나오기 서버로 입력 데이터를 전송하지 않고 직접 클라이언트 Rlogin과 대화하기 원할 경우
첫 번째 문자로서 틸드(~)를 입력 함 클라이언트 종료 : ‘~.’ 클라이언트 종료 : ‘~Ctrl-D’ 작업 중지 : ‘~Ctrl-Z’ 작업 지연-중지 : ‘~Ctrl-Y’ 정보통신연구실

15 3. Rlogin 예 3.1 초기의 클라이언트-서버 프로토콜
PSH 1:2(1) ack 1 0의 1 바이트 1~4 :클라이언트는 4개 문자열 전송 ack 2 2 3 PSH 2:32(30) ack 1 (rstevens\0 rstevens\0 ibmpc3/9600\0) ack 32 4 5 : 서버는 0의 바이트로 응답 PSH 1:2(1) ack 32 0의 1바이트 5 6 ack 2 7 : 서버는 윈도우 크기 요청 PSH 2:3(1) ack 32, urg 3 (command 0x80: window size request) 7 8 PSH 32:44(12) ack 3 (window size information) 8 : 클라이언트 윈도우 크기 정보 전송 0xff,0xff,’s’,’s’,행/열의 수, 픽셀 수 ack 44 9 정보통신연구실

16 3.1 초기의 클라이언트-서버 프로토콜 (cont’d)
PSH 3:251(248) ack 44 (operating system greeting) 10 ack 251 11 PSH 251:296(45) ack 44 (operating system greeting) 12 13 ack 296 PSH 296:298(2) ack 44 (operating system greeting) 14 15 ack 298 PSH 298:333(35) ack 44 (operating system greeting) 16 17 ack 333 PSH 333:340(7) ack 44 (shell prompt) 18 18 : 서버는 셀 프롬프트 에코 (“svr4%”) ack 340 19 정보통신연구실

17 ... 3.2 클라이언트 인터럽트 키 데이터의 흐름이 중지되고 인터럽트 키를 입력할 때 TCP의 긴급 모드가 수행되는 예
서버에서 클라이언트까지 데이터 흐름 클라이언트 TCP 서버 ... Seq # : 22631 26726 02 Seq # : 26727 30145 긴급 포인트 클라이언트 측의 TCP에 의해 수신, 확인 응답된 Rlogin 클라이언트의 읽기를 기다라고 있는 데이터 서버측의 TCP에 의해 송신 대기하고 있는 Rlogin 서버에 의해서 쓰기를 한 데이터 4096-바이트 수신 버퍼 4096-바이트 송신 버퍼 정보통신연구실

18 3.2 클라이언트 인터럽트 키 (cont’d) 22631:23655(1024) ack 7, win 4096 1 0.0
(0.0160) (0.0163) (0.1657) (0.0040) (0.1959) (4.7060) (0.0938) 1~3 : 서버는 클라이언트에 가득 채워진 세그먼트를 전송 23655:24679(1024) ack 7, win 4096 2 24679:25703(1024) ack 7, win 4096 3 4 4 : 출력이 멈췄기 때문에 세그먼트4에서 ack를 1024의 윈도우를 통지 함 ack 25703, win 1024 PSH 25703:26378(675) ack 7, win 4096 5 : 가득 채워진 세그먼트가 아님 5 6 6 : ack는 4096-바이트 수신 버퍼에서 나머지 공간만을 통지 ack 26378, win 349 26378:26727(349) ack 7, win 4096 7 7 : 타이머가 끝날 때 349 바이트를 전송 8 8 : 클라이언트 출력이 여전히 멈춰 있기 때문에 ack는 0의 윈도우를 통지 ack 26727, win 0 정보통신연구실

19 3.2 클라이언트 인터럽트 키 (cont’d) PHS 7:8(1) ack 26727, win 0 (interrupt key)
(1.8691) (0.0137) (0.0009) (0.0013) (0.0023) (0.0048) (0.0041) (0.0019) (0.0047) (0.0023) (0.0061) (0.0890) (0.0015) (0.1985) 9 9 : 인터럽트 키 전송 26727:26728(1) ack 8, win 4096 urg 30147 10 10 : 폐쇄된 윈도우에 1 바이트 데이터, 긴급 모드 표시 전송 11 ack 26727, win 0 ack 8, win 4096 urg 30147 12 13 : 긴급 모드 통지 이후에 윈도우를 완전 개방 13 ack 26727, win 4096 26727:27751(1024) ack 8, win 4096 urg 30147 14 14~18 : 서버 버퍼에 저장 되어 있는 데이터 전송 27751:28775(1024) ack 8, win 4096 urg 30147 15 16 ack 28775, win 4096 28775:29799(1024) ack 8, win 4096 urg 30147 17 PHS 29799:30147(348) ack 8, win 4096 urg 30147 18 PHS 30147:30149(2) ack 8, win 4096 urg 30147 19 19 : ‘^?’ 에코 20 ack 30149, win 4096 PHS 30149:30157(8) ack 8, win 4096 21 : 쉘 프롬프트 에코 21 22 ack 30157, win 4096 정보통신연구실

20 4. Telnet 프로토콜 상이한 운영체제 호스트간의 원격 로그인 RFC 854 NVT ASCII Telnet 프로토콜 사양
서버와 클라이언트의 실제 터미널에 연결하는 가상 장치 NVT ASCII 인터넷 프로토콜 장비를 통해 사용되는 ASCII 문자의 변형으로 7-비트 미국판 데이터 바이트 RFC 856 : 8-비트 데이터 전송 정보통신연구실

21 4.1 Telnet 명령어 양방향에서 대역내 신호방식 사용 IAC(Interpret As Command) : 0xff
IAC가 선행하는 Telnet 명령어 정보통신연구실

22 4.2 옵션 협상 Telnet 연결 시 일어는 첫 번째 교환 대칭적 임 종류 WILL : 송신측이 옵션을 활성화하기를 원함
DO : 송신측은 수신측이 옵션을 활성화하도록 원함 WONT : 송신측이 옵션을 비활성화하기를 원함 DONT : 송신측은 수신측이 옵션을 비활성화 하도록 원함 정보통신연구실

23 4.2 옵션 협상 (cont’d) Telnet 옵션 협상의 6가지 시나리오 정보통신연구실

24 4.2 옵션 협상 (cont’d) 구성 (3-바이트) IAC + {WILL | DO | WONT | DONT } + 옵션 ID
정보통신연구실

25 4.3 서브 옵션 협상 터미널 종류 정보 RFC 1091 : 터미널 종류를 위한 서브 옵션 협상 정의
예) 서버가 터미널 종류 옵션을 활성하기 원함 <IAC, DO, 24> <IAC, SB, 24, 0, ‘I’, ‘B’, ‘M’, ‘P’, ‘C’, IAC, SE> 클라이언트 측 서버 측 <IAC, WILL, 24> <IAC, SB, 24, 1, IAC, SE> Suboption-Begin, “send your terminal type”, “my terminal type is”, Suboption-End 정보통신연구실

26 반이중 모드 문자단위 모드 디폴트 모드이지만, 오늘날 거의 사용 안함 디폴트 NVT는 반이중 장치임
4.4 운용 모드 (반이중, 문자단위) 반이중 모드 디폴트 모드이지만, 오늘날 거의 사용 안함 디폴트 NVT는 반이중 장치임 사용자 입력에 처리하기 전에 GA 명령 요구 입력 : NVT 키보드, 출력 : NVT 프린터 => 완성된 라인만 전송 문자단위 모드 한번에 한 문자씩 서버로 전송 (Rlogin과 유사) 지연 시간이 큼 대부분의 구현에서 디폴트로 사용 서버가 SUPPRESS GO AHEAD 옵션 활성 서버의 WILL 옵션 협상 또는 클라이언트의 DO 옵션 협상 서버가 ECHO 옵션 활성 정보통신연구실

27 라인단위 모드 라인모드 kludge 라인 모드 (RFC 858) 라인 단위로 서버로 전송 (Telnet)
4.4 운용 모드 (라인단위, 라인모드) 라인단위 모드 kludge 라인 모드 (RFC 858) 라인 단위로 서버로 전송 (Telnet) ECHO, SUPPRESS GO AHEAD 옵션을 비활성 라인모드 실질적인 라인모드 옵션으로 사용되는 용어 (RFC 1184) 클라이언트와 서버 사이의 옵션 협상 kludge 라인 모드 결함을 보완 정보통신연구실

28 여러 가지 Telnet 클라이언트와 서버간의 디폴트 운용 모드
4.4 운용 모드 (디폴트 운영 모드) 여러 가지 Telnet 클라이언트와 서버간의 디폴트 운용 모드 Sun OS 4.1.3 Solaris 2.3 SVR4 AIX 3.2.2 BSD/386 Solaris 2.2 4.4BSD 클라이언트 Char 서버 kludge linemode 정보통신연구실

29 4.5 동기 신호 & 클라이언트 빠져 나가기 동기 신호 클라이언트 빠져 나가기 DM은 긴급 데이터로 전송 시 동기 신호를 전송
DM (Data Mark) 일반적인 처리로 돌리기 위해 수신측에 전하는 데이터 스트림 내의 동기 표기 긴급 데이터의 마지막 바이트 클라이언트 빠져 나가기 클라이언트 탈피 문자 Ctrl - ] (‘^]’) 클라이언트에 프롬프트( “telnet>”) 출력 정보통신연구실

30 5. Telnet 예 5.1 문자단위 모드 (클라이언트:BSD/386, 서버:SVR4)
1 : 1. SENT DO SUPPRESS GO AHEAD 2. SENT WILL TERMINAL TYPE 3. SENT WILL NAWS 4. SENT WILL TSPEED 5. SENT WILL LFLOW 6. SENT WILL LINEMODE 7. SENT WILL ENVIRON 8. SENT DO STATUS PSH 1:25(24) ack 1, win 4096 [tos 0x10] 1 ack 25, win 4096 2 PSH 1:4(3) ack 25, win 4096 3 3 : 9. RCVD DO TERMINAL TYPE 4 ack 4, win 4096 [tos 0x10] 5 : 10. RCVD WILL SUPPRESS GO AHEAD 11. RCVD DONT NAWS 12. RCVD DONT TSPEED 13. RCVD DONT LFLOW 14. RCVD DONT LINEMODE 15. RCVD DONT ENVIRON 16. RCVD WONT STATUS 17. RCVD IAC SB TERMINAL-TYPE SEND PSH 4:31(27) ack 25, win 4096 5 PSH 25:37(12) ack 31, win 4096 [tos 0x10] 6 6 : 18. SENT IAC SB TERMINAL-TYPE IS “IBMPC3” ack 37, win 4096 7 정보통신연구실

31 5.1 문자단위 모드 (cont’d) PSH 31:84(53) ack 37, win 4096 8
8 : 19. RCVD WILL ECHO 21. RCVD DO ECHO \r\n\r\NUNIX(R) System V Release 4.0 (svr4) \r\n\r\0\r\n\r\0 8 PSH 37:43(6) ack 84, win 4096 [tos 0x10] 9 9 : 20. SENT DO ECHO 22. SENT WONT ECHO PSH 84:87(3) ack 43, win 4096 10 10 : 23. RCVD DONT ECHO 11 ack 87, win 4093 [tos 0x10] PSH 87:94(7) ack 43, win 4096 12 12 : ‘login: ’에코 ack 94, win 4096 [tos 0x10] 13 PSH 43:44(1) ack 94, win 4096 [tos 0x10] 14 14 : 입력 문자 ‘r’ PSH 94:95(1) ack 44, win 4096 15 15 : 입력 문자 ‘r’ 에코 16 ack 95, win 4096 [tos 0x10] 정보통신연구실

32 5.2 라인모드 (vangogh % date 명령의 패킷 교환)
P. 357, 그림 19.2의 Rlogin과 비교해 봤을 때, Telnet의 라인모드는 적은 수의 세그먼트를 사용함을 알 수 있다. 1 PSH 2:8(6) ack 11 (date\r\n) ack 8 2 PSH 11:41(30) ack 8 (Tue Jul 13 09:10:15 PDT 1993\r\n) 3 ack 41 4 PSH 41:51(10) ack 11 (vangogh % ) 5 6 ack 51 정보통신연구실

33 5.2 라인모드 (단일 문자 모드를 사용하는 응용 프로그램의 경우)
1. 서버는 완전한 라인을 만들지 않아도 된다는 라인모드의 서브 옵션과 함께 WILL ECHO를 클라이언트에게 전송 2. 클라이언트는 DO ECHO라고 응답하며 라인모드 서브 옵션을 인지 3. 입력된 문자는 서버로 전송 되고 필요한 경우 에코를 수행 4. 응용 프로그램 종료 시 서버는 완전한 라인을 만들라는 라인모드의 서브 옵션과 함께 WONT ECHO를 클라이언트 에게 전송 5. 클라이언트는 DONT ECHO라고 응답하며 라인모드 서브 정보통신연구실

34 5.3 kludge 라인모드 클라이언트가 실제의 라인모드를 지원하지 않는 경우
1. 서버는 DO TIMING MARK 옵션을 클라이언트로 전송 함 2. 클라이언트가 WILL TIMING MARK라고 응답 함 (kludge 라인 모드) 3. 서버는 WONT ECHO 옵션과 함께 WONT SUPPRESS GO AHEAD 옵션을 전송 함 4. 클라이언트가 DONT ECHO, DONT SUPPRESS GO AHEAD로 응답 함 5. 서버가 ‘login :’ 프롬프트를 보내고, login name을 입력하게 되면 login name은 완전한 라인의 형태로 서버에 보내지고, 클라이언트는 로컬로 에코 함 6. 서버가 WILL ECHO 옵션과 함께 “password :”를 전송 7. 암호를 입력하게 되면 완전한 라인의 형태로 서버로 전송 됨 8. 서버가 WONT ECHO를 전송하고, 클라이언트는 DONT ECHO로 응답 정보통신연구실

35 5.3 kludge 라인모드 (cont’d) kludge 라인모드 예 Svr 4% 클라이언트는 SUN이고 서버는 SVR4이다.
(에코하지 않는) telnet 클라이언트와 얘기하려 면 Control-]를 입력해야 한다. telnet> status 한번에 한문자 모드에서 쉽게 검증한다. Connected to svr4.tuc.noao.edu Operating in character-at-a-time mode. Escape character is ‘^]’. telnet> toggle options 옵션처리과정을 보자 Will show option processing. telnet> mode line 그리고 kludge 라인 모드로 바꾼다. SENT dont SUPPRESS GO AHEAD 클라이언트는 이 두 옵션을 보낸다. SENT dont ECHO RCVD wont SUPPRESS GO AHEAD 그리고 서버는 둘 모두에게 WONT로 답신한다. RCVD wont ECHO 정보통신연구실

36 5.3 kludge 라인모드 (cont’d) 문자단위 모드로 전환 (vi 편집기)
1. 서버는 WILL SUPPRESS GO AHEAD와 WILL ECHO 옵션을 전송 함 2. 클라이언트가 DO ECHO, DO SUPPRESS GO AHEAD로 응답 함 3. 응용 프로그램(vi 편집기)이 서버상에서 실행 됨 4. 응용 프로그램 종료 시 서버는 WONT ECHO, WONT SUPPRESS GO AHEAD 옵션을 전송 함 5. 클라이언트가 DONT ECHO, DONT SUPPRESS GO AHEAD로 응답 함 정보통신연구실

37 <IAC, IP, IAC, DO, TM>
5.4 라인모드 : 클라이언트 인터럽트 키 type interrupt 1 : IP 명령어는 Telnet의 동기신호를 사용하여 보내져야 한다. 1 PSH 6:11(5) ack 41 <IAC, IP, IAC, DO, TM> PSH 41:44(3) ack 11 <IAC, WILL, TM> 2 : DO Timing Mark 옵션에 대한 응답 2 PSH 44:45(1) ack 11 urg 45 <IAC> 3 3 : 동기 신호의 첫 바이트를 긴급 데이터로 전송 PSH 45:46(1) ack 11 <DM> 4 4 : Data Mark 명령 전송 ack 46 5 PSH 46:60(14) ack 11 \r\0\r\nvangogh % 6 6 : 쉘 프롬프트 에코 7 ack 60 정보통신연구실

38 6. 요약 Rlogin과 Telnet의 전체 비교 기능 Rlogin Telnet 트랜스포트 프로토콜 하나의 TCP 연결
긴급 모드를 이용 패킷 모드 항상 문자 단위, 원격 에코 공통으로 디폴트는 문자 단위, 원격 모드, 문자모드의 의사 라인 모드도 일반적으로 지원, 문자 모드의 실제 라인 모드의 새로운 옵션도 있다. 서버상의 응용이 필요하면 문자 단위 흐름 제어 보통 클라이언트가 실행, 서버에 의해 무효로 할 수 있다. 서버에 의해 무효로 할 수 있다. 보통 은 서버가 실행하지만 클라이 언트가 행하는 옵션도 있다 정보통신연구실

39 6. 요약 (cont’d) 기능 Rlogin Telnet 터미널 유형 항상 제공되고 있다. 옵션, 일반적으로 지원되고 있다.
자동 로그인 디폴트. 패스워드 입력이 요구되지만 이것은 평문 으로 보내진다. 새로운 옵션은 kerberos 로그인을 지원. 디폴트는 로그인 이름과 패스워드 입력. 패스워드는 평문으로 보내진 다. 새로운 옵션으로 인증 옵션이 제공되고 있다. 터미널 속도 옵션. 윈도우 크기 대부분 서버에 의해 지원 되는 옵션. 환경 변수 지원되지 않는다. 정보통신연구실


Download ppt "TCP/IP 네트워크 제 26 장 Telnet과 Rlogin 정보통신연구실."

Similar presentations


Ads by Google