Socket(소켓)
- App layer에서 TCP로 Message를 전달할 때, Socket을 통해 전달한다.
- App과 Trans는 서로 알 필요가 없음
-> 프로그램 간소화
- UDP 소켓
- 목적지 IP와 목적지 포트번호로 식별된다.
-> 출발지가 달라도 목적지가 같으면 하나의 소켓을 통해 전달됨.
- TCP 소켓
- 출발지의 IP와 포트번호, 목적지의 IP와 포트번호로 식별된다.
-> 출발지와 목적지가 모두 같은 Segment만 하나의 소켓을 통해 전달된다.
Multiplexing(다중화)
- app에서 socket에게 Message를 줄 때 묶는 것
Demultiplexing(역다중화)
- Trans가 socket에게 Segment를 줄 때 언박싱하는 것
Multiplexing, Demultiplexing 기본 과정
- host1 -> host2
- P3의 data를 Multiplexing하여 socket에게 전달함
- host2의 socket이 받은 data를 Demultiplexing 하여 P1에게 전달함
- host3 -> host2
- P4의 data를 Multiplexing하여 socket에게 전달함
- host2의 socket이 받은 data를 Demultiplexing 하여 P2에게 전달함
UDP의 다중화, 역다중화 과정
- UDP는 목적지IP와 목적지 포트번호만으로 패킷을 식별하기 때문에, A와 B에서 보낸 패킷들이 하나의 소켓으로 전달된다.
TCP의 다중화, 역다중화 과정
- TCP는 송수신자의 IP와 송수신자의 포트번호 총 4가지 정보로 패킷을 식별하기 때문에, 목적지가 같아도 출발지가 다르면 각각 다른 소켓으로 전달된다.
- 이런 특징으로 인해 프로세스의 개수가 많아져 메모리 낭비가 심해진다.
- 이를 방지하기 위해 멀티쓰레드 개념이 생겼다.