[Network] TCP & UDP

728x90
반응형
SMALL
반응형

# TCP & UDP


 

## TCP

Transmission Control Protocol

패킷을 한 컴퓨터에서 다른 컴퓨터로 전달해주는 IP 프로토콜을 기반으로 하고 있다.

 

 

### 특징

  • 연결형 서비스 3-way-handshaking (연결 성립)
    • open()을 실행한 client가 syn을 보내고 syn_sent 상태로 대기한다.
    • server는 syn를 받고 syn_rcvd 상태로 바뀌고, syn와 ack를 client에게 보낸다.
    • syn와 ack를 받은 client는 established로 상태를 바꾸고 server에 ack를 보낸다.
    • ack를 받은 server는 established 상태가 된다.

 

 

  • 연결형 서비스 4-way-handshaking (연결 해제)
    • client는 server에게 연결을 종료한다는 fin 플래그를 보낸다.
    • server는 fin을 받고 close_wait 상태가 된 이후, 확인했다는 ack를 client에게 보낸다
    • server는 데이터를 모두 전송했다면, 연결이 종료되었다는 fin 플래그를 client에게 보낸다.
    • client는 fin을 받고, 확인 했다는 ack를 server에 보낸다. 이때 바로 소켓을 닫는 것이 아니라
    • time_wait 상태로 아직 server로부터 도착하지 않은 데이터가 있을 수 있으니 대기한다.
    • server는 ack를 받은 이후 소켓을 닫는다.
    • client는 time_wait이 지나면 소켓을 닫는다.

 

  • 흐름 제어
    • 데이터 처리 속도를 조정하여 수신자의 버퍼 오버플로우를 방지한다.

 

  • 혼잡 제어
    • 네트워크 내의 패킷 수가 넘치지 않게 방지한다.

 

  • 신뢰성 서비스
    • ACK 응답값을 판단하여 재전송을 진행한다.

 

  • 전이중 서비스
    • 양방향으로 동시에 전송이 가능하다.

 

  • 점대점 서비스
    • 각 연결이 정확히 2개의 종단점을 가지고 있다.

 

  • 멀티 캐스팅 & 브로드 캐스팅 미지원

 

 


 

## UDP

User Datagram Protocol

패킷을 한 컴퓨터에서 다른 컴퓨터로 전달해주는 IP 프로토콜을 기반으로 하고 있다.

 

 

### 특징

  • 비연결형 서비스
    • 연결 자체가 없기에 소켓 구분이 없고, IP를 기반으로 전송한다.

 

  • 낮은 신뢰성
    • 연결 자체가 없기에 데이터 전송이 제대로 이루어졌는지 알 수 없다.

 

  • 빠른 서비스
    • 간단한 데이터를 빠른 속도로 전송하고자 할 때 사용한다.
    • TCP 보다 빠르다.
반응형

 

참조

https://livlikwav.github.io/study/tcp-and-udp/

728x90
반응형
LIST

'Develope > Network' 카테고리의 다른 글

[Network] LB - Load Balancer  (0) 2022.11.03
[Network] DNS  (0) 2022.11.02
[Network] OSI 7 Layers  (0) 2022.08.12