오래 못 할 짓 하지 않기
[ 네트워크 ] 10. Transport layer : UDP 본문
Transport Layer
: Application 계층에서 다른 Host간에 Logical Communication 을 할 수 있게 해준다.
- Sender : Application Message ➡️ Segment 단위로 쪼갬 ➡️ Network Layer로 전송
- Receiver : Network Layer에서 Segment를 Message 로 합침 ➡️ Application 으로 전송
네트워크 계층의 세부적인 역할
- Send
1) Application Layer 메시지를 받는다.
2) Segment header에 들어갈 값들을 정한다 (ex) IP,Port)
3) Segment를 만들어서 값을 넣는다.
4) Segment를 헤더에 있는 IP로 보낸다.
- Receive
1) 정해진 IP로부터 Segment를 받는다.
2) Header 값을 확인한다.
3) Application Layer에 줄 메시지만 남겨둔다.
4) Socket을 통해 Application 에 메시지를 뿌려준다.
Multiplexing / Demultiplexing
* Multiplexing : 호스트의 소켓을 통해 데이터를 모으고 ➡️ Seg 생성을 위해 헤더를 붙임(Encapsulation) ➡️ 네트워크 계층으로 전송
* DeMultiplexing : 아래 계층에서 받은 데이터 ➡️ Application Socket으로 전달
다중화/역다중화를 위해선 Segment에 꼭 필요한 정보 2가지가 있다.
1) 소켓에 유일한 식별자 Port Num
2) 출발지 Port Num / 도착지 Port Num
Application 에 제대로 된 Segment를 보내기 위해서는
IP주소와 Port가 필요한데, Segment에는 Port Num만 있으면 된다.
IP 주소는 맞게 들어왔고, 그 안에서 어떻게 나누냐는 Port Num으로 나눈다
Connetionless Demultiplexing
대표적인 예시) UDP
UDP 에서 Transport Layer는 Port num 확인이 핵심이다.
( 당연히 아래 계층에서는 IP도 필요하다 )
Receiver 가 UDP로 Segment를 받는다면?
-> Segment에서 Port #를 확인한다.
-> 해당 Port #을 통해 Application Socket에 연결한다.
Connetionless 식 연결에서는
(당연히 IP는 같고) Dest Port가 같다면
어떤 IP, 어떤 Port들에서 오는지는 상관없고 그냥 같은 Socket에 연결된다.
어디에서 오든지 가운데 있는 Host에게 [ Port : 6428 ] 로 연결한다면
같은 소켓으로 연결이 가능하다.
Connetion - Oriented Demultiplexing
대표적인 예시) TCP
TCP 연결에서는 소켓이 만들어지기 위해 4가지 필드가 필요하다.
- Src ip 주소
- Dest ip 주소
- Src port #
- Dest port #
Network Layer Protocol
📌 TCP : Transmission Control Protocol
- 연결 지향형
- 혼잡 제어
- Flow control
- 신뢰 : 순서 보장
📌 UDP : User Datagram Protocol
- 비연결 방식
- 비신뢰 : 순서 보장 X
- 두 서비스 모두 [ Delay Guarantees / Bandwidth Guarantees ]
UDP
( User Datagram Protocol )
: Sender, Receiver끼리 Handshaking이 이루어지지 않는다.
📌 사용 목적
: 연결이 없음 + Header 가 작다 + Overhead가 없기 때문에 빠르다.
하지만 데이터가 안전하게 전달되는 것에 대한 보장이 없다.
Reliable한 UDP 전송을 위해서는
1) Application Layer에서 Reliability 기능을 추가하거나
2) Application Layer에서 Congestion Control 기능을 추가한다.
UDP Segment는 이렇게 생겼음
📌 Checksum
UDP Segment에는 Checksum이라는 필드가 있는데
이는 데이터가 전송 과정에서 오류가 발생했는지 확인하는 필드이다.
(출처)
한동대학교 고윤민교수님 - 컴퓨터 네트워크
'3학년 2학기 > 네트워크 (Network)' 카테고리의 다른 글
[ 네트워크 ] 12. Transport layer : UDP(3) - Reliable Transfer (0) | 2024.10.10 |
---|---|
[ 네트워크 ] 11. Transport layer : UDP(2) (0) | 2024.10.07 |
[ 네트워크 ] 9. 비디오 스트리밍 (0) | 2024.09.26 |
[ 네트워크 ] 8. P2P (0) | 2024.09.23 |
[ 네트워크 ] 7. Application layer : DNS (0) | 2024.09.19 |