-> 블로그 이전

[Network] 트랜스포트 계층 : Transport Layer

2022. 2. 13. 16:49Major`/컴퓨터 네트워크

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 주소 + 포트 번호)만 동일하다면 같은 소켓에 전달된다

SP : 출발지 포트 번호 / DP : 목적지 포트 번호

 

연결지향형 다중화/역다중화 :: TCP

- 각 Client 별로 Server에서 해당 Client 전용 소켓들을 열어준다 (Client : Server_Socket = N : N)

- 소켓 : "나는 ~~ 목적지 IP 주소/~~ 목적지 포트 번호 보유하고 있고, 각 Client별로 ~~ 출발지 IP주소/~~ 출발지 포트 번호도 보유하고 있다"

- TCP 소켓은 (출발지 IP 주소/출발지 포트 번호) | (목적지 IP 주소/목적지 포트 번호)로 구분한다

 

>> 출발지별로 해당 출발지 전용 목적지 소켓이 존재한다 : TCP는 연결의 확립을 전제로 통신하기 때문이다

 

SP : 출발지 포트 번호 / S-IP : 출발지 IP 주소 / DP : 목적지 포트 번호 / D-IP : 목적지 IP 주소