목차
1. TCP
2. HTTP
3. HTTP와 TCP 의 관계
HTTP와 TCP 프로토콜은 인터넷 통신에서 핵심적인 역할을 하는 두 가지 프로토콜이다. 이들의 역할과 작동 방식을 이해하는 것은 네트워크와 웹 기술을 이해하는데 매우 중요하다
1. TCP (Transmission Control Protocol)
TCP는 전송 제어 프로토콜로, 데이터를 신뢰성 있게 전달하는 역할을 한다.
1. 연결 지향적 (Connection-oriented)
TCP는 데이터를 전송하기 전에 송신자와 수신자 간에 연결을 설정합니다. 이 과정은 3-way handshake라고 한다
3-way handshake
1. 클라이언트가 서버에 연결 요청(SYN)을 보낸다.
2. 서버가 클아이언트의 요청을 승인하고 연결 수락(SYN-ACK)을 보낸다.
3. 클라이언트가 서버의 수락을 확인(ACK)한다
2. 신뢰성 (Reliability)
데이터가 손실되지 않도록 보장한다. 패킷이 손실되면 재전송한다.
데이터는 순서대로 도착하도록 보장한다.
3. 흐름 제어 (Flow Control)
송신자가 수신자의 처리 능력을 초과하지 않도록 데이터 전송 속도를 조절한다.
4. 혼잡 제어 (Congestion Control)
네트워크 혼잡을 피하기 위해 데이터 전송 속도를 조절한다.
2. HTTP (HyperText Transfer Protocol)
HTTP는 웹 브라우저와 웹 서버 간의 통신을 위한 프로토콜이다. 주로 웹 페이지와 리소스를 전송하는 데 사용된다. HTTP는 애플리케이션 계층 프로토콜이며, 주로 TCP 위에서 작동한다. HTTP의 주요 특징은 다음과 같다.
1. 비연결 지향 (Connectionless)
각 요청과 응답이 독립적으로 처리된다. 서버는 요청을 받은 후 응답을 보내고 연결을 끊는다.
HTTP/1.1과 HTTP/2에서는 지속 연결(persistent connection)을 지원하여 동일한 연결을 여러 요청에 사용할 수 있다
2. 요청/응답 모델
클라이언트가 서버에 요청(request)을 보내면, 서버는 이에 대한 응답(reponse)을 보낸다.
요청 메서드: GET, POST, PUT, DELETE 등 다양한 메서드가 있으며, 각 메서드는 특정한 작업을 수행한다.
3. 무상태성 (Statelessness)
각 HTTP 요청은 독립적이며, 서버는 이전 요청에 대한 상태를 유지하지 않는다.
무상태성을 극복하기 위해 쿠키와 세션이 사용된다.
4. 헤더
HTTPS 메시지는 메타데이터를 포함하는 헤더를 가지고 있다.
ex) Content-Type, User-Agent, Accept-Language 등
5. 보안 (HTTPS)
HTTPS는 HTTP에 SSL/TLS 암호화 계층을 추가하여 데이터를 암호화하여 전송
3. TCP와 HTTP의 관계
HTTP는 애플리케이션 계층 프로토콜이며, TCP는 전송 계층 프로토콜
HTTP는 데이터를 전송하기 위해 TCP를 사용한다. (ex: 웹 브라우저가 웹 서버에 HTTP 요청을 보낼 때, 그 요청은 TCP를 통해 전달된다.)
TCP는 HTTP 요청과 응답의 신뢰성 있는 전달을 보장한다.
동작 예시
1. HTTP 요청과 TCP
웹 브라우저가 특정 웹 페이지를 요청할 때, HTTP 요청을 생성하고 이를 TCP를 통해 서버에 전송한다.
TCP는 3-way handshake를 통해 연결을 설정하고, 데이터를 패킷 단위로 전송한다.
서버는 TCP를 통해 HTTP 응답을 클라이언트에 보내고, 연결을 종료한다.
2. HTTPS
HTTPS는 HTTP 요청을 SSL/TLS 계층을 통해 암호화한 후, TCP를 사용하여 전송한다.
SSL/TLS는 클라이언트와 서버 간의 보안 연결을 설정하고, 암호화된 데이터를 주고받는다.
요약
TCP: 신뢰성 있는 데이터 전송을 보장하는 전송 계층 프로토콜. 연결 지향적, 신뢰성, 흐름 제어, 혼잡 제어 기능을 제공.
HTTP: 웹 상의 데이터 전송을 위한 애플리케이션 계층 프로토콜. 요청/응답 모델, 무상태성, 다양한 요청 메서드를 제공하며, 주로 TCP 위에서 작동
HTTPS: HTTP에 SSL/TLS를 추가하여 보안을 강화한 프로토콜