본문 바로가기
CS이론/네트워크

[전송계층 1] Multiplexing and Demultiplexing UDP 헤더필드

by limew 2024. 1. 19.

프로세스간 통신 방법

 

1. 어플리케이션 계층에서 전송계층으로 message 를 전달한다

2. 전송 계층은 받은 message를 segment(HEADER + DATA) 형태로 네트워크 계층에 전달한다

3. 네트워크 계층은 받은 segment를 pocket(HEADER + DATA) 형태로 데이터링크 계층에 전달한다

4. 데이터링크 계층은 받은 pocket을 frame(HEADER + DATA) 형태로 물리 계층에 전달한다

5. 물리계층에서 라우터를 타고 목적지의 물리계층에 도착한다

6. 물리계층은 받은 데이터를 frame 형태로 데이터링크 계층에 전달한다

7. 데이터링크 계층은 받은 frame을 pocket 형태로 네트워크 계층에 전달한다

8. 네트워크 계층은 받은 pocket을 segment 형태로 전송 계층에 전달한다

9. 전송 계층은 받은 segment를 message 형태로 어플리케이션 계층에 전달한다

 

Multiplexing and Demultiplexing

전송계층이 기본적으로 제공하는 기능이다

 

프로세스가 많은 상황에서 

Multiplexing
sender측에서 애플리케이션 계층의 수많은 프로세스들이 보내는 message를 하나의 segment로 묶어서 아래 계층한테 전달한다

Demultiplexing
reciever측에서 받은 segment를 애플리케이션 계층에 있는 수많으 프로세스 중 알맞은 socket에게 전달한다.

 

이때 Receiver 측에서는 어떻게 segment의 데이터에 대한 부분을 정확히 목적지 프로세스의 소켓에게 전달해 줄수 있을까?

=> 정보가 segment HEADER 부분에 적혀있기 때문

 

네이버에 사용자가 접속할 때마다 사용자마다의 소켓을 갖는다

TCP가 각 클라이언트마다 소켓을 생성하고 관리하기 때문에 자원을 많이 소비한다

 

segment, 실제론 header에 비해 data 부분이 훨씬 크다

 

 

header에는 여러가지 필드가 있는데 그 중 soruce port (16bit), destination port (16bit)가 있어서 정확히 목적지의 소켓으로 전송 Demultiplexing)이 가능하다.

 


TCP와 UDP의 Multiplexing and Demultiplexing

1) UDP

 

- soruce post 에는 본인의 포트번호가, dest port에는 목적지의 포트번호가 적혀있음 (ip 주소는 segment의 헤더가 아닌 네트워크 계층의 pocket 헤더에 적혀있음)

- UDP의 경우 dest IP 와 dest port 만으로 어떤 소켓으로 올릴지 Demultiplexing이 이루어짐

- p3와 p4가 보낸 segment의 dest port는 6428로 동일함

 

UDP의 segment

 

UDP 헤더에는 4개의 필드가 있고 하나의 필드는 16bit이다.

source port, dest port, length, checksum

 

source port, dest port의 역할:

- 한 컴퓨터 내에는 0~2^16-1(65,535)개의 포트를 가질 수 있음

- udp는 이 포트번호를 가지고 Multiplexing and Demultiplexing을 함

length: 데이터와 헤더를 포함한 UDP segment의 총 바이트 수

checksum: 전송 중 에러가 있었는지 판단한다 (에러가 있으면 바로 drop시킴. UDP로 전송하면 에러는 없음)

 

 

udp가 제공하는 서비스 2개

 

1. Multiplexing and Demultiplexing (전세계 수많은 어플리케이션,프로세스,소켓 중 정확한 소켓에 전송)

2. 에러체크(전송계층을 통과한 데이터는 오류가 있어선 안된다)

 

2) TCP

신뢰성도 줘야하고, 컨트롤도 해야하고 .. 할일이 많음 = 필드가 많음

 

 

- p4는 하나의 웹서버이고 쓰레드를 통해 여러 소켓을 관리함

- p1,p2,p3는 p4의 특정 소켓에게 연결해야됨, 그래서 dest IP와 dest port가 동일함

- udp는 dest IP와 dest port 만으로 Demultiplexing이 가능하지만, TCP의 경우 source IP, source port, dest IP, dest port 이 4가지의 튜플이 있어야지 Demultiplexing이 이루어짐

- 위 4개중 하나라도 다르면 다른 소켓으로 연결됨 p1와 p3 는 source port마저 동일하지만 source IP가 다르기 때문에 다른 소켓에 연결됨

- TCP의 필드는 source port, destination port, sequence number, ack number, code bits, checksum 등이 있다

 

- 그렇기 때문에 TCP가 Connection-oriented가 되는 것임, 여기서 p1은 전세계 수많은 프로세스 중에 p4 프로세스의 특정 소켓이랑만 연결이 가능함(tcp는 각각의 클라이언트 마다 소켓을 생성하고 관리 하기 때문에 자원을 많이 잡아먹음)

- 그에 반해 UDP는 특정 소켓이 아닌 모든 소켓이 찾아올 수 있음, 그래서 Conectionless 하다고 함

 


마무리

전송계층의 UDP, TCP와 네트워크 계층의 IP의 헤더정보는 잘 알아야함 (어떤필드를 갖고 어떤 역할을 담당하는지)

우편봉지에 적힌거에 따라 전송이 달라지기 때문이다

헤더의 필드정보를 알면 각 프로토콜의 역할을 알 수 있다

 

전송계층에서 가장 기본적인 UDP도 Multiplexing and Demultiplexing 이 두가지 기능이 있다.

이 두가지 기능은 전송계층에서 어플리케이션 계층에 서비스 하기 위해 무조건 있어야 하는 기능이다

 

 

정리하자면

  • Transport 전송 계층은 TCP, UDP프로토콜이 있다
  • 전송계층은 상위계층인 App계층에게 기본적으로 Multiplexing과 Error Checking을 제공한다
    • 수많은 프로세스들 중에서 맞는것을 찾아줌
    • 전송 과정중 문제가 있으면 위로 올려보내지 않음
  • 각 레이어는 상위 레이어에게 서비스를 제공하고, 하위 레이어로부터 서비스를 제공받는다

 

 

 

 

참고자료

https://broship.tistory.com/115