티스토리 뷰

  TCP와 UDP에 대해 미처 다루지 못한 부분을 간단하게 짚고 넘어가도록 하자.

 

 

1. 3-Way Handshake(TCP의 연결설정)와 4-Way Handshake(TCP의 연결종료)

  Transport층에서 사용되는 TCP는 아래와 같이 3단계 핸드쉐이크 과정을 거쳐 연결을 맺고, 데이터 전송이 끝나면 4단계 핸드쉐이크 과정을 통해 연결을 끊는다. 연결의 설정과 종료에서 단계가 차이나는 이유는 A가 데이터 전송을 마쳤다고 하더라도 B는 아직 보낼 데이터가 남아있을 수 있기 때문에 일단 FIN에 대한 ACK만 먼저 보내고, 데이터를 모두 전송한 후에 자신도 FIN 메세지를 보내기 때문이다.

 

[그림1. 3-Way Handshake 과정]

 

[그림2. 4-Way Handshake 과정]

 

 

2. UDP 프로토콜의 대표적인 서비스인 TFTP(Trivial File Transfer Protocol, 포트번호: 69)에 대하여..

  TCP와 달리 UDP는 상대가 있든 없든 데이터를 보내는 Connection-less형이고, TCP는 상대가 있어야지만 데이터를 보내므로 "IP"라는 비연결형 네트워크 상에서도 "TCP/IP"를 통해 신뢰성 높은 통신이 가능하다. (앞서 IP는 패킷이 상대방에 도달하지 않더라도 재전송하지 않으므로 신뢰성 없는 패킷교환 프로토콜이라고 이야기했다.) 반면, UDP는 복잡한 제어없이 Application에서 요청이 있으면 원하는 타이밍에 데이터를 보낸다. 따라서 User(프로그래머)가 모든 것을 고려하여 Application을 프로그래밍 해야한다. (그래서 User Datagram Protocol이다.)

  본론으로 들어가자면 FTP(File Transfer Protocol, 포트번호: 21*)는 TCP에서 사용되는 파일전송 프로토콜이다. 서버와 클라이언트를 이루어 동작한다. TFTP는 UDP에서 사용되는 간단한 파일전송 프로토콜인데 Read, Write 기능만 제공하고 파일이나 디렉토리를 List, Delete, Rename 하는 기능과 User Authentication은 없다. 에러 및 흐름제어 방식으로는 Stop&Wait 방식을 사용한다.

  * 제어정보 전달은 포트번호 21번, 데이터 전달은 포트번호 20번이다.

 

 

3. 소켓이란?

  소켓(Socket)은 TCP/IP를 이용하는 API로 소프트웨어로 작성된 통신의 접속점이다. 다음 그림과 같이 Application은 소켓을 통해 Network과 패킷을 주고 받을 수 있다.

 

[그림3. 소켓번호, 포트번호, IP주소]

 

  * 참고로 UDP와 TCP는 포트번호를 각각 처리하기 때문에 같은 포트번호를 사용해도 무방하다. 또한 같은 모듈(UDP or TCP) 내에서도 클라이언트 프로그램에서 동시에 여러 커넥션을 확립한 경우에는 서로 다른 포트번호를 동적으로 할당한다. (동적할당에 사용되는 포트번호는 49,152~65,535이다.)

 

 

 

  이번 시간에는 시험에서 헷깔릴만한 몇가지 개념을 그리 깊지는 않게 다루어보았다. (넘넘 귀찮아서 ㅠㅠ) 담주부터는 진짜로 진짜로 열공을 하겠다.   끝.



[지난 글 보기]

[TCP/IP] 1. 네트워크 접근 계층, 그리고 데이터링크층과 MTU

[TCP/IP] 2. 가장 널리 보급된 데이터링크인 이더넷, 1000BASE-T의 의미는?

[TCP/IP] 3. 인터넷 계층의 모든 것(1): IP프로토콜, IP패킷, IP헤더의 구조

[TCP/IP] 4. 인터넷 계층의 모든 것(2): IP주소, CIDR/VLSM, NAT

[TCP/IP] 5. TCP/UDP 개념알기: TCP헤더, UDP헤더, 포트번호

댓글