TCP와 UDP 비교

Minyuk·2022년 9월 29일
0

TCP/IP 전송계층

  • 인터넷에서 사용하는 프로토콜 그룹
  • Application layer, Transport layer, Network layer, Data link layer, Physical layer 5개의 계층으로 나뉨.
  • 전송계층은 두 응용 계층 사이에서의 process-to-process 통신을 제공, 응용계층으로부터 메시지를 받아 전송계층 패킷으로 캡슐화하여 전송.

TCP(Transfer Control Protocol)

  • 연결형, 신뢰성 전송 프로토콜

연결 지향적 서비스를 제공하기 위해 데이터를 전송하기 전에 먼저 두 호스트의 전송 계층 사이에 논리적 연결을 설립, 그 후 데이터를 전송하고 완료했으면 연결 해제.
TCP의 통신은 connection setup, data transfer, connection termination의 3단계로 나뉨.

신뢰성 있는 서비스를 제공하기 위해 TCP가 전체 스트림을 순서에 맞고 오류 없이, 또한 부분적인 손실이나 중복 없이 전송하는 것을 보장.

  • 흐름제어 : 데이터를 보내는 속도와 받는 속도의 균형을 맞추는 것
  • 오류제어 : 훼손된 segment의 감지 및 재전송, 손실된 segment의 재전송, 순서가 맞지 않게 도착한 segment를 정렬하고 중복 segment 감지 및 폐기
  • TCP header의 checksum, 확인응답, 타임-아웃 등을 통해 수행

TCP는 3단계 과정을 거쳐서 통신

  1. Connection setup (tcp 연결 초기화) - 3way handshaking
  2. Data transfer (데이터 전송)
  3. Connection terminateion (tcp 연결 종료) - 4way handshacking

3-way handshake

TCP/IP 프로토콜로 통신하기 전, 정확한 정보 전송을 위해 상대방 컴퓨터와 세션을 수립하는(연결하는) 과정

클라이언트가 서버에게 접속을 요청하는 SYN 패킷을 보내면, 서버는 요청을 수락하는 ACK를 포함하여 SYN + ACK 패킷을 클라이언트에게 전송.
클라이언트가 수신한 후, 다시 ACK를 서버에게 전송하면 연결이 이루어지고, 이로써 데이터를 주고 받음

4-way handshake

tcp 연결을 종료하는 Connection termination 과정

양방향으로 2개의 연결이 독립적으로 닫히기 때문에 4-way 단계

  1. Client process에서 active close를 하면, client tcp에서 FIN 세그먼트를 보냅니다.
  2. Server는 FIN 세그먼트를 받았다는 응답에 대한 ACK를 client로 보냅니다. 이때, server 내의 process에게 EOF를 보내지만, 아직 process는 close되지 않을 수 있습니다.
  3. Server process로부터 passive close를 받으면 server tcp에서 FIN 세그먼트를 client TCP에게 보냅니다.
  4. Server tcp가 ACK를 받게 되면 연결이 종료됩니다.

UDP(User Datagram Protocol)

  • 비연결형, 비신뢰성 전송 프로토콜

논리적 연결을 설립하지 않고 datagram을 전송하는 비연결형 프로토콜
적은 양의 오버헤드를 갖기 때문에 작은 메시지를 보내거나 신뢰성을 크게 고려하지 않아도 되는 상황에서 사용

예시

파일을 다운 받을 때는 신뢰성이 보장 되어야 하기 때문에 TCP를 사용, 다운로드 완료된 파일의 일부분이 손실되거나 훼손되어 있으면 안되기 때문.

live방송과 같이 실시간 상호작용을 하는 응용프로그램을 사용할 때는 UDP 사용, 손실된 패킷으로 인해 짧은 시간동안 화면의 일부분이 공백으로 표시되더라도 대부분의 시청자들은 인식하지 못하기 때문에 신뢰성보다 실시간성이 더 중요. 훼손되거나 손실된 프레임을 재전송 해야된다면 전체적으로 지연 발생

0개의 댓글