본문 바로가기
웹 개발

HTTP와 TCP/IP

by heosj 2024. 5. 22.

HTTP, IP, TCP의 관계

  • 웹 서비스를 이용할 때, 눈에 보이지 않는 복잡한 과정이 일어난다
  • 이 과정에서 HTTP, IP, TCP는 핵심적인 역할을 한다

  • IP는 TCP가 서로 연결하고 데이터를 주고받을 수 있도록 기반을 제공
  • TCP는 HTTP가 안정적으로 데이터를 전송할 수 있도록 보장
  • TCP 패킷에는 출발지와 목적지의 IP 주소와 HTTP 메시지가 담겨 있어서 데이터를 올바른 곳으로 전달하는 역할을 한다 

 


IP; Internet Protocol

  • 인터넷에 연결된 모든 기기에 고유한 주소를 부여하는 역할
  • 집마다 고유한 주소가 있듯이, 인터넷에 연결되는 장치들은 각자 고유한 IP 주소를 가진다
  • 라우팅으로 데이터 패킷을 목적지까지 전달하기 위한 경로를 선택한다
  • 데이터를 패킷으로 분할하여 네트워크를 통해 전달되며, 각 패킷은 출발지와 목적지 IP 주소를 가지게 된다
  • 각 패킷은 독립적으로 전송되고, 패킷의 전달이 보장되지 않는다 

IPv4

  • 32 비트 주소를 사용하며, 4개의 8비트로 구성된다 (예) 192.168.1.100

IPv6

  • 128 비트 주소를 사용하며, 16비트로 구성된다 (예) 2001:0db8:85a3:0000:0000:8a2e:0370:7334
  • IPv4의 한계와 보안 취약점을 보완하고, QoS(Quality of Service) 및 멀티캐스트 지원과 같은 향상된 기능을 제공한다
패킷; Packet
컴퓨터 네트워크에서 데이터를 전송하는 단위
데이터를 여러 조각으로 나누어 전송할 때 각각의 조각
패킷은 네트워크를 통해 전송되고 목적지에 도착하면 재조립되어 원래의 데이터로 복원된다
- 페이로드 Payload : 실제 전송하려는 데이터
- 헤더 Header : 패킷의 메타데이터로 출발지/목적지 IP 주소, 패킷 크기, 전송 방법 등이 포함된다
- 트레일러 Trailer : 패킷의 끝을 표시, 오류 검출 및 수정을 위한 체크섬 같은 정보가 포함된다


TCP; Transmission Control Protocol

  • 데이터의 신뢰성 있는 전달을 보장하는 역할
  • 데이터 전송 전 송신자와 수신자 간 연결을 설정한다 → 3-way handshake
  • 데이터가 손실되지 않고 순서대로 도착하도록 보장하며, 전송 중 발생하는 오류를 검출하고 복구한다

3-way handshake

  • TCP 연결을 설정하기 위한 3단계 과정
  • 송신자와  수신자가 데이터를 전송하기 전 연결을 설정하고, 통신할 준비가 되었는지 확인하기 위해 수행한다
  1. 클라이언트가 서버에 연결 요청을 보내고, 이때 연결 요청을 나타내는 SYN 패킷을 전달한다
  2. 서버가 클라이언트의 요청을 수락하고, 이때 SYN + ACK 패킷을 전달한다 
  3. 클라이언트가 서버의 응답을 확인하고 연결을 완료하며, 이때 수신 데이터 확인을 나타내는 ACK 패킷을 전달한다

TCP/IP

  • TCP와 IP는 함께 사용됨으로써 데이터의 효율적이고 신뢰성 있는 전송을 가능케 한다
  • IP가 데이터를 패킷으로 분할하고 네트워크를 통해 전달하면, TCP는 패킷들이 손실 없이 순서대로 도착하도록 보장한다
  • TCP와 IP는 각각의 고유한 기능을 바탕으로 상호 보완적으로 작동하여 인터넷을 가능하게 하는 핵심 프로토콜 스택을 형성하게 되었다

 

캡슐화; encapsulation

  • TCP/IP에서 데이터를 전송하기 위해 각 계층이 데이터에 특정 헤더 정보를 추가하는 과정
  • 캡슐화를 통해 데이터를 보호하고 올바르게 전달되도록 보장한다
  • 반대로 각 계층의 헤더를 제거하며 원래의 데이터를 복원하는 것을 역캡슐화라고 한다

  • 응용 계층은 데이터(HTTP 메시지)를 생성하고 헤더를 추가한다
  • 전송 계층은 데이터를 수신하고, TCP/UDP 헤더를 추가해 세그먼트를 생성한다
  • 인터넷 계층은 세그먼트를 수신하고, IP 헤더를 추가하여 패킷을 만든다
  • 네트워크 계층은 패킷을 수신하고, 네트워크 접근 계층 헤더 및 트레일러를 추가하여 프레임을 만든다
  • 프레임은 물리적 네트워크를 통해 전송된다

 

 

'웹 개발' 카테고리의 다른 글

HTTP와 HTTPS  (0) 2024.05.22
TCP와 UDP  (0) 2024.05.22
HTTP 개념  (0) 2024.05.22
DNS  (0) 2024.05.22
웹의 작동 원리  (0) 2024.05.22