HTTP 프로토콜이란
웹에서 이루어지는 통신에 사용되는 네트워크 프로토콜. TCP기반 소켓을 기반으로 구현된다.
프로토콜 구조
HTTP 프로토콜에서 통신은 클라이언트 측이 요청(Request)을 보내면 서버가 그에 대한 응답(Response)을 보내 통신하는 방식을 사용한다. 요청과 응답은 CRLF(\r\n)를 사용해 개행을 구분한다.
Request
Request의 구조는 Startline, Header, Body로 나뉘어져 있다.
- Start line
- ex.) GET / HTTP/1.1
- 메서드, 경로, HTTP 프로토콜 버전이 포함된다.
- Header
- Connection, Accept, Date등의 추가 정보가 포함되어 있다.
- Body: POST 메서드를 사용할 때 추가 정보를 담을 수 있다.
GET / HTTP/1.1
Accept: text/plain
Connection: close
Request Method
Request를 보낼 때 start line에서 Method를 사용해 요청을 보낸다. 종류는 다음과 같이 있지만, 주로 쓰이는 것은 GET과 POST이다.
- GET: 리소스를 요청하는 기본적인 메서드. 리소스를 URL에서 query형태로 요청하므로 Body가 필요하지 않다.
- POST: 리소스를 요청하는 메서드. GET과 달리 URL에 표현하지 않고, Body에서 리소스를 요청한다.
Request Header
- Accept: 원하는 타입의 데이터의 우선순위
- ex.) text/html, text/plain, image/jpeg, ...
- ex.) text/*, */*
- Connection: 연결 유지(keep-alive)에 대한 옵션
- Date: 요청을 생성한 시간
Response
- Status line
- HTTP 프로토콜 버전, 상태 코드, 상태 메세지가 포함된다.
- Header
- Content type, content length 등, 응답에 대한 추가 정보가 포함되어 있다.
- Body
- 요청에 대한 응답의 컨텐츠 데이터가 들어간다.
HTTP/1.1 200 OK
Content-Type: text/plain
Content-Length: 13
Hello, World!
Response Header
- Content-Type: 응답 데이터에 대한 데이터 타입
- Content-Length: 응답 데이터에 대한 길이
- Date: 응답을 생성한 시간
URL 구조
URL의 구조는 기본적으로 다음과 같이 프로토콜, 호스트, 포트, 경로로 이루어져 있다.
${프로토콜(https, https)}://${호스트}:${포트(기본80)}/${경로}
브라우저에서 경로를 지정해 입력해보면 GET이나 POST를 사용해 Request를 지정된 서버로 송신하게 된다.
GET 같은 경우 경로에 ?변수=값 과 같은 형태로 query를 추가하는 것도 가능하다.
'network' 카테고리의 다른 글
[Network] 차세대 IO 모델 (0) | 2024.09.11 |
---|---|
[Network] 02. IOCP 실습해보기 (1) | 2023.11.03 |
[Network] 01. IOCP란 무엇일까? (2) | 2023.10.30 |