트랜스포트 레이어 기본 기능
트랜스포트 레이어는 TCP든 UDP든 복잡한 기능들을 많이 제공해주는데 트랜스포트 레이어라면 기본적으로 제공해야 될 기능은 Multiplexing and demultiplexing
- Multiplexing: 컴퓨터 내부에 애플리케이션 네트워크 프로세스들이 많이 있는데 이들이 각자 소켓이 있을 거고, 이 소켓에서 트랜스포트 레이어로 메시지가 내려온다. 그럼 트랜스포트 레이어는 어디서 내려오든 메시지를 받아서 세그먼트를 생성한다. 그리고 다음 레이터로 또 보낸다. 내려오는 구멍(소켓)이 많은데 여기저기서 막 내려오는 거를 그냥 그때 그때마다 세그먼트를 만들어서 밑으로 내려보내준다는 의미에서 멀티플렉싱.
- demultiplexing: 세그먼트 형태로 레이어를 쭉 내려갔다가 다시 올리면 도착 세그먼트를 받게 되는데, 그 세그먼트를 받아서 데이터 부분 메시지를 알맞은 프로세스에 정확히 올려줘야 한다. 수많은 프로세스들이 소켓 열고 자기의 메시지를 기다리는데 알맞은 프로세스에 딱 올려주는 그게 demultiplexing.
→ 멀티플렉싱은 sender측에서, 디멀티플렉싱은 receiver측에서.
어떻게 알맞은 프로세스를 파악할까
세그먼트에서 데이터 부분 즉 에플리케이션 메세지를 끄집어내서 알맞은 실제 목적지 프로세스에 올려줘야 하는데 어떻게 판단을 하냐 → 세그먼트 헤더에 적힌 정보를 가지고 어떤 소켓으로 올려줘야 할지를 판단.
위 그림은 하나의 세그먼트를 나타낸다. 그림을 자세히 살펴보면 헤더와 데이터 부분으로 나뉜다. (실제로는 데이터 부분은 헤더에 비해 크기가 매우 크다.)
헤더는 부가적인 정보 접근 공간이기 때문에 필드들이 여러 개 있다. 그 중 중요한 필드가 source port와 destination port. 소스 포트와 데스티네이션 포트라는 필드가 있어서 그 필드를 가지고 demultiplexing을 한다.
TCP와 UDP의 demultiplexing
- UDT: 통신을 하기 위해서 UDP 소켓을 열고 메시지가 소켓을 통해 내려와서 이 프로세스에 해당하는 포트 넘버와 함께 세그먼트 안에 담긴다. IP 주소는 다음 레이어 즉 네트워크 레이어의 전송 단위인 패킷의 IP address라는 필드에 적힌다. 우선 source port 정보가 적히고 전달되는데 UDP의 경우 다 같은 소켓으로 간다.
- connectionless transport.: 같은 소켓으로 간다는 의미는 같은 프로세스로 간다는 말인데 UDP를 사용할 경우 demultiplexing은 destination IP address와 destination port number만을 가지고 어떤 소켓에 올릴지 demultiplexing하게 된다.
- UDP 소켓 통해서 받는 메시지는 ‘아무’에게서나 올 수 있는 것. destination port만 맞다면 어디에서 보냈든지 다 같은 소켓으로 올라간다.
- TCP:
- connection-oriented transport : 반면 TCP의 경우 이 두 개만 가지고 판단하는 게 아니라 source IP, source port, destination IP, destination port 이 네 개의 튜플을 가지고 어떤 소켓을 올릴지 판단한다. 즉 이 네 개 중에 하나라도 다르면 다른 소켓을 올라간다.
- 웹서버를 예로 들면 웹 서버 프로세스가 하나 있고 각 사용자 별로 쓰레드가 있어서 그 쓰레드가 각각 소켓을 담당한다. 즉, 사용자 한 명을 위한 고유의 소켓을 생성한다. 그래서 자원을 많이 소모한다.
UDP 세그먼트
- UDP 세그먼트의 헤더 필드는 네 개밖에 없다. 그만큼 동작이 단순하다는 얘기.
- 각각 한 필드가 16비트. 포트 넘버 개수는 2의 15승.
- checksum은 전송 도중에 에러가 생길 수 있는데 그 에러가 생겼는지 안 생겼는지 판단하는 것. error checking. → UDP가 아무것도 안하는 것 같지만 transport layer가 해줘야 할 기본적인 두 가지 멀티플렉스 디멀티플렉싱 그리고 에러 체킹은 해준다.
'컴퓨터네트워크' 카테고리의 다른 글
6. 트랜스포트 계층 2-2 (1) | 2023.10.31 |
---|---|
5. 트랜스포트 계층 2-1 (0) | 2023.10.27 |
3. 애플리케이션 계층 1 (0) | 2023.10.25 |
2. 컴퓨터네트워크 기본2 (0) | 2023.10.24 |
1. 컴퓨터네트워크 기본1 (1) | 2023.10.23 |