Network

TCP vs UDP Protocol에 대해 알아보자

숄구-ml 2022. 9. 23. 14:51

출처: 머신러닝 숄구

TCP / UDP는 전송 계층에서, 데이터를 보내기 위해 사용하는 프로토콜이다. 

 

 

 

 

 

 

- TCP는 서버와 클라이언트가 1대 1로 통신하는 연결형 서비스를 지원하는 프로토콜로, 인터넷 환경에서 기본으로 사용한다. Sender 가 보낸 데이터를 Reciver가 받았는지가 중요하기 때문에 연속성 보다는 신뢰성이 중요할 때 사용하는 프로토콜이다. 따라서, 패킷에 대한 응답을 해야하기 때문에 시간이 지연되고 성능이 상대적으로 낮다. 이에 따라 스트리밍 서비스에는 불리하다.

데이터는 패킷(여러 개로 나눈 데이터의 조각) 단위로 나누어 같은 목적지로 전송되고, 각각의 패킷에 번호를 부여하여 패킷의 분실을 확인하고 목적지에서 재조립을 수행한다.

 

 

- 이에 반해, UDP는 비연결형 프로토콜이다. 각각의 패킷이 다른 경로로 전송되고 독립적인 관계를 지닌다.

UDP 프로토콜은 정보를 주고 받을 때 목적지에 잘 전송이 되었는지에 대한 확인은 하지 않는다. 즉, Flow control이 없다. SNS에 포스팅하는 것이 그 예이다. Receiver는 다수이지만 몇몇 Receiver가 받지 못했다고 해서 다시 데이터를 전송하지는 않는다. 따라서, TCP 보다 속도가 빠르고 신뢰성이 낮다. 

데이터그램(메세지) 단위로 전송되고, 크기가 초과되면 잘라서 보내게 된다. 따라서 전송 순서가 바뀔 수 있다.

 

 

- TCP의 3 way handshake

데이터를 전송하기 전에 먼저 정확한 전송을 보장하기 위해 상대방 컴퓨터와 사전에 세션을 수립하는 과정을 의미

  1. Client에서 Server에 연결 요청을 위한 SYN 데이터를 보낸다
  2. Server에서 해당 포트가 Listen인 상태에서 SYN 데이터를 받고 SYN_RCV로 상태가 변경된다
  3. 요청을 정상적으로 받았다는 대답 ACK와 Client도 포트를 열어달라는 SYN을 같이 보낸다
  4. Client에서는 ACK + SYN을 받고 Established로 상태를 변경하고 서버에 ACK를 전송한다
  5. ACK를 받은 서버는 상태가 Established로 변경된다

출처: https://coding-factory.tistory.com/614

 

 

- TCP의 4 way handshake

세션을 종료하기 위해 수행되는 과정을 의미한다. 

  1. Client가 연결을 종료하겠다는 FIN 플래그를 전송한다
  2. Server는 일단 확인 메세지를 보내고 통신이 끝날때까지 기다리는데 이 상태가 Time_Wait이다
  3. Server가 통신이 끝났으면 연결이 종료되었다고 Client에게 FIN 플래그를 전송한다
  4. Client는 확인했다는 메세지를 보낸다

 

 

 

 

 

 

 

 

 

참고 영상은 설명 맛집에서~!

https://www.youtube.com/watch?v=dqeKd8wEnZQ 

 

728x90

'Network' 카테고리의 다른 글

MAC Address에 대해 알아보자  (0) 2022.09.26
IPv4 vs IPv6 에 대해 알아보자  (0) 2022.09.23
Network Protocol에 대해 알아보자  (0) 2022.09.23
Network Basic을 알아보자  (0) 2022.09.20
응급 복구, GRUB 부트로더  (0) 2022.07.10