IP / TCP / UDP

1Hoit·2023년 3월 6일
0

IP (인터넷 프로토콜)

IP는 출발지와 목적지의 정보를 IP 주소라는 특정한 숫자값으로 표기하고 패킷이라는 통신단위로 데이터를 전송한다.

IP의 한계

  • 비연결성 : 패킷을 받을 대상이 없거나 서비스 불능 상태여도 패킷을 전송한다.
    • 클라이언트는 서버의 상태를 파악할 방법이 없기 때문
  • 비신뢰성 : 중간에 패킷이 사라질 수 있고 패킷의 순서를 보장할 수 없다.
    • 데이터의 용량이 크면 패킷 단위로 나눠 데이터를 전달하는데 이 때 의도치 않은 순서로 서버에 패킷이 도착할 수 있다.

OSI 7 계층과 TCP/IP 4 계층

  • IP 프로토콜 보다 더 상위 계층에 TCP 프로토콜이 존재하기 때문에 앞에서의 IP 프로토콜의 한계를 보완할 수 있다.
  • 아래에서 천천히 알아보자.

    참고
    TCP/IP 4 계층은 OSI 7 계층보다 먼저 개발되었으며 TCP/IP 프로토콜의 계층은 OSI 모델의 계층과 정확하게 일치하지 않는다.
    실제 네트워크 표준은 업계표준을 따르는 TCP/IP 4 계층에 가깝다.



TCP / UDP

  1. HTTP 메시지가 생성되면 Socket을 통해 전달된다.

    • 프로그램이 네트워크에서 데이터를 송수신할 수 있도록, “네트워크 환경에 연결할 수 있게 만들어진 연결부“가 바로 네트워크 소켓(Socket)이다.
  2. IP 패킷을 생성하기 전 TCP 세그먼트를 생성한다.

  3. TCP/IP 패킷은 LAN 카드와 같은 물리적 계층을 지나기 위해 이더넷 프레임 워크에 포함되어 서버로 전송된다.

TCP/IP 패킷과 단순 IP 패킷과의 차이를 알아보자

  • TCP 세그먼트에는 IP 패킷의 출발지 IP와 목적지 IP 정보를 보완할 수 있는 출발지 PORT, 목적지 PORT, 전송 제어, 순서, 검증 정보 등을 포함한다.

TCP(전송 제어 프로토콜) 특징

UDP에 비해 상대적으로 신뢰할 수 있는 프로토콜로 아래와 같은 특징이 있다.
1. 연결지향 - TCP 3 way handshake (가상 연결)

쉽게 생각을 해보면
1) 클라이언트가 SYN 패킷을 보냄
2) 서버는 SYN요청을 받고 클라이언트에게 요청을 수락한다는 ACK 와 SYN가 설정된 패킷을 발송하고 클라이언트가 다시 ACK으로 응답하기를 기다림
3) 클라이언트가 서버에게 ACK을 보내면 이 이후로부터 연결이 성립되며 데이터를 전송할 수 있다.

  • 서버가 꺼져있다면 클라이언트가 SYN을 보내고 서버에서 응답이 없기 때문에 데이터를 보내지 않는다.
  • 현재에는 최적화가 이루어져 3번 ACK을 보낼때 데이터를 함께 보내기도 한다.
  1. 데이터 전달 보증

    TCP는 데이터 전송이 성공적으로 이루어진다면 이에 대한 응답을 돌려주기 때문에 IP 패킷의 한계인 비연결성을 보완할 수 있다.

  2. 순서 보장과 신뢰할 수 있는 프로토콜

    • 패킷이 순서대로 도착하지 않는다면 TCP 세그먼트에 있는 정보를 토대로 다시 패킷 전송을 요청할 수 있다.
      이를 통해 IP 패킷의 한계인 비신뢰성(순서를 보장하지 않음)을 보완할 수 있다.

추가적으로 TCP는
TCP는 연속성보다 신뢰성있는 전송이 중요할 때에 사용하는 프로토콜로 예를 들면 파일 전송과 같은 경우에 사용

  • 서버와 클라이언트는 1대1로 연결된다.
  • 스트림 전송으로 전송 데이터의 크기가 무제한이다.
  • 패킷에 대한 응답을 해야하기 때문에(시간 지연, CPU 소모) 성능이 낮다.
  • Streaming 서비스에 불리하다.(손실된 경우 재전송 요청을 하므로)

UDP (사용자 데이터그램 프로토콜)

  • IP에 PORT, 체크섬 필드 정보만 추가된 단순한 프로토콜
  • TCP 특징과 비교해 보면 신뢰성은 낮지만 3 way handshake 방식을 사용하지 않기 때문에 TCP와 비교해 빠른 속도를 보장한다.
  • HTTP3는 UDP를 사용하며 이미 여러 기능이 구현된 TCP보다는 하얀 도화지처럼 커스터마이징이 가능하다.
  • 참고
    체크섬(checksum)은 중복 검사의 한 형태로, 오류 정정을 통해, 공간(전자 통신)이나 시간(기억 장치) 속에서 송신된 자료의 무결성을 보호하는 단순한 방법.

추가적으로 UDP 특징
신뢰성보다는 연속성이 중요한 서비스 예를 들면 실시간 서비스(streaming)에 자주 사용

  • UDP에는 연결 자체가 없어서(connect 함수 불필요) 서버 소켓과 클라이언트 소켓의 구분이 없다.
  • 소켓 대신 IP를 기반으로 데이터를 전송한다.
  • 서버와 클라이언트는 1대1, 1대N, N대M 등으로 연결될 수 있다.
  • 데이터그램(메세지) 단위로 전송되며 그 크기는 65535바이트로, 크기가 초과하면 잘라서 보낸다.
  • 흐름제어(flow control)가 없어서 패킷이 제대로 전송되었는지, 오류가 없는지 확인할 수 없다.
  • 파일 전송과 같은 신뢰성이 필요한 서비스보다 성능이 중요시 되는 경우에 사용된다.

TCP / UDP 차이 정리

profile
프론트엔드 개발자를 꿈꾸는 원호잇!

0개의 댓글