[Network] Transport Layer : UDP
전송 계층 (Transport Layer)
- 프로토콜 : TCP (Transmission Control Protocol), UDP (User Datagram Protocol)
- 양 끝 노드의 프로세스-프로세스간의 논리적 통신 제공, 네트워크 계층에서 설정한 경로로 하나의 프로세스에서 다른 프로세스로 전송한다. 효율적 데이터 전송, 데이터의 신뢰성 검사
- Network layer은 호스트 간의 통신 및 문제 해결, Transport layer은 프로세스 간의 통신 및 문제 해결
Segment
Transport Layer에서의 데이터 단위, 메시지의 조각
왼쪽에서 TCP data가 가질 수 있는 최대 byte = 1460byte
- 총 1500 byte 중, TCP header, IP Header가 20byte씩 차지
Segment size = 1480byte.
Max Segment Size = 1460byte
위 두 단어는 뜻과 계산이 일치하지 않아 보인다. 즉 용어의 문제이다. 용어를 정할 때 이렇게 계산하기로 합의된 사항이다.
- 발신자 : 데이터를 세그먼트(Segment)로 분할하고, 각 세그먼트에 대한 헤더를 추가하여 목적지까지 전송한다. 넘버링을 해준다(순서가 바뀜을 방지한다)
- 수신자 : 모든 세그먼트가 다 도착 할 때까지 기다리며, 받은 세그먼트를 다시 합치고, 데이터의 무결성을 확인하여 손상된 세그먼트를 복구한다.
UDP(Connection-less Transport Layer Protocol)
1. 실시간 데이터에 탁월 : 동영상 스트리밍
2. 오류에 둔감 : 에러나도 재전송 안함, 에러는 감수해야 한다. Acknowledge 필요 없음. 동영상과 같은 일부가 에러여도 영향 적게 받는 데이터를 전송할 때 사용
3. 데이터 순서를 무시 : Segment들이 순서 없이 독립적으로 처리된다.
4. 오버헤드가 작다 : (Data의 양/ 시간)이 TCP에 비해 빠르다.
5. 도착시간(Delay)을 보장해 주지 않는다. Bandwidth(단위시간당 받는 서비스의 양)도 보장되지 않는다.
6. Segment가 Lost될 수 있다 : 오류에 둔감하고 속도에 민감한 Application에 주로 사용
구조
Checksum : 에러를 검사. 리던던시를 추가해서 오류 검출.
Length : UDP header의 byte + 데이터의 byte.
Port number : ARP를 통해 얻은 IP address 외에 웹서버 프로세스의 고유 Identity(Port Number)을 알아야 한다.
UDP vs TCP
UDP가 Connectionless임에 반해 TCP는 Connection-Oriented, 즉 통신을 시작하기 전에 논리적인 연결을 설정한다. 이와 동시에 데이터를 전송할 때, 오류 검출 및 복구 메커니즘이 있다. 따라서 TCP는 신뢰성 전송이 필요한 애플리케이션, 즉 웹 브라우저, 이메일, 파일 전송 등에서 사용되며, UDP는 실시간 통신이나 속도가 중요한 게임, 동영상 스트리밍 서비스 등에서 사용된다.
https://sjh9708.tistory.com/193
Wireshark로 살펴보는 UDP
UDP 패킷 중 하나를 선택하였다.
패킷 Encapsulation 구조 분석
다음은 UDP 헤더에 해당한다. 필드의 수는 총 4개를 확인할 수 있었고 송신지와 수신지가 명시되어 있고 Length와 오류 검출을 위한 Checksum이 있다.
헤더들 뒤에는 287바이트의 Data가 있었다.
UDP 헤더의 Length 필드의 값의 의미는 캡슐화된 UDP Header의 길이(바이트)와 데이터 필드의 길이(바이트)의 합을 byte로 표시한 것을 의미한다.
따라서 8byte + 287byte=295byte로 Length의 값은 295이다
전체 Encapsulation 구조
프로토콜 번호
UDP의 Protocol number은 17이고 밑의 Packet Bytes Window를 참고하여 Hexadecimal(16진수)로 11임을 알 수 있었다.
질의와 응답 패킷
첫번째 UDP 패킷의 Destination Port는 59164이고 두번째 UDP 패킷의 Source Port는 59164이다.
따라서 첫번째 패킷이 Port 59164로 질의하는 패킷임을 확인할 수 있으며 두번째 패킷의 Source Port가 59164이므로 첫번째 패킷에 대한 응답 패킷임을 확인할 수 있다.
References
Data Communications and Networks, 4th Edition, Forouzan, McGraw-Hill
'CS > 운영체제 & 네트워크' 카테고리의 다른 글
[Network] TCP (2) : TCP Flow Control, Congestion Control (흐름 제어와 혼잡 제어) (3) | 2024.03.05 |
---|---|
[Network] TCP (1) : Connection과 Handshake, 그리고 TCP Error Control (0) | 2024.03.04 |
[Network] NAT : 공인 IP와 사설 IP (+ 포트 포워딩 설정) (0) | 2024.02.24 |
[Network] Network Layer : IP & DHCP & ICMP (0) | 2024.02.23 |
[Network] 네트워크 주소 체계(Port, MAC, IP Address)와 DNS (0) | 2024.02.23 |