Contents
- Transport layer
- TCP / UDP
Transport layer
송신자와 수신자를 연결하는 통신 서비스를 제공하며 연결 지향 데이터 스트림 지원, 신뢰성, 흐름 제어를 제공함.
UDP
-
비연결성
: 연결을 설정하지 않고(no handshaking) 데이터를 전송, 각 패킷은 독립적으로 처리되며, 패킷 간의 순서는 보장되지 않음
-
신뢰성 없음
: 데이터 전송에 대한 확인응답을 제공하지 않음
-
속도 빠름
: 비연결성이므로 속도가 빠름
-
'데이터그램 패킷 교환 방식'사용
: 패킷이 독립적으로 이동하며 최적의 경로를 선택하는데, 도착한 순서가 다를 수 있는 방식
-
신속한 전송이 필요하거나, 데이터의 손실이 큰 문제가 되지 않는 스트리밍 서비스, DNS, SNMP, DHCP 등에서 사용됨
TCP
- 연결 지향성
: 연결시 3-way-handshake 과정을 거치고, 연결 해제시 4-way-handshake과정을 거침
- 신뢰성
: 데이터 전송에 대한 확인응답을 제공하여 신뢰성 있는 전송을 보장
- 패킷 순서 보장
: connection 맺을시 Sequence number를 보냄 / 정상적으로 수신한 데이터를 알리기 위해 ACK를 보냄 / 흐름 제어 / 타이머 등의 방법으로 순서를 보장함
- '가상회선 패킷 교환 방식'을 사용함
- TCP 연결 성립 과정
3 way handshake
신뢰성을 확보하기 위해 하는 작업. 이 과정이 있기 때문에 TCP 신뢰성이 구축됨
![](https://velog.velcdn.com/images/bovet/post/da391299-4e61-46d8-b64d-ffb62a708392/image.png)
1. connection request : 서버에 클라의 ISN을 담아 SYN을 보냄.
2. connection granted : 커넥션을 수용하고, 승인번호를 보냄
3. ACK : 승인번호를 담아 ACK를 서버에 보냄
TCP reliable data transfer
- 3-way-handshake
- TCP header의 checksum
: 통신 과정에 오류가 생겼는지 확인하기 위해 존재. 해당 패킷이 손상된 경우 ACK flag를 0으로 초기화하여 보냄
- TCP header의 sequece number
: 데이터에 순차적으로 번호를 매겨서 보내는 것으로 중간에 어긋난 패킷을 확인하고 순서를 맞춘다
- time out시 패킷 재전송
- 흐름 제어
: 송신 측과 수신 측의 데이터 처리 속도 차이로 인해 발생하는 문제를 해결하기 위함. 윈도우 크기를 조절한다
- 혼잡 제어
: 네트워크에서 발생하는 혼잡을 방지한다. ex)Reno, Tahoe