트랜스포트 계층(TCP)

개요

◦ What is TCP

◦ What is UDP

◦ What is the difference between TCP and UDP


What is UDP

흔히 트랜스포트 계층에서 비연결형 프로토콜을 UDP라고 한다.

UDP(User Datagram Protocol)는 어플리케이션에 비연결형이고 캡슐화된 IP 데이터그램을 보낸다.

데이타그램이란 독립적인 관계를 가지는 패킷을 의미한다.

UDP는 단순한 프로토콜로써 클라이언트-서버 연동 및 멀티미디어 같은 일부 분야에서만 사용된다.



사진과 같이 UDP 헤더에는 목적지주소, 데이터순서, checksum과 실데이터만 포함되고, 확인응답 같은 것이 없기 때문에 TCP보다 용량이 가볍고 송신속도가 빠르다.

하지만 확인응답(ack message)을 하지 못하기때문에 신뢰도가 TCP보다 떨어지게 된다.

UDP는 체크섬을 이용하여 에러를 검사한다.




What is TCP

TCP(Transmission Control Protocol)은 신뢰성 있는 연결형 프로토콜이다.

TCP 서비스는 송신자와 수신자 모두가 소켓이라고 불리는 End Point를 생성함으로써 이루어진다.

각 소켓은 호스트의 IP 주소와 그 호스트에 국한된 16비트 숫자로 구성된 포트(소켓 번호)를 가진다.

아래의 표는 대표적인 포트들에 따른 프로토콜과 용도를 나타낸다.


Port Protocol Use
21 FTP File transfer
23 Telnet Remote login
25 SMTP E-mail
69 TFTP Trivial file transfer
79 Finger Lookup information about a user
80 HTTP World Wide Web
110 POP-3 Remote E-mail access
119 NNTP USENET news


ftp://000.000.000.000:21와 같이 사용하는 프로토콜과 IP 주소 그다음에 포트 번호를 적는다.

흔히들 사용하는 https://dq-qqq.github.io/와 같은 URL 주소를 생각하면 된다. 이경우는 www가 기본적으로 사용하는 80번의 포트 번호를 자동으로 생략한 경우이다.

모든 TCP 연결은 전이중(full-duplex), 점대점(point-to-point) 방식이다.

전이중이란 전송이 양방향으로 동시에 일어날 수 있음을 의미한다.

점대점이란 각 연결이 정확히 2개의 연결 end point를 가지고 있음을 의미한다. 따라서 멀티캐스팅이나 브로드캐스팅을 지원하지 않으며 유니캐스트 통신을 한다.

송수신 TCP 개체들은 세그먼트의 형태로서 데이터를 주고 받는다. 세그먼트 형태란 고정 20바이트 헤더 + 그 뒤의 데이터 바이트들을 의미한다.

모든 네트워크는 정해진 MTU(Maximum Transfer Unit)을 가지는데, 각 세그먼트는 이더넷의 페이로드 크기인 1500바이트를 넘길 수 없다.



TCP Header는 위의 사진과 같은 구조를 가진다.

우선 송신 포트와 목적지 포트의 정보가 담겨있다.

Sequence number와 Acknowledgement number는 흔히들 사용하는 기능을 수행한다.

TCP header length는 말 그대로 헤더 세그먼트의 길이를 알려준다. 옵션 필드의 길이는 가변적이기 때문에 명시해준다.

그다음에 사용하지 않는 4비트가 온다.

이제 여덟개의 1-비트 플래그들이 온다.

TCP 수신자가 네트워크로부터 혼잡 조짐을 받았을 때, TCP 송신자에게 전송속도를 낮추라는 ECN 신호를 ECE가 설정해서 보낸다.

CWR은 송신자가 전송 속도를 줄였으니 ECN 신호를 그만 보낼 것을 요청한다.

URG는 Urgent Pointer가 사용 중일 때 설정된다.

ACK는 Acknowledge number가 유효함을 나타낸다. 만약 0이라면 Acknowledge number필드는 무시된다.

PSH는 push된 데이터를 나타낸다.

RST은 불안정한 연결을 리셋하거나 잘못된 세그먼트를 기각할 때 사용된다.

SYN은 연결요청과 연결수락을 나타내기 위해 사용된다.

FIN은 송신자가 보낼 데이터가 더이상 없을 때 사용된다.

TCP에서 흐름 제어는 가변크기의 슬라이딩 윈도우를 사용하여 처리된다. Window Size는 확인응답된 바이트에서 얼마나 많은 바이트가 보내질 수 있는지를 나타낸다.

Checksum은 신뢰성을 높이기 위해 검사하는 부분이다.

Option은 기본 헤더로 할 수 없는 기능들을 추가하는 부분이다.




What is the difference between TCP and UDP

TCP UDP
Connection-oriented Protocal Connection-less Protocal
BYTE stream service Datagram service
혼잡제어, 흐름제어 지원 혼잡제어, 흐름제어 지원안함
신뢰성있는 연결 신뢰성 없는 연결
HTTP, SMTP등 DNS, Broadcasting, Live Streaming