2022. 2. 13. 16:49ㆍMajor`/컴퓨터 네트워크
Transport Layer
- 각 End System(Host)의 Process간의 논리적 통신을 제공
송신측 Host
- Application-Layer에서 전달된 메시지를 세그먼트로 분할해서 Network-Layer로 전달
수신측 Host
- Network-Layer에서 온 각 세그먼트들을 결합해서 Application-Layer로 전달
Network-Layer vs Transport-Layer
▶ Network-Layer
- Host들 사이의 논리적 통신을 제공
- 출발지 Host → 목적지 Host로 전달
▶Transport-Layer
- Process들 사이의 논리적 통신을 제공
- Network-Layer에 의존적이고, Network-Layer의 기능을 강화
- 목적지 Host로 온 메시지 → 목적지 Host로 전달
- Data를 잃어버리거나 순서가 어긋난다 ::: Transport-Layer가 바로 잡아준다
>> UDP : Layer 3 → 목적지 Process (추가 기능 X)
>> TCP : Layer 3 → (추가 기능 :: 혼잡/흐름 제어, 연결 확립) → 목적지 Process (추가 기능 O)
TCP
- 신뢰적, 순서적 Data 전달
- 혼잡 제어 (Congesion Control) :: 네트워크 용량 관리
- 흐름 제어 (Flow Control) :: 수신측 용량 관리
- 연결 확립 (반드시 수행)
UDP
- 비신뢰적, 비순서적 Data 전달
- Network-Layer가 전달해주는 Data를 그대로 Application Layer에 전달만 해준다
>> TCP|UDP 둘다 지연 보장/대역폭 보장은 제공하지 않는다
다중화 (Multiplexing)
- Application-Layer에서 (메시지, 메시지의 목적지)를 소켓을 통해서 Transport-Layer로 전달
- 메시지 : 세그먼트의 페이로드에 저장
- 메시지의 목적지(포트 번호) : 세그먼트의 헤더에 저장
- 해당 세그먼트를 Network-Layer로 전달
- Network-Layer에서 추가적으로 목적지의 IP주소를 IP헤더에 포함시켜준다
역다중화 (Demultiplexing)
- 세그먼트의 헤더 정보(IP주소 + 포트번호)를 사용해서 목적지를 파악
- 해당 세그먼트를 올바른 소켓을 통해서 목적지에 전달
비연결형 다중화/역다중화 :: UDP
- Client가 얼마나 존재하든 상관없이 Server측에서는 소켓을 하나만 열어둔다 (Client : Server_Socket = N : 1)
- UDP 소켓은 (목적지 IP 주소 / 목적지 포트 번호)로 구분한다
- 소켓 : "나는 ~~ 목적지 IP 주소/~~ 목적지 포트 번호를 보유하고 있다"
>> 출발지가 어딘지 상관안쓰고, 목적지(IP 주소 + 포트 번호)만 동일하다면 같은 소켓에 전달된다
연결지향형 다중화/역다중화 :: TCP
- 각 Client 별로 Server에서 해당 Client 전용 소켓들을 열어준다 (Client : Server_Socket = N : N)
- 소켓 : "나는 ~~ 목적지 IP 주소/~~ 목적지 포트 번호 보유하고 있고, 각 Client별로 ~~ 출발지 IP주소/~~ 출발지 포트 번호도 보유하고 있다"
- TCP 소켓은 (출발지 IP 주소/출발지 포트 번호) | (목적지 IP 주소/목적지 포트 번호)로 구분한다
>> 출발지별로 해당 출발지 전용 목적지 소켓이 존재한다 : TCP는 연결의 확립을 전제로 통신하기 때문이다