HTTP, TCP/UDP/IP, Socket

현지·2025년 9월 24일

HTTP Request와 Response의 구조

HTTP는 HyperText Transfer Protocol의 약자로,
웹에서 클라이언트(브라우저 등)와 서버 간에 데이터를 주고받기 위한 통신 규약(Protocol)이다.

쉽게 말하면 웹에서 문서, 이미지, 영상 등을 요청하고 응답받기 위한 약속된 통신 방법.

HTTP는 요청-응답을 기반으로 하기 때문에 HTTP의 메시지 형태도 요청/응답 2가지 이다.

클라이언트가 HTTP request를 서버에 보내면 서버는 HTTP response를 보내는 구조

HTTP Request Message

HTTP Response Message

https://developer.mozilla.org/ko/docs/Web/HTTP/Guides/Messages

TCP/UDP/IP

IP

IP는 컴퓨터(호스트)들 사이에서 데이터 패킷을 목적지까지 전달하는 역할을 하는 인터넷 계층의 핵심 프로토콜이다.

IP의 핵심 역할

  1. 주소 지정 (Addressing)
  • 각 컴퓨터(=노드)는 고유한 IP 주소를 갖는다.
  • 예) 192.168.1.12, 8.8.8.8, 2001:db8::1
  1. 패킷 전달 (Routing)
  • IP는 데이터를 여러 네트워크를 거쳐 목적지까지 전달함.

  • 중간에 라우터(router)가 경로를 결정하고, 패킷을 넘겨줌.

  1. 비신뢰성 (Unreliable)
  • IP는 전달만 해줄 뿐, 순서를 보장하지 않음.

  • 중간에 패킷이 유실될 수도 있음

  • 중복되거나 깨져도 복구 안 해줌

  • 이건 TCP가 처리해줘야 하는 영역임!

IP 주소 체계

  1. IPv4
    32비트 주소 (총 2³² = 약 43억 개)
    형식: 192.168.0.1

  2. IPv6
    128비트 주소 (엄청 많음… 340 언쩌구 x 10³⁶ 개)
    형식: 2001:0db8:85a3:0000:0000:8a2e:0370:7334

TCP

신뢰성 있는 데이터 전송을 보장하는 전송 계층(Transport Layer)의 대표적인 프로토콜. 데이터를 정확하고 순서대로 전송하는 데 최적화되어 있다.

TCP의 핵심 특징

  1. 연결 지향(Connection-Oriented)
    데이터를 보내기 전, 3-way handshake로 연결을 먼저 설정함

  2. 신뢰성 보장(Reliability)
    데이터 유실 시 재전송, 순서 보장, 중복 제거

  3. 흐름 제어(Flow Control)
    수신 측의 수용 능력을 고려해 전송량 조절

  4. 혼잡 제어(Congestion Control)
    네트워크 상태에 따라 전송 속도 조절

UDP

빠르게 데이터를 전송하고 싶은 상황에서 사용하는 전송 계층(Transport Layer)의 대표적인 프로토콜

3-way handshake를 통해 연결 지향적인 통신을 하는 TCP와 달리 비연결성이라는 특징을 띈다. 클라이언트에서 서버로 마구 데이터를 보내는 것이다(받았다는 응답이 없어도).

이런 특성때문에 속도가 중요하고 약간의 데이터 손실은 크게 상관이 없는 통화나 스트리밍 서비스에 많이 사용되는 프로토콜이다.

Socket

네트워크에서 통신하는 두 개의 프로그램 간의 연결을 설정하고 데이터를 전송하기 위한 인터페이스.

IP주소와 포트 번호를 사용하여 네트워크 상의 특정 컴퓨터와 특정 서비스에 연결된다

소켓 통신

소켓을 이용하여 두 프로그램(서버-클라이언트) 간에 데이터를 주고 받는 과정. TCP와 UDP같은 네트워크 프로토콜을 사용

소켓은 프로토콜,IP주소,포트 넘버로 정의된다.

Echo Server

클라이언트가 전송해주는 데이터를 그대로 되돌려 전송해 주는 기능을 가진 서버를 말한다.

데이터를 그대로 되돌려 받기 때문에 클라이언트와 서버가 제대로 연결됐는지 테스트 용도로 많이 쓰인다.

Client와 Server

통신이 일어날 때 항상 요청을 시작하는 쪽은 클라이언트, 응답을 처리하는 쪽은 서버

Session과 Connection

언듯 비슷한 개념 같지만 그 역할과 범위가 다르다.

Connection

클라이언트와 서버 사이에 데이터를 주고받기 위한 통신 통로가 만들어진 것.

ex) TCP 3-way handshake를 통한 연결

Session

  • 클라이언트와 서버 간에 연속된 상호작용을 하나의 논리적인 단위로 묶은 것.
  • 연결과는 다르게 "이 사용자가 누구고, 어떤 상태인가"를 추적할 수 있어야 함.
  • 즉, 연결 위에서 유지되는 사용자 상태 추적 단위.
  • 연결 위에서 유지되기 때문에 세션은 연결에 의존함.

ex) 로그인 세션, 채팅 세션

Unicast / Broadcast / Multicast

Unicast

  • 유니캐스트는 가장 일반적인 형태의 데이터 전송 방식으로, 한 개의 송신자가 한 개의 수신자에게 데이터를 전송하는 방식.
  • 이 방식은 특정 대상과 1:1로 통신할 때 사용되며, 인터넷에서 흔히 볼 수 있는 데이터 전송 방식.
  • 신자와 수신자 각각의 고유한 IP 주소를 사용
  • 예) 웹 서버에서 클라이언트 컴퓨터로 웹 페이지를 보내는 경우

Broadcast

  • 브로드캐스트는 한 개의 송신자가 네트워크 내 모든 장치에게 데이터를 동시에 전송하는 방식입니다.
  • 같은 로컬 네트워크(LAN) 내의 모든 장치에게 신호나 메시지를 보낼 때 사용됨.
  • 브로드캐스트에서는 네트워크 내 모든 장치에 데이터를 전송하기 위해 특정한 브로드캐스트 주소를 사용하는데, 반적으로 이 주소는 IP 네트워크의 마지막 주소로 설정됨
  • 예) 네트워크 상의 모든 장치에게 서비스나 알림을 보내야 할 때

Multicast

  • 멀티캐스트는 한 개의 송신자가 특정 그룹의 수신자들에게만 데이터를 전송하는 방식
  • 데이터 스트리밍이나 실시간 데이터 전송에 효과적
  • 멀티캐스트에서는 특정 멀티캐스트 그룹의 주소를 사용하고 이 주소는 224.0.0.0에서 239.255.255.255 범위에 속한다.
  • 각 멀티캐스트 그룹은 고유한 IP 주소를 갖고 있으며, 그룹의 멤버만이 해당 주소로 보내진 데이터를 수신한다.
  • 예) 라이브 비디오 방송이나 원격 회의 시스템
profile
헤맨만큼 내 땅이다

0개의 댓글