본문으로 바로가기

TCP 와 UDP의 차이

category 개발지식 2022. 5. 25. 21:01
반응형

 1. TCP(Transmission Control Protocol) ?

  - 인터넷상에서 데이터를 메시지의 형태로 보내기 위해 IP 와 함께 사용되는 프로토콜

  - 연결지향적 프로토콜(클라이언트와 서버가 연결된 상태에서 데이터를 주고받은 프로토콜)

  - 가상회선 방식 사용

  - 데이터 흐름(오버플로우 방지) 및 혼잡제어

  - 높은 신뢰성 

  - UDP 보다 속도가 느림

  - 전이중(Full-Duplex) 및 점대점(Point to Point) 방식

  - 연결(3-way handshak) 해제(4-way handshak) 

  - 1:1 통신만 가능

 

 

2.  3 way handshake 방식 (SYN, ACK)

   - 서로 포트를 확인하고 연결하기 전에 3번의 요청/응답 후에 연결이 되는 과정

   - 양쪽 모두 데이터를 전송할 준비가 되었다는 것을 보장하고 실제로 데이터 전달이 시작하기 전,

     한쪽에서 다른 한쪽이 준비되어 있다는 것을 알 수 있다.

  2.1. 클라이언트가 서버에 접속을 요청하는 SYN 패킷 전송.

      클라이언트는 SYN/ACK 응답을 기다리는 SYN_SEND 상태가 됨

 

  2.2. 서버는 클라이언트에서 요청한 SYN 받고 클라이언트에게 요청을 허락 한다는 ACK 와 SYN flag 패킷을 전송

      서버는 클라이언트가 ACK 패킷으로 응답하기를 기다림

      서버는 SYN_RECEIVED 상태가 됨

 

  2.3. 클라이언트는 서버에게 ACK 패킷을 보내 데이터 송수신 상태, 즉 ESTABLISHED 상태가 됨

 

 

3. 4-way Handshak 방식

  - 세션을 종료하기 위해 수행되는 절차

 

3.1.  클라이언트가 연결을 종료하겠다는 FIN플래그를 서버에 전송

   

3.2.  서버는 확인메시지를 클라이언트에게 보내고 자신의 통신이 끝날 떄가지 기다림

 

3.3.  서버가 통신이 끝났으면 연결이 종료되었다고 클라이언트에게 FIN 패킷을 전송

 

3.4.  클라이언트는 확인했다는 메시지를 전송

      

서버에서 핀을 전송하기 전 전송한 패킷이 지연이나 패킷 유실로 인한 재전송으로 인해 FIN 패킷보다 늦게 도착하는 상황이 

발생했을 때는 Drop 되거나 유실이 되는데,

이러한 상황에 대비하여 클라이언트는 서버로부터 FIN을 수신하더라도 일정시간(240초) 동안 세션을 남겨놓고 잉여 패킷을

기다리는 과정을 가짐. 이 과정을 TIME WAIT 과정이라고 함

 

 

4. UDP 

- 데이터 신뢰성이 없음

- 의미있는 서버를 구축하기 위해서는 일일이 패킷을 관리해주어야 함

- 비연결지향적 프로토콜 ( 연결없이 통신이 가능하며 데이터그램 방식 제공)

- TCP 보다 전송속도가 빠름

- 서버와 클라이언트간 정보를 주고받을 때 TCP처럼 신호절차를 가지지 않음

- 패킷관리가 필요

- 1:1 / 1:N / N:N 통신가능

 

 

  

 

 

참고 https://velog.io/@jjewqm/TCP-3-Way-HandShaking

반응형

'개발지식' 카테고리의 다른 글

동기와 비동기 방식 / 블로킹과 논블로킹  (0) 2022.05.30
프로세스와 스레드  (0) 2022.05.26
GET 방식과 POST 방식  (0) 2022.05.24
HTTP HTTPS 의 차이  (0) 2022.05.24
CORS 란  (0) 2022.05.21