728x90
전송계층은 송신자와 수신자를 연결하는 통신 서비스를 제공하는데, 데이터 패킷이 송신자와 수신자 사이에서 정확하고 신뢰성 있게 도착하도록 담당하는 역할을 한다.
흔히 알려진 `TCP`와 `UDP`는 전송계층(Transport layer)에 속하는 대표적인 프로토콜이다.
전송계층 기능
- 종단 간 통신 (End-to-end communication) : 애플리케이션이 데이터 스트림을 전달하거나 전송할 수 있도록 해준다. 만약 네트워크 계층으로부터 들어온 데이터 패킷들이 순서가 맞지 않게 도착했다면 세그먼트 번호를 활용해 데이터를 알맞은 순서로 재정렬한다.
- 신뢰성 (Reliability) : 네트워크 상에서 데이터 전송 과정의 에러를 바로잡는 역할. 데이터가 전송 과정에서 변경되었다면 `체크섬(checksum)`을 활용해 감지할 수 있다. 패킷이 손실된 경우에는 이를 감지하고 재전송 해준다. 만약 중복된 패킷이 발견되었다면 이를 감지하고 버린다.
- 흐름 제어 (Flow control) : 송신자가 전송하는 데이터 속도가 수신자가 데이터를 처리하는 속도보다 빠를 경우에 문제가 발생하게 된다. 흐름 제어는 `stop and wait`, `sliding window`와 같은 방법으로 신뢰성을 보장하지 못할 만큼의 데이터를 보내는 것을 방지해 준다.
- 혼잡 제어 (Congestion control): 데이터의 양이 라우터가 처리할 수 있는 양을 초과할 경우 문제가 될 수 있다. 송신자가 라우터가 처리하지 못한 데이터를 손실 데이터로 간주하고 계속해서 데이터를 재전송하면 네트워크가 혼잡해질 수 있다. 이를 위해 송신 측의 전송 속도를 적절히 조절하는 것을 혼잡 제어라고 한다. 대표적으로 `AIMD`, `Slow start`, `Fast recovery` 방식이 있다.
- 멀티플랙싱 (Multiplexing) : 일반적인 컴퓨터는 하나의 이더넷 네트워크 연결만 가지고 있지만, 브라우저, 비디오 스트리밍, 메일 클라이언트 등 여러 인터넷 연결을 동시에 실행할 수 있다. 각각의 애플리케이션에서 전송 계층으로 전달된 데이터들은 적절한 포트 정보를 가지고 소켓을 통해 처리되는데 이것을 멀티플랙싱이라고 한다.
- 디멀티플랙싱 (Demultiplexing) : 전송 계층에서 포트 번호를 확인하고 적절한 소켓을 통해 프로세스에 넘겨주는 것
TCP (Transmission Control Protocol)의 특징
- 연결 지향 방식으로 패킷 교환 방식을 사용한다.
- 3-way handshaking을 통해 연결을 설정하고 4-way handshaking을 통해 해제한다.
- 높은 신뢰성을 보장한다.
- 흐름 제어와 혼잡 제어를 지원한다.
- 속도가 느리다
UDP (User Datagram Protocal)의 특징
- 비연결형 통신 프로토콜로 데이터그램 방식을 제공한다.
- UDP 헤더의 체크썸 필드를 통해 최소한의 오류만 검출한다.
- 흐름 제어와 혼잡 제어 기능을 제공하지 않는다.
- 빠른 전송 속도.
TCP와 UDP 비교
TCP | UDP | |
신뢰성 | 높음 | 낮음 |
전송 속도 | 느림 | 빠름 |
사용되는 곳 | HTTP 2.0 이하 버전 | HTTP 3.0 DNS, 동영상, 음성 데이터 전달 |
계층별 데이터 용어 정리
물리 계층 (Physical Layer) : 비트 (bits)
데이터 링크 계층 (Data-Link layer) : 프레임 (frames)
네트워크 계층 (Network Layer) : 패킷 (Packets)
전송 계층 (Transport Layer) : 세그먼트 (Segments) 또는 데이터그램 (Datagrams) (UDP의 경우)
응용 계층 (Application Layer) : 데이터 (Data)
참고자료
https://www.techtarget.com/searchnetworking/definition/Transport-layer
https://mangkyu.tistory.com/15
728x90