- 논리적 통신: 서로 다른 호스트 간의 통신을 직접 연결된 것처럼 논리적으로 수행하는 통신 방식
- End-to-End 통신: Transport Layer에서 논리적으로 이루어진다.
- 데이터의 신뢰성, 보안 및 효율성을 확보하기 위해 설계되며, 데이터의 송신과 수신은 최종 종단 시스템 간에서 처리된다.
→ 중간 라우터, 스위치, 또는 다른 네트워크 장비가 데이터를 검사, 수정, 또는 처리하지 않음으로써, 중간에 있는 네트워크 장비나 서버의 장애 또는 문제로부터 보호할 수 있다.- Send side: 어플리케이션 계층에서 받은 메시지를 세그먼트로 분할
- Rcv side: 네트워크 계층에서 받은 세그먼트를 재조립
프로토콜 종류
- TCP (Transmission Control Protocol)
- Reliable(신뢰성): 데이터가 손실되거나 손상될 경우 데이터를 재전송하거나 오류 복구를 시도하여 완전한 데이터 전달을 보장
- In-Order delivery(순서 보장): 패킷에 번호를 부여하여 전송한 순서대로 수신 측에 전달
- Congestion control(혼잡 제어): 전송 속도를 조절하여 네트워크 부하를 조절
- Flow control(흐름 제어):수신 측이 처리할 수 있는 속도로 데이터를 전송하도록 조절하여 버퍼 오버플로우 등으로 인한 패킷 손실을 방지
- Connection setup (연결 설정) : 연결 지향 프로토콜로, 통신 시작 시 세션을 수립하고 통신을 마치면 세션을 종료
→ 데이터 전송에 대한 안정성 보장
- UDP(User Datagram Protocol)
- Unreliable(신뢰성 없음): 데이터 손실 및 손상에 대해서 보장 또는 복구를 진행하지 않는다.
- Unordered delivery: 패킷의 전송 순서와 상관없이 수신 측에 전달
- Connection-less: 별도의 연결 설정 절차 없이 호스트 간에 패킷을 주고 받는다.
- 낮은 오버헤드: 더 간단한 헤더 구조를 가지고 있고, connection-less하기 때문에 오버헤드가 적다.
→ 대역폭↓, 데이터 전송↑- 실시간 통신: 데이터의 빠른 전달을 지향하므로 실시간 음성 및 비디오 스트리밍과 같은 응용 프로그램에 적합하다.
Connectionless demultiplexing: UDP에서 사용하는 비연결형 역다중화 방법
- Sender: 비연결형 특성 때문에 데이터를 보낼 때 source IP / port number와 상관없이 목적지 IP 주소와 포트 번호를 설정하여 데이터를 캡슐화 & 전송
- Receiver: UDP 헤더의 목적지 포트 번호를 검사하여 해당 패킷을 올바른 소켓에 전달 (demultiplexing)
- 간단하면서 빠른 데이터 전송 방식이며, 연결 설정 및 연결 종료와 같은 복잡한 절차를 필요로 하지 않는다.
Connection-oriented demultiplexing: TCP에서 사용하는 연결 지향형 역다중화 방법
- TCP는 신뢰성을 제공하기 위해 패킷을 보내는 송신자와 패킷이 도착해야 하는 대상을 모두 식별할 수 있도록 source IP 주소와 포트, 그리고 destination IP 주소와 포트 모두 필요하다.
- 하나의 서버는 여러 개의 TCP 소켓을 가질 수 있다.
- TCP 소켓에 포함되어있는 4가지 튜플
- source IP Address: 패킷을 보내는 송신자의 정보를 식별하는 데 사용
- source Port number
- destination IP Address: 패킷이 도착해야 하는 대상을 식별하는 데 사용
- destination Port number