본문 바로가기

이론

Transport Layer의 TCP/UDP

*Transport Protocol

- 서로 다른 호스트 간의 논리적인 통신채널을 제공하는 프로토콜.

- 논리적 통신이란, 물리적인 요소(중간 장치, 경로 등)을 고려하지 않고 양 극단(=End System=Network Edge, 곧 Transport Layer)만을 상정하는 통신을 한다. 중간의 물리적 요소는 다른 Protocol들이 담당하므로 TCP는 중간과정을 고려할 필요 없다.

- 발신자: Appliciaion Layer에서 전달된 Message를 Segmetn로 변환해 Network Layer에 전달한다.

- 수신자: Network Layer로부터 전달받은 Segment로부터 Message를 추출해 Application Layer로 전달한다.

→ Network Layer는 host 간의 Logical communucation을 제공한다.

→ Transport Layer는 process 간의 Logical communucation을 제공한다.

※ Network Layer와 달리 Transport Layer는 신뢰적 전송을 보장한다. 그러나 지연이나 대역폭에 대한 보장은 불가하다.

 

* UDP: 실시간 송출에 사용되는 Transport Layer Protocol을 말한다. Data Lost의 발생 가능성이 다수 존재한다.

 

* Multiplexing / Demultiplexing

- Demultiplexing: 수신자(rcv) 호스트에서 진행된다. 타 호스트에게서 전달 받은 Segment의 Data를 올바른 Socket으로 전달한다. (하위 계층->상위 계층으로 데이터가 이동)

- Multiplexing: 발신자(send) 호스트에서 진행된다. 상위 계층의 Sockets로부터 받은 Data를 모아 각 data의 header정보로 캡슐화 한다. 이후 하위 Layer로 전달한다. (상위 계층->하위 계층으로 데이터가 이동 )

 

데이터 이동 방식

 

 

* Demultiplexing을 위한 전제조건

- 각 Sockets는 고유 식별자를 보유한다.

- 각 Segments는 목적지 Socket(dst Socket)을 가리키는 특별한 Field를 지닌다.

- Field는 Source(발송지)와 Destination(수신지, 목적지)의 Port Number를 포함한다.

→ UDP Header Field 구성요소: src/dst Port Number & Packet의 길이 & 길이 합. 

→ TCP Header Field 구성요소:

 

 

* Connectionless Demultiplexing

- Port Number를 통해 Socket를 생성한다.

- UDP socket의 구성요소: dst IP & dst Port Number. 해당 두 요소의 집합에 의해 socket을 식별한다. UDP Segments들은 출발지(source)의 IP나 Port Number가 상이해도 동일한 목적지 IP와 Port Number를 지니면 동일한 socket을 통해 process로 전달된다.

- TCP socket의 구성요소: source IP & source Port Number & dst IP & dst Port Number. 해당 네 요소의 집합에 의해 socket을 식별한다. Host에 Segment가 도착하면, host는 적절한 TCP Socket으로 message를 전달하기 위해 구성요소의 값을 모두 사용한다.

- Server Host는 동시에 여러 TCP Socket을 지원한다. 각 Socket은 4개의 구성요소에 의해 구별된다.

- Web Server는 각각의 Client 접속에 대해 서로 다른 Socket를 사용한다.

 

* UDP

- Transport Layer에서 사용하는 최소한의 기능으로 동작한다. (부가 기능이 없다.)

- Header에 정보가 적어 UDP에서 제작하는 Packet을 Datagram이라 부른다. Transport Layer에서 만드는 Packet은 보통 Segment라 부른다.

- "Best-Effort": 네트워크 분야에서는 보장 불가라는 뜻이다. UDP는 Data Lost가 가능하고, 전송 순서의 오류가 발생할 수 있다. 즉, 해당 프로토콜의 신뢰성을 보장할 수 없다.

※  Application 설정(확인 응답, 재전송 등의 기능 추가)을 하면 UDP도 신뢰성 있는 통신이 가능하다.

- Connectionless : UDP Sender와 Reciever간의 Handshaking을 하지 않는다. 독립적으로 전달된다.

 

* UDP의 특징

- 연결 설정이 없다: 예비 동작이 없으므로 전송 지연이 발생되지 않는다.

- 연결 상태가 없다: 상태를 저장하지 않으므로, 상태를 유지하기 위한 변수 선언이 생략된다. 따라서 변수를 저장하지 않으므로 여유 용량이 존재한다. 이는 더 많은 App의 수용이 가능하게 한다.

- 작은 Header: 8 Byte의 용량을 지닌다. TCP의 Header 크키는 20 Byte이다. 단, 이것은 Packet의 전체 용량과는 관계 없으므로 전송 속도와 관련 있는 부분이 아니다. Transport Layer에서 가장 간략화된 기능을 지니게 할 뿐이다.

- 혼잡제어를 하지 않는다: 전송에 있어 다른 규칙이 없다. 이는 곧 다른 요소(트래픽 등의 네트워크 상태)를 고려하지 않는다는 뜻으로, 혼잡도가 이에 포함된다. 따라 Application에서 요구되는 모든 데이터를 제한없이 전송한다.

 

* UDP를 사용하는 App

- DNS

- SNMP

 

* Checksum

- TCP에서 Segment 전송 시, Segment에 오류여부를 검증하기 위해 고안된 기능이다.

- Checksum 과정(발신자, Sender)

1)  Segment의 Content를 16bit Integer로 만든다.

2) 모든 16bit의 합을 도출 (=SUM)

3) SUM 값에 1의 보수 (1=0, 0=1) 진행(=Check)

4) SUM과 CHECK를 Segment checksum field에 삽입해 전송.

- Checksum 과정(수신자, Reciever)

1) 수신한 Segment의 모든 16bit word을 합산한다.

2) 해당 값이 모두 1이면 오류가 없는 것이다. 0이 하나라도 있다면 오류가 있는 것이다.


 

※ 2진수 연산

0+0=0

0+1=1

1+0=1

1+1=10

 

3개 이상의 연산은 선행한 2개를 먼저 연산한 이후 그 값에 뒤의 값들을 순차적으로 연산한다.

(((1+2)+3)+4)의 느낌으로.

 


 

TCP는 문서를 하나 분리한다.

'이론' 카테고리의 다른 글

암호학  (0) 2025.02.05
TCP 데이터 전송 - rdt  (0) 2025.01.15
IP(Network Layer)  (0) 2025.01.07
Ethernet과 그의 확장  (0) 2025.01.07
네트워크 모델과 Topology  (0) 2025.01.06