[TCP/UDP] TCP와 UDP의 특징과 차이

Harry park·2022년 6월 20일
1

Web

목록 보기
5/7

OSI 7계층과 TCP/IP 4계층


TCP

TCP란?

: TCP란 Transmission Control Protocol의 약자로 전송을 제어하는 규약이라는 뜻이다.

Internet 상에서 데이터를 메세지 형태로 보내기 위해 IP와 함께 사용하는 규악

TCP는 패킷을 추적 및 관리하고 IP 는 데이터의 배달을 처리한다.
❗️ 패킷(Packer)이란 ?
인터넷 내에서 데이터 전송을 위한 라우팅을 효율적으로 하기 위해 나누어진 조각들을 뜻한다

TCP 단점

  • 데이터로 보내기 전에 반드시 연결이 되어야 함.
  • 1:1 통신만 가능
  • 고정된 통신 선로가 최단선이 아닐 경우 상대적으로 UDP보다 데이터 전송속도가 느리다.

TCP 특징

  • 연결형(connection-oriented) 서비스로 연결이 성공해야 통신이 가능하다.
  • 데이터의 경계를 구분하지 않는다.(byte stream service)
  • 데이터의 전송 순서를 보장한다. 데이터의 순서유지를 위해 각 바이트마다 번호가 부여됨.
  • 신뢰성 있는 데이터를 전송한다.(Sequence Number, Ack Number)
    ❗️ Sequence Number : TCP 세그먼트의 연속된 데이터 번호
    ❗️ Ack Number : 상대방으로부터 받아야하는 다음 TCP 세그먼트 데이터 번호
  • 데이터 흐름 제어(수신자 버퍼 오버플로우 방지) 및
    혼잡 제어(패킷 수가 과도하게 증가하는 것 방지)
  • 연결의 설정(3-way handshaking), 해제(4-way handshacking)

3-way, 4-way

  • 전이중(Full-Duplex), 점대점(Point to Point) 서비스

3 way handshake 방식(SYN, ACK)

: 3 way handshake방식은 서로의 통신을 위해 관문(port)를 확인하고 연결하기 위해 3번의 요청/응답(SYN, ASK)이 되는 것을 말한다.
이 과정이 시간 가장 많이 소요되는데, UDP 방식보다 속도가 느려지는 주요 원인으로 주목된다.

연결과정

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

위의 음영표시 부분이 3번의 통신과정이다.

TCP state (Command Line : netstat)

  • LISTEN : 서버의 데몬이 떠서 접속 요청을 기다리는 상태
  • SYN-SENT : 로컬의 클라이언트 어플리케이션이 원격 호스트에 연결을 요청한 상태
  • SYN_RECEIVED : 서버가 원격 클라이언트로부터 접속 요구를 받아 클라이언트에게 응답을 하였지만 아직 클라이언트에게 확인 메시지는 받지 않은 상태
  • ESTABLISHED : 3 way-handshaking 이 완료된 후 서로 연결된 상태
  • FIN-WAIT1, CLOSE-WAIT, FIN-WAIT2 : 서버에서 연결을 종료하기 위해 클라이언트에게 종결을 요청하고 회신을 받아 종료하는 과정의 상태
  • TIME-WAIT : 연결은 종료되었지만 분실되었을지 모를 느린 세그먼트를 위해 당분간 소켓을 열어두고 있는 상태
  • CLOSING : 흔하지 않지만 주로 확인 메시지가 전송도중 분실된 상태
  • CLOSED : 완전히 종료

UDP

UDP(User Datagram Protocol)는 전송계층의 비연결 지향적 프로토콜을 뜻한다.
비연결 지향적이란 데이터를 주고받을 때 연결 절차를 거치지 않고 발신자가 일방적으로 데이터를 발신하는 방식을 의미한다.
❗️ 연결 과정이 없기 때문에 TCP 보다 빠른 전송이 가능하지만!! 데이터가 유실될 수 있고, 데이터 패킷을 순차적으로 보내더라도 먼저 보낸 패킷이 느린 선로를 통해 전송될 경우 나중에 보낸 패킷보다 늦게 수신될 수 있다.

UDP 단점

  • 데이터의 신뢰성이 없다.
  • 의미있는 서버를 구축하기위해서는 일일이 패킷을 관리해주어야 한다.

UDP 특징

  • 비연결형 서비스로 연결 없이 통신이 가능하며 데이터그램 방식을 제공한다.

    ❗️ 데이터그램 방식
    데이터그램 방식은 데이터 전송 전에 송/수진자 사이에 가상 회선이라 불리는 논리적 경로를 설정하지 않고, 패킷들이 각기 독립적으로 전송되는 방식이다.
    (주로 OSI7계층 중 네트워크 계층에서 사용)

  • 데이터 경계를 구분한다. (데이터그램 서비스)
  • 정보를 주고 받을때 정보를 보내거나 받는다는 신호절차를 거치지 않는다.
  • 신뢰성 없는 데이터를 전송한다.
  • 패킷관리가 필요하다.
  • 패킷 오버헤드가 적어 네트워크 부하가 감소되는 장점.
  • 상대적으로 TCP보다 전송속도가 빠르다.

TCP/UDP 공통점과 차이점

프로토콜 종류 TCP UDP
연결방식 연결형 서비스 비연결형 서비스
패킷 교환 방식 가상 회선 방식 데이터그램 방식
전송 순서 전송 순서 보장 전송 순서 변경 가능
수신 여부 확인 수신 여부를 확인 수신 여부 비확인
통신 방식 Point to Point(1:1) N:N 통신
신뢰성 높다 낮다
속도 느리다 빠르다

참고사이트

티스토리 - Tech Interview
티스토리 - 코딩팩토리
티스토리 - 망나니개발자


개인적으로 공부하며 기록한 내용으로, 틀린 내용이 있는 경우 덧글을 달아주시면 감사하겠습니다. 😍

profile
Jr. Backend Engineer

0개의 댓글