본문 바로가기

Computer Science/네트워크

8. TCP 응용프로토콜(Telnet , FTP)

Telnet과 FTP에 대한 계층구조

tcp위에서 전송이 됩니다.

 

tcp - 프로세스에서 프로세스까지 전달합니다.

 

원격 접속, 파일 전송에 대해 살펴봅니다.

 

운영체제에 따른 단말로부터의 생성되는 제어 문자의 차이점

OS가 달라도 '키'에 따라 인식이 달랐습니다.

enter를 쓸 때 다른 캐릭터가 전달이 되었습니다.

 

텔넷 서버가 운영되는 os가 뭐냐에 따라서

받는 시스템이 받는 것에 대한 변환이 필요합니다.

이걸 해결하기 위해 터미널 애뮬레이터를 사용했습니다.

 

 

터미널 애뮬레이터를 이용한 단말 연결 방법

터미널 애뮬레이터를 거쳐서 목적지 os에 맞춰서 전달이 됩니다.

 

TELNET 접속화면의 예

id와 password를 통해서 접속을 합니다.

 

arami라는 유저는 200.0.1.1에서 왔습니다.

 

 

텔넷 클라이언트-서버 접속 환경

드라이버를 통해서 텔넷 클라이언트를 접속합니다.

 

텔넷은 tcp/ip를 통해서 텔넷 메시지가 전송이 됩니다.

 

텔넷 서버에서 수신된 내용을 가상 터미널 드라이버를 통해서 수신한 데이터터미널 드라이버에 넘겨서 화면에 넘겨줍니다.

 

협상이 끝나면 텔넷 원격 접속을 시작합니다.

 

  • "login" prompt는 서버에서 온 문자입니다.
  • 서버에 키보드로 입력된 것을 서버에 줍니다.
  • 우리가 입력한 게 바로 출력되는 게 아니라 서버에 거치고 우리 화면에 출력되는 것입니다.

왜 이렇게 에코 모드를 한번 서버에 거치고 적용할까요?

예전에 네트워크가 전달되는 확률이 높지 않았기 때문에 서버에 확인을 받아보고 출력한 것입니다.

 

NVT 절차의 필요성

텔넷에서 기본적으로 Os마다 에뮬레이터 프로그램이 필요했습니다.

그것은 "NVT"라고 말했습니다.


enter를 치면 os마다 다 다르게 전달됩니다.

 

우리 텔넷에서 네트워크로 보낼 때 무조건 CR과 LF둘다 보내자 라고 약속을 한 것입니다.

 

 

Echo의 종류

3가지 모드가 있습니다.

 

a) remote echo만 활성화된 경우

  • A를 입력하면 a를 서버에 전달하고 a가 다시 돌아와서 화면에 출력이 됩니다.

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

  • a가 전달이 될 때 a가 화면에 출력이 한번 되고 서버에 갔다가 와서 다시 한번 출력이 됩니다.

c) local echo 활성화된 경우

  • 전달만 되고 수신은 안됩니다.

 

텔넷용 옵션들

tcp, login 수행 과정 전에 협상과정이 있었습니다.

협상하는 내용입니다.

 

 

옵션 협상 명령에 대한 6 가지의 가능한 시나리오

협상할 때 옵션은 "무엇을"에 해당되는 내용입니다.

 

동사를 붙여서 "~~ 하라, ~~ 해라"라는 것을 공지할 수 있습니다.

 

will을 보내면 공지를 보냅니다.

do가 오면 해도 돼, dont가 오면 하지 마!

 

do를 보내면 허락을 구합니다.

will-> 해라

wont -> 하지마!

...

 

NVT문자 조합 형식 

IAC - 커맨드 내용을 해석한다, 커맨드에 대한 내용을 메시지가 시작하고 있어 라고 처음을 알려줍니다.

뒤에다가 공지를 붙입니다.

 

 

옵션 교환의 예 : “terminal type"

처음에 tcp 연결을 합니다.

login 하기 전에

 

IAC로 시작하는 메시들이 오고 가면서 이야기합니다.

 

  • 24번을 보내면서 -> 터미널 타입을 알려주겠다.
  • do -> 수학
  • 실제로 터미널 타입을 알려줘야 합니다.

 

sub option begin

sub option end 

서브 옵션의 시작과 끝을 알립니다.

 

  • 터미널 1번을 보낸 것은 -> 너의 terminal type을 보내라고 명령합니다.
  • 그래서 클라이언트는 sb, se사이에 0번을 넣어서 내 treminal type을 알려줍니다.

 

Telnet 동작 모드

  • 기본 모드 - 서버에서 허락을 해야만 내용을 보낼 수 있습니다.
  • 문자 모드 - 기본 동작 모드입니다.
  • 라인 모드 - 캐릭터마다 전송하는 것이 아닌 라인마다 전송할 수 있게 합니다.

 

기본 모드의 동작

클라이언트의 버퍼에 쌓이고

local echo(화면에 그대로 보여주는 것)는 됩니다.

 

서버에서 go ahead 메시지를 받으면 버퍼의 내용을 보냅니다.

 

 

문자 모드와 라인 모드

문자 모드에서 

  • go ahead 없어도 전송을 합니다.

 

라인 모드는 "나 라인 모드 할래"라고 선언합니다.

  • "나 remote echo 안 할 거야"라고 선언합니다.
  • enter처서 한 라인이 형성되는 순간 서버에 보냅니다.
  • 서버에서 다시 라인을 보내주지는 않습니다.

 

[실습 1] Telnet에 패킷 분석

텔넷 터미널 창에서 연결해봅니다.

 

telnet 협상과정의 패킷을 봅시다.(wireshark로)

로그인 후 exit 패킷을 봅시다(wireshark로)

 

telnet 클라이언트 프로그램에 

telnet 그냥 쓰면 여러 가지 설정을 할 수 있습니다.

toggle options을 해놓고 wireshark를 봐야 합니다.

(윈도에서는 지원이 안됩니다.)

 

 

FTP의 동작 예

옛날에 파일을 전송하고 저장할 때 FTP를 많이 썼습니다.

21번 포트를 씁니다.

 

ftp는 특별하게 2개의 세션을 맺습니다.

  • 하나는 control connection이라고 해서 커맨드가 전송이 됩니다.
  • 파일이 전송되는 data connection 이 있습니다.

옛날에는 통신이 느렸기 때문에 빠르게 컨트롤 메시지가 전송될 수 있도록 한 것입니다.

 

우리가 알고 있는 ftp 21번 포트는 듣고 있는 포트입니다. 그러면 컨트롤 커넥션이 만들어지겠죠

컨트롤 커넥션으로 클라이언트에서 어떤 포트를 열어놓고 있는지를 알려줍니다.

 

클라이언트가 1174번 포트를 열고 기다리겠다고 합니다.

이렇게 data가 오고 가는 길로 씁니다.

 

 

FTP의 연결과정

클라이언트는 "내가 몇 번 포트 열고 기다릴게"를 알려주는 메시지를 전달해야 합니다.

그게 port라는 메시지이고 ip2개의 숫자를 보내주는데

첫 번째 숫자256을 곱하고 두 번째 숫자를 더합니다.

그게 클라이언트가 열어놓은 포트 번호입니다.

 

즉, 256으로 나눈 몫과 나머지를 보내는 것입니다.

 

왜 이렇게 나눠서 보낼까요?

1byte가 표현할 수 있는 큰 수는 255까지 입니다.
각 바이트에 숫자를 담아서 보내려고입니다.
포트번호는 2byte까지 쓸 수 있습니다.
10진수로 2byte로 나눠서 표현하고 싶어서입니다.

 

FTP 제어 문자의 전송 예

FTP도 보내는 os마다 다른 메시지를 보내야 할 때가 있습니다.

변환해주는 프로그램이 필요합니다.

 

"LIST"라는 메시지를 윈도면 dir를 수행

리눅스면 ls를 수행하도록 합니다.

 

일반적인 FTP 명령어

여러 가지 명령어가 있습니다.

n1~4는 ip 주소이고

n5,6은 포트번호입니다.

 

 

728x90

'Computer Science > 네트워크' 카테고리의 다른 글

ACL (Access ControlList)  (0) 2021.12.01
9. UDP 응용프로토콜(TFTP, DHCP)  (0) 2021.11.25
스위칭 2  (0) 2021.10.30
VPN이란 무엇인가?  (0) 2021.08.21
[네트워크] 이더넷과 LAN 프로토콜  (0) 2021.04.26