전송계층을 대표하는 프로토콜은 UDP와 TCP다. TCP의 역할이 UDP에 비해 현저히 많기 때문에 포스팅을 두개로 나눌까 고민했지만 둘은 뗄래야 뗄 수 없는 사이인 것 같아 한번에 하기로 했다.
1. UDP[User Datagram Protocol]
UDP의 모토는 '최소한의 기능으로 동작하자'다. 따라서 복잡한 과정은 일체없이 가벼운 임무만을 수행한다. 연결없다. 신뢰도 없으며 데이터 순서로 올바르지 않다. 그러면 왜 사용할까? 이것 저것 없이 전송만 하기 때문에 속도가 굉장히 빠르다.
- 비 연결형 프로토콜
- 신뢰할 수 없다. [데이터가 전송되었는지 보장X. 데이터의 순서가 올바른지 보장X]
- 속도가 빠르기 때문에 신속성이 중요한 서비스에 유리하다.
- UDP를 이용하는 서비스: DNS, SNMP, TFTP, 스트리밍 서비스
본래 동영상이라는 것은 여러 장의 사진을 이어붙인 것이다. 따라서 한 픽셀 픽셀이 다 소중하고 중요한 것이 아니라 픽셀 몇개는 손실되더라도 빠른 속도로 많은 사진을 가져오는 것이 더 중요하다. 따라서 스트리밍 서비스(=동영상)에는 UDP가 적합하다
1.2. UDP의 패킷 구조
UDP의 헤더에는 오직 포트번호와 길이 체크섬만 붙는다. 따라서 이는 총 8Byte밖에 되지 않는다.
2. TCP [Transport Connection Protocol]
TCP는 신뢰를 중요시 여기는 프로토콜이다. 따라서 데이터를 전송하였을 때, 해당 데이터가 제대로 전송되었는지를 보장한다. 만약 데이터가 절대 도달할 수 없는 상황이라면, 데이터가 도달하지 못했다는 사실을 알린다. (반면에 UDP는 도착했는지 안도착했는지 알림 자체가 X)
- 연결형 프로토콜
- 높은 신뢰성
- 데이터 전송 및 순서 보장
- 혼잡 제어
- 흐름 제어
2.1. TCP 패킷 구조
8Byte였던 UDP와는 다르게 TCP 헤더는 20Byte다. 필드와 각각의 역할에 대해 살펴보자.
필드명 | 크기(Bit) | 역할 |
[Source Port | Destination] Port | 16 | 포트 번호 |
Sequence number | 32 | 송신[Send] 데이터의 순서 번호 |
ACK number | 32 | 데이터 전송을 보장하기 위한 필드. Sequence number에 대한 응답 값 |
Header Length | 4 | TCP 헤더의 전체 길이 |
not used | 3~6 | 미래 통신을 위해 남겨놓은 필드 |
URG(Urgent) | 1 | Urgent pointer 값의 유효성을 나타낸다. |
ACK(Acknowledgement) | 1 | Acknowledgement 값의 유효성을 나타낸다. |
PSH(Push) | 1 | 버퍼링된 데이터를 상위 계층에 즉시 전달할 것을 요청한다. |
RST(Reset) | 1 | 연결을 초기화한다. |
SYN(Synchronize) | 1 | 동기화를 위한 번호다. 양측 최초 패킷에만 값이 부여된다. |
FIN(Finish) | 1 | 전송을 마친다. |
Window size | 16 | 송수신자와의 흐름제어를 위해 사용된다. 수신자가 수용 가능한 버퍼 크기 |
Check sum | 16 | 오류를 체크하기 위한 필드영역이다. (가상헤더+실제헤더+데이터+패딩) |
Urgent Pointer | 16 | URG에 값이 있을 때 요청한 부분까지 긴급한 데이터 처리를 위해 마지막 바이트에 대한 일련번호를 갖는다. |
Options | 0~320 | 다양한 TCP 옵션을 사용할 때 추가적으로 사용한다. |
'전공 > 네트워크' 카테고리의 다른 글
전송 계층 - TCP 의 모든 것 #2. 흐름제어, ARQ, Sliding Window (0) | 2020.12.19 |
---|---|
전송 계층 - TCP 의 모든 것 (#1. 핸드세이킹, 혼잡제어) (0) | 2020.10.29 |
전송 계층 - 전송 계층 개요 #1. 다중화, 포트, 소켓 (0) | 2020.10.29 |
네트워크 계층 - DHCP [Dynamic Host Configuration Protocol] (0) | 2020.10.29 |
네트워크 계층 - NAT[Network Address Translation] (0) | 2020.10.28 |