Network

TCP/IP

사랑우주인 2021. 6. 18. 18:11

IP(인터넷 프로토콜)

인터넷 프로토콜 역할

  • 지정한 IP(IP Address)에 데이터 전달
  • 패킷(Packet)이라는 통신 단위로 데이터 전달

IP 프로토콜의 한계

  • 비연결성
    패킷을 받을 대상이 없으면? 서비스 불능 상태여도 패킷 전송하면?
  • 비신뢰성
    중간에 패킷이 사라지면? 패킷이 순서대로 안 오면?
  • 프로그램 구분
    같은 IP를 사용하는 서버에서 통신하는 애플리케이션이 둘 이상이면?

 

인터넷 프로토콜 계층


TCP/IP 패킷 정보
Transmission Control Protocol(전송 제어 프로토콜)

 

TCP의 역할

  • 연결 지향(먼저 연결이 됐는지 확인하고 메시지를 보낸다.)
    TCP 3 way handshake (가상 연결)
  • 데이터 전달 보증(보내다가 누락이 됐는지 알 수 있다.)
  • 순서 보장
    1. 패킷 1, 패킷 2, 패킷 3 순서로 전송(클라이언트-> 서버)
    2. 패킷 1, 패킷 3, 패킷 2 순서로 도착
    3. 받은 패킷 1 제외 다 버리고, 패킷 2부터 다시 보내 요청(서버-> 클라이언트) 물론, 서버 최적화로 더 효율적인 방식으로 요청 가능함. 기본 상황을 예로 든 것!
  • 신뢰할 수 있는 프로토콜

  • 현재는 대부분 TCP 사용

UDP:

사용자 데이터그램 프로토콜(User Datagram Protocol)

  • 하얀 도화지에 비유(기능이 거의 없음)
  • 3 way handshake X
  • 데이터 전달 보증 X
  • 순서 보장 X -IP와 거의 같지만 차이점은 PORT가 추가 PORT 왜 써? IP에서 어떤 애플리케이션을 사용하고 있는지 구분하기 위해서

 

UDP를 쓰는 이유

  • TCP는 데이터 순서 보장, 검증,... 기능이 많지만 데이터 양도 크고 전송 속도를 빠르게 만들기 어렵다.
    (최적화 어렵다).
  • 최적화하고 싶으면 UDP를 커스텀하면 된다(하얀 도화지).
  • 현재는 TCP가 90% 점유, 동영상 보낼 때도 UDP로 보냄. HTTP3에서는 UDP 사용하는 추세(for 최적화)