TCP 와 UDP 의 차이점

청포도봉봉이·2023년 7월 2일
0

메모오

목록 보기
9/9
post-thumbnail
post-custom-banner

TCP와 UDP는 OSI 7계층 중에서 TCP/IP의 전송 계층에서 사용되는 프로토콜이다.

전송 계층은 송신자와 수신자를 연결하는 통신서비스를 제공하는 계층이다.

TCP(Transmission Control Protocol)

  • TCP는 인터넷 프로토콜 스위트(IP)의 핵심 프로토콜 중 하나로, IP와 함께 TCP/IP라는 명칭으로도 널리 불린다.
  • 네트워크의 정보 전달을 통제하는 프로토콜이자 인터넷을 이루는 핵심 프로토콜의 하나이다.
  • 웹 브라우저들이 월드 와이드 웹에서 서버에 연결할 때 사용되며, 이메일 전송이나 파일 전송에도 사용된다.
  • 네트워크에 연결된 컴퓨터에서 실행되는 프로그램 간에 패킷을 안정적으로 순서대로 에러 없이 교환할 수 있게 된다.
  • 장치들 사이에 논리적인 접속을 성립하기 위해 연결을 설정하여 신뢰성을 보장하는 연결형 서비스다.

TCP의 특징

  • 연결형 서비스로 가상 회선 방식을 제공한다.
    • 3-way handshake 과정을 통해 연결을 설정한다.
    • 4-way handshake 과정을 통해 연결을 해제한다.
  • 흐름 제어
    • 송신자의 데이터 전송 속도를 조절하여 수신자의 버퍼 오버플로우를 방지하는 기법이다. 흐름 제어 기법 중 하나인 슬라이딩 윈도우를 사용해 수신자의 버퍼에 남은 공간만큼 데이터를 전송받는다.
  • 혼잡 제어
    • 네트워크 내의 패킷 수가 넘쳐 네트워크를 혼잡하게 만드는 것을 방지하는 기법이다.
  • 신뢰성이 높은 전송
    • 송신 측에서 보낸 패킷을 수신 측에서 받지 못하면 재전송한다.
      • Triple-Duplicate-ACK-based retransmission: 송신 측에서 여러 개의 세그먼트를 전송했는데, 수신된 세그먼트의 순서가 틀렸을 경우 수신 단말이 다시 보내 달라는 의미의 ACK을 보낸다. 송신 측에서 동일한 ACK을 3개 이상 받았을 경우 해당 패킷은 손실됐다고 판단해 재전송을 요청한다.
      • Timeout-based retransmission: 송신자는 일정 시간동안 수신자로부터 ACK를 받지 못하면 손실됐다고 판단해 재전송을 요청한다.
  • 점이중, 점대점 방식
    • 점이중: 데이터 전송의 흐름 방향이 항상 양 방향으로 동시에 전송할 수 있다.
    • 점대점: 각 연결이 정확히 2개의 종단점을 가지고 있다.

TCP의 연결 및 연결 해제 과정

3-way handshaking

TCP 3 Way Handshake는 TCP/IP프로토콜을 이용해서 통신을 하는 응용프로그램이 데이터를 전송하기 전에

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

이러한 절차는 TCP 접속을 성공적으로 성립하기 위하여 반드시 필요하다.

3-way handshake를 간단히 표현하면 다음과 같다.

  1. Client -> Server : 내 말 들려?
  2. Server -> Client : 어 잘 들려! 내 말은 들려?
  3. Client -> Server : 잘 들려!

SYN(synchronize sequence numbers) - 연결 확인을 보내는 무작위의 숫자 값 (내 말 들려?)
ACK(acknowledgements) - Client 혹은 Server로부터 받은 SYN에 1을 더해 SYN을 잘 받았다는 ACK (잘 들려!)

  1. 먼저 Open 한 클라이언트가 SYN(내 말 들려?)를 보내고 SYN_SENT 상태로 대기한다.

  2. 서버는 SYN-RECEIVED 상태로 바꾸고 SYN과 응답 ACK(어 잘 들려! 내 말은 들려?)를 보낸다.

  3. SYN과 응답 ACK를 받은 클라이언트는 ESTABLISHED 상태로 변경하고 서버에게 응답 ACK(잘 들려!)를 보낸다.

  4. 응답 ACK를 받은 서버는 ESTABLISHED 상태로 변경한다.

TCP의 연결 해제 과정 (4-way handshake)

4-Way handshake는 세션을 종료하기 위해 수행되는 절차이다.

4-way handshake를 간단히 표현하면 다음과 같다.

#1. Client -> Server : 나는 다 보냈어! 이제 끊자!
#2. Server -> Client : 알겠어! 잠시만~
#3. Server -> Client : 나도 끊을게!
#4. Client -> Server : 알겠어!

  1. 먼저 close를 실행한 클라이언트가 FIN(연결 끊자!)을 보내고 FIN-WAIT-1 상태로 대기한다.

  2. 서버는 CLOSE-WAIT으로 바꾸고 응답 ACK(알겠어! 잠시만~)를 전달한다. 동시에 해당 포트에 연결되어 있는 애플리케이션에게 close를 요청한다.

  3. ACK를 받은 클라이언트는 상태를 FIN-WAIT-2로 변경한다.

  4. close 요청을 받은 서버 애플리케이션은 종료 프로세스를 진행하고 FIN(나도 끊을게!)을 클라이언트로 보내 LAST_ACK 상태로 바꾼다.

  5. FIN을 받은 클라이언트는 ACK(알겠어!)를 서버에 다시 전송하고 TIME-WAIT으로 상태를 바꾼다.

TIME-WAIT에서 일정 시간이 지나면 CLOSE 된다. ACK를 받은 서버도 포트를 CLOSED로 닫는다.
※ TIME-WAIT : 먼저 연결을 끊는 쪽에서 생성되는 소켓으로, 혹시 모를 전송 실패에 대비하기 위해 존재하는 소켓이며,
TIME-WAIT이 없다면, 패킷의 손실이 발생하거나 통신자 간 연결 해제가 제대로 되지 않을 수 있다.


TCP의 단점

  • 데이터로 보내기 전에 반드시 연결이 형성되어야 한다.
  • 1:1 통신만 가능하다.
  • 고정된 통신 선로가 최단선(네트워크 길이)이 아닐 경우 상대적으로 UDP보다 데이터 전송 속도가 느리다.


UDP(User Datagram Protocol)

  • UDP는 비연결형 프로토콜이다.
  • 비연결 지향적이란 연결을 위해 할당되는 논리적인 경로가 없고 각각의 패킷은 다른 경로로 전송되어 독립적인 관계를 지니게 되는 것을 말한다.
  • 데이터를 서로 다른 경로로, 독립적으로 처리하는 프로토콜을 UDP라고 한다.

UDP의 특징

  • 비연결형 서비스로 연결 없이 통신이 가능하며 데이터그램 방식을 제공한다.
  • 정보를 주고 받을 때, 정보를 보내거나 받는다는 신호 절차를 거치지 않는다.
  • 신뢰성 없는 데이터를 전송한다.
  • 패킷 관리가 필요하다.
  • 패킷 오버헤드가 적어 네트워크 부하가 감소된다는 장점이 있다.
  • 상대적으로 TCP보다 전송 속도가 빠르다.
  • 1:1 & 1:N & N:N 통신이 가능하다.

UDP의 단점

  • 데이터의 신뢰성이 없다.
  • TCP와는 다르게 데이터를 쪼개 주지 않아 애플리케이션 단에서 패킷을 쪼개야 한다.



출처

profile
서버 백엔드 개발자
post-custom-banner

0개의 댓글