IT/통신프로토콜 실습&연습문제

통신프로토콜 Telnet 과 ftp(1)

뚱늉 2016. 12. 22. 06:58

▶ Telnet

 

① local login

 

- 자신의 단말에 로그인 하는 방식으로 키보드로 입력을 하면 모니터에 자신이 입력한 명령어 등이 출력이 된다.

 

② remote login

 

- 자신의 단말이 속해 있는 네트워크 상에 존재하는 다른 단말에 접속하는 방법으로 자신의 키보드로 명령어 등을 입력하면 접속한 다른 단말에서 명령어 등을 처리 한 후 자신의 모니터에 출력이 된다.

 

- 만약 os가 다른 단말끼리 연결을 할 경우 같은 기능을 하는 명령어가 다를 수 도 있다. 따라서 다른 명령어가 같은 기능을 하기 위해서 telnet client와 telnet server가 속해 있는 단말의 os를 판단하여 명령어를 번역하여 같은 기능을 하게 한다.

 

- 명령을 받은 단말은 자신의 터미널 드라이버에서 명령을 수행 하는 것이 아니라 가상 터미널 드라이버에서 명령을 수행하고 자신이 가지고 있는 터미널 드라이버는 명령에 대해서 아무 관여를 하지 않는다.

 

 

- 위 그림은 네트 워크 상에 있는 단말에 접속을 하여 명령어 등을 수행하는 과정을 그림으로 나타낸 것이다.

 

- client가 a라고 입력을 하면 a는 tcp를 통해서 server로 전송이 되고 전송이 된 a는 server측에있는 가상 터미널 드라이버에서 수행을 한 후 수행 결과가 tcp를 통해서 client로 도착을 하게 된다. 명령어 수행 과정에서 server측에 있는 터미널 드라이버는 아무 관여를 하지 않는다.

 

NVT:Network Virtual Terminal

 

- 위 그림은 Network Virtual Terminal의 동작 과정을 그림으로 나타낸 것이다.

- client가 명령어를 입력하면 telnet client는 명령어에 맞는 다른 코드로 변환하여 server로 전송이 된다. 그럼 server는 받은 코드를 자신의 os에 맞는 명령어로 바꾸어 명령어를 수행하게 된다.

 

- NVT에는 data와, control 2가지의 명령어가 존재한다.

- data는 아스키 코드로 os가 다르더라도 client와 server가 data명령어를 변환하지 않는다.

- control은 enter와 backspace등과 같이 제어를 하는 명령어이다. 이 명령어는 os에 따라 다르기 때문에 client와 server가 공통된 코드로 변환하여 자신의 os에 맞게 명령어로 변환한다.그리고 option의 시작은 IAC로 알린다.

 

③ telnet option

⒜ remote echo만 활성화된 경우

 

- 이 경우는 client가 명령어를 입력하면 server로 들어가게 된다. 그 후, enter를 입력하면 client에 있는 모니터로 출력이 된다.

 

⒝ local echo와 remote echo가 모두 활성화된 경우

 

- 이 경우는 client가 명령어를 입력하면 local echo에 의해서 자신의 모니터에 출력이 된다. 그 후, enter를 입력하면 server로 들어간 명령어가 다시 자신의 모니터에 출력이 된다. 따라서 이 경우는 자신이 입력한 명령어가 2번 보여지게 된다.

 

⒞ local echo만 활성화된 경우

- 이 경우는 client가 명령어를 입력하면 자신의 모니터에 입력한 모니터가 출력이 된다. 그 후, enter를 입력하여도 server로 간 명령어가 자신의 모니터에는 출력이 되지 않는다.

→ echo를 활성화 하는 이유는 자신이 입력한 명령어가 server에 제대로 도착하였는지 확인하기 위해서 활성화를 한다.

 

④ telnet option 협상 과정

 

- 위 그림은 telnet option 협상과정을 나타낸 그림이다.

 

- 처음 TCP 연결을 한 후, 클라이언트는 24에 대한 옵션의 사용을 원한다고 서버에 알려준다.

 

- message를 받은 서버는 24사에 대한 옵션을 사용해라 라고 클라이언트에게 알려준다.

- 그 후, 서버는 24에 대한 서브 옵션을 알려달라고 클라이언트에게 message를 보낸다.

- 그럼 클라이언트는 24에 대한 옵션을 알려준다.

 

→ option 협상 과정에서 만약 24에 대한 옵션을 사용하기를 원한다고 message를 보냈는데 서버가 ‘안된다.‘ 라고 하면 24에 대한 option협상은 하지 않는다. 이 때 클라이언트는 24에 대한 옵션을 계속해서 요청하지 않는다.

 

 

 option 협상과정에서 필요한 코드

 

- IAC는 control의 시작을 알린다.

- IAC+WILL+option은 option의 사용을 원한다는 것을 알릴 때 사용한다.

- IAC+WON’T+option은 option의 사용을 원하지 않는 것을 알릴 때 사용한다.

- IAC+DO+option은 IAC+WILL을 통해서 온 option에 대한 것을 사용하라 라는 것을 알릴 때 사용한다.

- IAC+DON’T+option은 IAC+WILL을 통해서 온 option에 대한 것을 사용하지 마라는 것을 알릴 때 사용한다.

- IAC+SB and SE는 option에 대한 서브 옵션의 시작과 끝을 알릴 때 사용한다.

 

⑤ 동작모드

⒜ 기본 모드

 

- telnet의 기본 동작모드는 server측에서 Go Ahead라는 message를 받으면 client에서 이때까지 입력 한 명령어들이 server측으로 전송이 된다. 이 동작모드는 server측에서 Go Ahead message를 전송 했을 경우에만 client에서 server로 명령어들이 전송이 되므로 비 효율적이다.

 

⒝ 문자 모드, ⒞ 라인 모드

 

- 문자 모드는 client에서 입력을 하면 입력한 문자 하나 하나씩 server로 전송 되어 각 문자에 대한 ack가 발생하는 방식이다. 위 그림에서 보면 Do Suppress Go Ahead를 통해서 client가 server에게 Go Ahead없이 전송한다는 것을 요청하면 server가 그에 대해 응답을 하는데 위 그림에서는 Will을 통해서 그렇게 해라라고 알려준다. 그리고 client는 WONT Echo를 server로 전송하여 loack echo는 사용안한다는 것을 알려 준 후 데이터를 입력하는 것을 알 수 있다.

 

- 라인 모드는 문자 모드와는 다르게 명령어를 입력하고 enter를 치면 enter를 치기 전까지 입력한 모든 것이 한번에 server로 전송되는 방식이다. 위 그림에서 보면 client가 WILL Linemode를 server에게 전송하여 라인 모드로 전송 할 것을 알린다. 그 후,  DONT Echo를 server에게 알려 remote echo는 안 할 것이다 라고 알려준다. 그 후, client는 명령을 입력하고 enter를 치면 입력한 명령어 모두 server에게 전송이 되는 것을 알 수 있다.

 

 - 문자모드의 동작과정은 client가 문자 하나 하나 입력할 때마다 server에게 전송이 되고 server측에 있는 가상 터미널에서 처리 한 후 remote echo가 발생하고 그 remote echo가 다시 client에게 전송이 된다.

 

 

- 라인 모드의 동작 과정은 client가 date를 입력한 후 enter를 치면 date모두 server에게 전송이 되어 server측에서 명령어에 대한 결과를 한번에 client에게 전송이 되는 것을 알 수 있다. time도 똑같은 동작을 보여 준다.

 

▶ FTP(File Transfer Protocol)

① FTP

 

- ftp는 telnet과 마찬가지로 TCP연결을 통해서 접속을 한다. ftp는 telnet과는 다르게 ftp server로부터 데이터를 받아 올 수도 있고 ftp server에게 데이터를 업로드 할 수도 있다. 하지만 telnet은 telnet server에게 명령어를 입력하고 그에 대한 결과를 확인 밖에 못한다.

 

- ftp 연결에는 control connection과 data connection이 존재한다.

 

⒜ control connection은 ftp연결과 종료를 담당하는 connection이다. 명령어는 control connection을 통해서 명령어를 ftp 서버에게 전송을 한다. 그리고 연결이 되는 것은 ftp 연결을 할 때 하고 종료는 ftp 연결을 종료 할 때 된다.

 

⒝ data connection은 ftp client로부터 받은 명령어를 통해서 data를 주고 받는 것을 담당하는 connection이다. data connection은 data를 주고 받을 때 마다 연결이 되고 종료가 된다. 즉, control connection은 ftp 연결과 종료 할 때 한번 만 하지만 data connection은 ftp연결이 된 후 data를 주고 받을 때 마다 연결이 되었다 끈어졌다 한다. 그렇기 때문에 data connection의 연결과 연결 종료는 여러번 일어날 수도 있다. 그리고 data connection의 종류는 2가지로 Active FTP와 Passive FTP가 존재한다.

 

⒝-㈀ Active FTP

- Active FTP는 Server가 Client에게 data connection을 먼저 연결을 하는 것이다. 이 방법을 사용할 때에는 client가 자신이 사용할 data connection에 대한 port number를 server에게 알려 주면 server는 data connection을 연결 할 때 source port는 well known port번호를 사용하고 destination port는 client가 알려준 port번호를 입력하여 data connection을 연결한다. Active FTP에는 큰 문제점이 있다. 만약 공유기를 사용하는 client일 때 server가 client가 알려준 port번호로 접속을 하려고 할 때 client가 가지고 있는 공유기에서 port번호를 변경하기 때문에 Active FTP의 접속이 제한이 된다. 이 문제를 해결하기 위해 Passive FTP방법이다.

 

⒝-㈁ Passive FTP

- Active FTP는 Server가 Client에게 data connection을 먼저 연결을 하는 것이다. 이 방법을 사용할 때에는 client가 자신이 사용할 data connection에 대한 port number를 server에게 알려 주면 server는 data connection을 연결 할 때 source port는 well known port번호를 사용하고 destination port는 client가 알려준 port번호를 입력하여 data connection을 연결한다. Active FTP에는 큰 문제점이 있다. 만약 공유기를 사용하는 client일 때 server가 client가 알려준 port번호로 접속을 하려고 할 때 client가 가지고 있는 공유기에서 port번호를 변경하기 때문에 Active FTP의 접속이 제한이 된다. 이 문제를 해결하기 위해 Passive FTP방법이다.

 

⒝-㈁ Passive FTP

 

- Passive FTP는 Active FTP를 보완을 위해 만들어 졌다. 이 Passive FTP는 client가 server에게 data connection을 하는 방법으로 client가 server에게 PASV로 passive FTP를 사용하겠다라고 알리면 server는 자신이 사용하려고 하는 data connection port를 알려준다. 그럼 client는 server가 알려준 port번호로 data connection을 한다. 이 때, Active FTP에서 사용하였던 server port인 20을 사용하지 않고 임의의 port번호를 사용하게 된다. 그렇기에 Passive FTP는 client server 양쪽 다 임의의 포트 번호를 사용하게 된다.

 

② FTP control 문자의 전송

 

- FTP에서의 control 문자 전송도 telnet의 control 문자 전송과 같다. os가 다를 수 있기 때문에 각 os에서 사용하는 명령어에 대해 공통의 코드로 바꿔 전송을 하고 전송 받으면 해당 os에 대한 명령어로 바꾸어 실행한다. 즉, client는 자신의 os에서 받은 명령어를 공통의 코드로 바꾼다음 server에게 전송을 하고 server는 받은 코드를 자신의 os에 맞게 명령어로 변경하여 처리한다

 

③ FTP commands

ABOR :명령, data전송중지(ctl+C)

LIST : dir, ls

PASS : password

PORT :PORT a1, a2, a3, a4, b1, b2

a1~a4는 IP address, b1* 256 + b2 는 port number

TYPE : ASCⅡ or binary

RETR : retrieve (get) 이며 download

STOR : store ( put, set) 이며 upload

PASV : passive mode

 

④ data connection의 연결종료

 

- data connection의 연결종료 되는 경우는 2가지가 있다. 하나는 data의 전송이 모두 완료 되었을 때 data connection이 종료 되고 또 한가지는 client가 Ctrl + C를 입력하여 data connection의 연결을 종료하라고 하면 server는 data를 전송도중 data connection의 연결을 종료 하게 된다.