CS/Network

Transport Layer - MUX, DeMUX

WakaraNai 2021. 10. 16. 01:06
728x90
반응형

Transport Services and Protocols

transport 계층에서 만드는 data unit의 이름 -  segment

서로 다른 host에서 실행되는 app process 간 logical communication을 제공

  • send 측 :
    • 앱에서 내려보낸 메시지를 부숴 network layer로 보냄
  • 받는 측:
    • 메시지를 다시 모아서 app layer로 보냄

 

 

Transport vs Network layer

network layer

  • host 간 logical communication을 제공

transport layer

  • network layer 기능에 의존하여
  • process 간 logical communication을 제공

앤의 집에 12명이 빌의 집의 12명에게 편지를 보낸다면,

  • host = 집
  • process = 거주민
  • app message = 편지
  • transport protocol = 앤 과 빌
    • 앤은 편지를 받아서 빌의 우체통에 넣는 역할
    • 빌은 우체통을 열어서 수신자에게 전달하는 역할
  • network-layer protocol = postal service
    • 앤의 우체통으로부터 빌의 우체통까지 전달하는 역할

 

Internet transport-layer protocols

TCP

  • reliable , in-order delivery
  • congestion control : 네트워크의 혼잡이 발생하지 않도록 sending rate 조절
  • flow control : receiving buffer가 넘치지 않도록 sending rate 조절
  • connection setup

UDP

  • unordered delivery
  • host to host delivery를 하는 network layer의 IP가 최선을 다하여, ㅠ
  • packet loss나 packet 순서 꼬임 방지를 최대한 덜하도록 

둘 다,

  • delay와 대역폭을 보장해주진 않음

TCP에서는 서버가 먼저, UDP에서는 클라이언트가 먼저 실행되어야 하는 이유

TCP application에서 client이 실행되자마자 서버와 TCP connection을 맺으려 함

만약 TCP server가 운영 중이지 않았다면 connection을 맺을 수 없기에 그럼

UDP application에서는 client가 실행 즉시 connection을 초기화하지 않음

 

Multiplexing(sender) and Demultiplexing(receiver)

multiplexing : 여러 socket에서 온 data를 관리하고 transport header를 붙임

  • transport protocol의 가장 기본적인 기능 가운데
  • 클라이언트 측에서 여러 application이
  • 내려보내는 application message들을
  • 모두 하나의 transport 계층에서 받는 기능

demultiplexing : deliver segment to correct socket

  • transport 계층의 가장 기본적인 기능 중 하나로,
  • server측 transport 계층에서 network 계층으로부터
  • deliver된 data를
  • receiving end point인 application process를 찾아
  • deliver해 주는  기능

 

두 개의 client host는

하나의 server host와 통신 중

server host에서의 transport layer를 보면,

  • 각 client와 통신하는 socket 두 개로부터 옴
  • 보내는 입장에서는 여러 개의 socket으로부터 데이터를 받아서
  • transport 헤더를 붙여둠
  • 올바른 socket으로 보낼 때 헤더를 demultiplexing해야 함
  • 또 이후에 data가 클라이언트로 전송되었을때
  • 클라이언트가 demultiplexing 할 때 필요한 정보가 담김.

 



 

 

How demultiplexing works

<host receives IP datagrams>

header

  • source IP와 Destination IP

payload

  • TCP/UDP segment format
      • 이 안에 header = source port , dest port
      • payload  =  application data

 

볼드체 두 개로 demultiplexing을 함

 

 

 

Connectionless Demultiplexing - UDP

UDP의 경우는 source IP와 port와는 관계 없이

 destination IP & port number만으로 

demultiplexing을 수행

 

 

socket이 생성될 때 유일한 포트번호가 짝지어짐

    • 클라이언트의 경우 OS가 자동 할당. 서버에서는 개발자가 지정
    • DatagramSocket mySocket1 = new DatagramSocket(12534);

UDP socket에 보낼 datagram에는 목적지의 IP주소와 포트번호도 함께 주어야 함

 

 

host가 UDP segment를 받으면

  • UDP segment 속 destination 포트번호를 확인하여 해당 socket으로 보냄

 

connectionless demux에 있어서는

보내는 측의 IP 주소와 포트번호는 상관없고

목적지의 IP주소와 포트번호로 목적지 socket을 결정



저마다 socket을 생성하고 각기 다른 포트 번호가 할당됨

 

  •  



 

Connection-oriented Demux - TCP

아래 4가지 정보를 이용하여 TCP socket을 식별함

  • source IP 주소
  • source 포트 번호
  • dest IP 주소
  • dest 포트 번호

 

이 정보들을 demux하여 적절한 소켓을 찾음

서버 host는 welcome 용 TCP 소켓을 별도로 생성

  • 또한 각 클라이언트마다 connectionSocket도 생성

 

하나의 서버에도 이렇게나 많은 소켓 중 어느 것인지 알기 위해

  • source IP와 포트번호가 필요할 수 밖에 없군! (TCP라면)
  • 각 소켓은 4개의 튜플로 식별됨

 

 

하나의 client가

Non-persistent HTTP로 온다면 각 요청마다 소켓 생성 ㄷㄷ

 

각 소켓별로 process가 별도로 있음

  • 소켓 프로그래밍이 파이썬을 이용하면 괜찮지만
  • c언어로 하게 되면, 
  • 서버 프로세스가 하나의 웰컴 소켓을 열어두고 클라이언트의 요청을 받았을 때
  • 그 클라이언트를 위한 소켓을 만들고
  • 프로세스도 그 클라이언트를 위해 생성
  • 각 프로세스 별로 리소스도 할당되어야하고 관리하는데 overload 발생

 

그래서 threaded server를 이용하기도

이는 process 하나에 소켓 여러 개 할당한 것

  •  

 Suppose Client A initiates a Telnet session with Server S. At about the same time, Client B also initiates a Telnet session with Server S. Provide possible source and destination port number for

a.     The segment sent from A to S

b.    The segment sent from B to S

c.     The segment sent from S to A

d.    The segment sent from S to B

728x90
반응형

'CS > Network' 카테고리의 다른 글

Reliable data transfer - TCP  (0) 2021.10.16
Connectionless Transport : UDP (checksum)  (0) 2021.10.16
[Summary] Application Layer  (0) 2021.10.16
Socket programming with UDP, TCP  (0) 2021.10.16
Video Streaming and CDNs (Content Distribution Networks)  (0) 2021.10.16