HTTP의 기본적인 IP, TCP ∙ UDP 알아보기

IP, TCP ∙ UDP

해당 내용은 모든 개발자를 위한 HTTP 웹 기본 지식 강의를 수강하여 작성했습니다.

IP(Internet Protocol)

IP는 인터넷 프로토콜의 약자로, 인터넷이 가능한 네트워크 상에서 정보를 송 ∙ 수신하는 통신에 대한 규약을 의미합니다. 클라이언트와 서버는 각각의 IP를 갖고 있습니다.

클라이언트와 서버는 각각의 지정된 IP 주소에 데이터를 전달하며, 데이터를 전달할 때에는 ‘패킷’이라는 단위를 사용합니다.

클라이언트 주소, 서버 주소, 보낼 내용 이 세 가지를 적어서 인터넷으로 보내게 되면, 인터넷에서 자체적으로 서버에 보낼 수 있는 주소를 찾아가면서 나아갑니다.

문제점

  1. 비연결성 : 패킷 대상이 없거나 불능이어도 보내게 됩니다.
  2. 비신뢰성 : 중간에 패킷이 없어지거나 순서대로 도착하지 않는 문제가 발생합니다.
    • 중간에 케이블이 끊어지는 것과 같은 불가피한 하는 문제가 발생하면 결국 패킷이 없어집니다.
    • 1500byte가 넘어가는 경우, 보통 끊어서 보내게 되는데, 이 때 순서를 지켜서 보내야 합니다. 하지만, 여러 패킷이 가는 경우, 중간에 패킷이 다른 순서로 더 먼저 갈 수도 있다는 문제가 발생합니다. 이를 해결하기 위해 TCP, UDP를 사용합니다.
  3. 프로그램 구분 : 같은 IP를 사용하는 서버에서 여러 애플리케이션이 통신될 경우 문제가 발생할 수 있습니다.

TCP/UDP

인터넷 프로토콜 스택은 4계층으로 이루어져 있습니다.

  1. 애플리케이션 계층 - HTTP, FTP
  2. 전송 계층 - TDP, UDP (IP 보완)
  3. 인터넷 계층 - IP
  4. 네트워크 인터페이스 계층 - LAN 드라이버 등

순서

  1. 일반적으로 사용하는 애플리케이션에서 socket library를 통해 메시지를 전달
  2. OS에서 TCP 정보를 메세지에 포함 → IP 패킷을 그 TCP 정보에 포함
  3. 이더넷 프레임(MAC 주소 등이 포함)을 LAN 드라이버에서 포함 시켜서 인터넷으로 보냄
  4. 서버로 전송

IP, TCP 패킷 정보

패킷은 package(수하물)와 bugget(덩어리)의 합성어입니다. IP 패킷에는 출발지 IP, 목적지 IP가 들어갑니다.

TCP 패킷에는 출발지 PORT, 목적지 PORT, 전송 제어 ∙ 순서 ∙ 검증 등과 관련된 정보 등이 들어옵니다.

TCP의 특징

  1. TCP는 전송 제어 프로토콜(Transmission Control Protocol)입니다.
  2. 먼저 서로 연결이 되었는지를 확인하는 연결 지향성을 띕니다. (3 way handshake)
  3. 데이터가 상대에게 제대로 보내졌는지를 확인하는 데이터 전달 보증이 이루어집니다.
  4. 데이터가 보낸 순서대로 도착하도록 하는 순서 보증의 역할을 합니다.
  5. 위와 같은 기능들을 갖고 있어 신뢰가능한 프로토콜입니다.

TCP 3 way handshake

클라이언트와 서버가 서로 연결을 진행하는 과정으로, SYN, SYN + ACK, ACK의 과정으로 이루어집니다.

  1. 클라이언트가 서버에게 요청
  2. 서버가 요청을 수락하고 다시 클라이언트에게 요청
  3. 클라이언트가 요청을 수락 (현재는 발전되어 요청 수락과 동시에 데이터 전송)
  4. 데이터 전송

TCP의 연결은 옛날 전화선처럼 연결된 것이 아닙니다. 그저 클라이언트와 서버간 3-way handshake 과정이 성공했다는 것(논리적으로만 연결)을 의미합니다. 즉, 클라이언트와 서버 사이에 수 많은 서버들을 거치는 것은 달라지지 않습니다.

장점


UDP

사용자 데이터그램 프로토콜(User Datagram Protocol)의 약자로, 데이터 통신을 위한 규약의 일종입니다.

UDP의 특징