Hi yoahn 개발블로그

[netwhat] 4. TCP / UDP 본문

sswu/컴퓨터네트워크

[netwhat] 4. TCP / UDP

hi._.0seon 2021. 1. 5. 19:02
반응형

1. TCP / UDP

- TCP / IP의 전송계층에서 사용되는 프로토콜

- 전송계층 : IP에 의해 전달되는 패킷의 오류를 검사하고 재전송 요구 등의 제어를 담당하는 계층

 

TCP UDP
연결지향형 프로토콜
(연결 성공해야 통신 가능)
비 연결지향형 프로토콜
(연결 없이 통신 가능)
바이트 스트림을 통한 연결
(데이터 경계 구분하지 않음)
메세지 스트림을 통한 연결
(데이터 경계 구분)
혼잡제어 / 흐름제어 혼잡 / 흐름 제어 X
전달 순서 보장
상대적으로 느림
전달 순서 보장되지 않음
상대적으로 빠름
신뢰성있는 데이터 전송 (안정적) 데이터 전송 보장 안됨
TCP packet : 세그먼트 UDP packet : 데이터그램
HTTP, Email. File transfer DNS, Broadcasting
(실시간 동영상 서비스)
일대일 통신 (Unicast) 일대일, 일대다(Broadcast), 다대다(Multicast) 통신

공통점

- 포트 번호를 이용하여 주소 지정

- 데이터 오류 검사를 위한 체크섬 존재

 

2. TCP  (Transmission Control Protocol)

- 연결지향형 서비스와 신뢰적인 데이터 전송 서비스 포함

- 애플리케이션이 TCP 전송 프로토콜을 사용하면 애플리케이션은 TCP 로부터 두가지 서비스를 받는다.

 

# 연결 지향형 서비스

: 클라이언트와 서버가 서로 연결되어있는지 확인한 후, 클라이언트가 준비되면 데이터를 주고받는다. 

(전이중연결)

- 애플리케이션 계층 메시지를 전송하기 전에 TCP는 클라이언트와 서버가 서로 전송제어 정보를 교환하도록 한다.

-> 안정적으로, 순서대로, 에러 없이 세그먼트를 교환

 

# 혼잡제어

- 전체를 위한 일반 서비스

- 한 TCP 연결이 과도한 양의 트래픽으로 모든 통신하는 호스트들 사이의 스위치와 링크를 폭주되게 하는 것을 방지하는 것

== 하나의 TCP 연결에서 트래픽이 몰려 다른 호스트들까지 방해되지 않도록

- 각 TCP 연결이 링크의 대역폭을 공평하게 공유하여 통과하도록 해준다.

(송신 측의 TCP가 네트워크에 보낼 수 있는 트래픽을 조절함으로써 수행)

 

# 흐름제어

- 데이터 처리 속도를 조절하여 수신자의 버퍼 오버플로우를 방지

- 송신하는 곳에서 많은 데이터를 빠르게 보내 수신하는 곳에서 문제가 일어나는 것을 방지

- 수신자가 Window Size 값을 통해 수신량을 정할 수 있다.

 

# 신뢰성이 높은 전송

- 한 패킷을 전송한 후, 송신자는 수신자로부터 ACK / NAK 응답을 기다린다.

- 한 패킷에 대해 ACK 값이 중복으로 오면 송신자는 수신자가 보낸 ACK 패킷의 다음 패킷을 정확하게 수신하지 못한 것 -> 재전송

- 일정 시간동안 ACK 값이 수신되지 않는 경우 재전송

 

# 전이중, 점대점 방식

- 전이중 (Full-Duplex) : 양방향 전송 (동시에 가능)

- 점대점 (Point to Point) : 각 연결이 정확히 2개의 종단점을 가지고 있다.

 

=> 멀티캐스팅 & 브로드캐스팅 지원하지 않음

3. UDP (User Datagram Protocol)

- 비연결형

: 두 프로세스가 통신을 하기 전에 핸드셰이킹을 하지 않음

 

- UDP는 혼잡제어 방식을 포함하지 않음

- UDP의 송신 측은 원하는 속도로 데이터를 보낼 수 있다. (실제로는 중간 링크들의 제한된 대역폭 || 혼잡으로 속도가 줄어들 수 있음)

 

 

반응형
Comments