본문 바로가기
CS

HTTP의 구조

by LasBe 2022. 3. 5.
반응형

⚡️HTTP(HyperText Transfer Protocol)


HTTP는 HTML과 같은 하이퍼미디어 문서를 전송하기위한 프로토콜로

클라이언트와 서버 간 거의 모든 종류의 데이터를 주고 받는 통신에 사용됩니다.

 

HTTP의 주요한 특징은 무상태(Stateless) 프로토콜이라는 것인데,

말 그대로 상태를 저장하지 않아 이전 요청, 응답에 대해 알 수 없기 때문에

유지할 데이터가 필요하다면 쿠키와 세션을 이용할 수 있다.

 

 

 

⚡️HTTP의 구조


1. HTTP 구조 확인

curl -v www.naver.com

우선 HTTP 구조를 확인하기 위해 터미널에서 curl -v [URL] 커맨드로 정보를 띄워보겠습니다.

 

2.  HTTP Request 구조

> GET / HTTP/1.1
> Host: www.naver.com
> User-Agent: curl/7.77.0
> Accept: */*
>

HTTP request 메세지는 다음과 같이 구성됩니다.

  • start line
  • header
  • body

1) start line

> GET / HTTP/1.1

request에 대한 추가 정보를 담고 있습니다.

 

> Method type / Request Target / Http Version

순서대로 정보를 표시하며

제가 요청한 정보에는 Uri 정보가 없기 때문에 Request Target이 생략되어 있습니다.

 

2) header

> Host: www.naver.com		-> Host URL
> User-Agent: curl/7.77.0	-> 클라이언트 정보
> Accept: */*			-> message body

> Host : 호스트 URL

> User-Agent : 클라이언트 정보

> Accept : 서버에서 해당 타입에 떼이터를 보내달라고 요청하는 헤더

> Authorization : 인증 토큰을 서버로 보낼 때 사용하는 헤더

 

method가 GET 방식이여서 body 부분이 따로 존재하지 않지만

POST 방식으로 보낸다면 body 부분이 존재합니다.

 

 

3. HTTP Response 구조

< HTTP/1.1 302 Moved Temporarily
< Server: NWS
< Date: Fri, 04 Mar 2022 13:32:19 GMT
< Content-Type: text/html
< Transfer-Encoding: chunked
< Connection: keep-alive
< Location: https://www.naver.com/
< Vary: Accept-Encoding,User-Agent
< 
<html> .... </html>

HTTP Response의 구조는 다음과 같이 구성됩니다.

  • start line
  • header
  • empty line
  • message body

 

1) start line

< HTTP/1.1 302 Moved Temporarily

< HTTP Version / Status Code, Status Text

Status Code - 응답코드

Status Text - 응답상태

 

저는 302(임시 이동) 코드가 떴네요.

 

응답코드에 대한 상태는 대략적으로 다음과 같습니다.

  • 1XX : 조건부 응답
  • 2XX : 성공
  • 3XX : 리다이렉션 완료
  • 4XX : 요청 오류
  • 5XX : 서버 오류

 

2) header

< Server: NWS
< Date: Fri, 04 Mar 2022 13:32:19 GMT
< Content-Type: text/html
< Transfer-Encoding: chunked
< Connection: keep-alive
< Location: https://www.naver.com/
< Vary: Accept-Encoding,User-Agent

Response의 header와 동일한 구조를 따르지만, response에서만 사용되는 값들이 존재합니다.

 

응답에 대한 추가 정보들을 담고 있습니다.

 

3) body

<html> .... </html>

요청에 대한 응답 본문을 나타냅니다.

 

request와 같이 데이터를 전송할 필요가 없는 경우 body가 비어있게 됩니다.

반응형

'CS' 카테고리의 다른 글

DNS(Domain Name Server), 네임서버란?  (0) 2022.07.13
전송계층의 프로토콜 TCP vs UDP  (2) 2022.07.07
SSH(Secure Shell Protocol)에 대해  (0) 2022.03.02
기본 자료구조에 대해  (0) 2022.02.20

댓글


오픈 채팅