전송 계층의 핵심 역할
- 호스트 간 프로세스들 사이의 종단간 통신을 제공한다. 구체적으로는 멀티플랙실/디멀티플렉싱, 신뢰성, 흐름제어, 혼잡제어, 연결관리, 세그먼트화/재조립을 담당
제공 가능한 서비스 속성
- 연결지향 vs 비연결 : TCP → 연결지향, UDP → 비연결지향
- 신뢰성 : 패킷 손실 재전송, 재정렬, 중복제거(예 : TCP)
- 순서 보장 : 바이트 스트림 또는 메시지 순서 보장(프로토콜에 따라서 다름)
- 흐름제어 : 송신 속도를 수신자가 허용한 범위로 제어(rwnd)
- 혼잡제어 : 네트워크 혼잡을 완화하기 위한 송신자측 조절(cwnd)
- 멀티플렉싱 /디멀티플렉싱 : 포트 번호로 여러 프로세스 구분
- 세그먼트화 / 재조립 : 큰 데이터를 전송 단위로 나눔(PDU : segment)
프로토콜과 특징
- TCP(Transmission Control Protocol)
- 연결지향, 신뢰성 보장, 흐름제어, 혼잡제어, 재전송
- 3-way handshake : 두 호스트간에 연결을 설정하기 위해 사용
- SYN(클라이언트 → 서버) 전송
- SYN + ACK(서버 → 클라이언트) 전송
- ACK(클라이언트 → 서버) 전송
- 연결 성립
- 4-way handshake : TCP 연결을 양방햑으로 독립적으로 닫기 위해 사용
- FIN(클라이언트 → 서버) 전송 : 연결 종료 요청
- ACK(서버 → 클라이언트) 전송 : 종료 요청 수락
- FIN(서버 → 클라이언트) 전송 : 서버 종료 요청
- ACK(클라이언트 → 서버) 전송 : 최종확인
- UDP(User Datagram Protocol)
- 비연결, 비신뢰성, 메시지 → 실시간/간단한 쿼리에 적합
- SCTP(Stream Control Transmission Protocol)
- DCCP(Datagram Consgestion Control Protocol)
- QUIC
- UDP 위에서 구현된 전송, 연결-보안, 스트림 다중화로 HOL(Head of Line)완화, 빠른 연결 설정