본문 바로가기
개인공부

Http 관련 핵심 요약정보

by 리승우 2023. 3. 7.

HTTP란? (HyperText Transfer Protocol)

· 웹 브라우저와 웹 서버 간에 서로 소통하기 위한 통신규약을 의미함

· 서버와 클라이언트가 인터넷상에서 데이터를 주고받기 위한 프로토콜

· TCP/IP 기반으로 되어있음

 

HTTP의 특징

· Connectless (비연결성)

> 클라이언트가 서버에 요청을 보내면 서버가 클라이언트에 요청에 맞는 응답을 보내준 뒤, 바로 연결을 끊는다

 

· Stateless (무상태성)

> 각각의 요청+응답 세트는 독립적으로 진행되며, 통신을 끝낸 뒤 별도로 상태 정보를 유지하지 않는다. 그래서 추후 다음 요청+응답을 진행하여도 이전에 보낸 요청+응답을 서로 알지 못한다

(이를 해결하기 위해 쿠키와 세션같은 상태정보 저장을 이용하여 로그인 정보를 저장하기도 함)

 

· 요청/응답 (Request / Response) 구조로 되어있음

> 클라이언트가 서버 측으로 요청을 보내면 서버에서 응답을 해주는 구조로 되어있음

> 요청과 응답은 한 세트로 독립적으로 구성되어있으며, 요청과 응답이 완료되면 해당 통신은 종료됨

 

HTTP 메세지 형식

· 요청메시지 : HTTP Request Message = Request Header + 빈 줄 + Request Body

· 응답메시지 : HTTP Response Message = Response Header + 빈 줄 + Response Body

> HTTP 요청 메시지 형식

· Header
> 제일 처음에 와야하는 첫 번째 줄 (start-line)
> 요청 메서드 + 요청 URI + HTTP 프로토콜 버전
ex) GET /background.png HTTP/1.0
ex) POST / HTTP 1.1

 

· 두 번째 줄 ~ (http headers)
> 해당 request에 대한 추가 정보를 담고 있음 (Key : Value 형태로 되어있음)

> 자주 사용되는 header 정보는 아래와 같음

  • HOST : 요청하는 호스트에 대한 호스트명 및 포트번호 (ex) www.google.co.kr
  • User-Agent : 요청을 보내는 클라이언트 소프트웨어(브라우저,OS) 명칭 및 버전 정보 (ex) 웹브라우저에 대한 정보
  • Accept : 해당 요청이 받을 수 있는 응답(response) 타입
  • Connection : 해당 요청이 끝난후에 클라이언트와 서버가 계속해서 네트워크 커네션을 유지할 것인지 아니면 끊을 것인지에 대한 지시
  • Content-Type : 해당 요청이 보내는 메세지 body의 타입 (ex) JSON을 보내면 application/json
  • Content-Length: 메시지 body의 길이

 

· 빈 줄 (empty-line)
요청에 대한 모든 메타 정보가 전송되었음을 알린다.

 

· Body

> 해당 request와 관련된 실제 메세지/내용

> POST, PUT의 경우에만 존재 (GET 요청은 대부분 body가 없음)

> HTTP 응답 메시지 형식

· Header

> HTTP 프로토콜 버전 + 응답 코드 + 응답 메시지

ex) HTTP/1.1 404 Not Found

 

· 두 번째 줄 ~ (http headers)

> 해당 response에 대한 추가 정보를 담고 있음 (Key : Value 형태로 되어있음)

 

· 빈 줄 (empty-line)
요청에 대한 모든 메타 정보가 전송되었음을 알린다.

 

· Body

> 실제 응답 리소스 데이터

 

> 위 통신을 통해서 아래와 같은 구조가 도출된다!

> (추가) 해당 통신의 이동경로는?

· TCP/IP와 HTTP의 관계

> HTTP는 인터넷 표준 프로토콜인 TCP/IP를 따른다

> TCP/IP를 통하여 여러 네트워크를 연결해서 데이터를 주고받을 수 있게된다

> TCP/IP는 아래와 같이 4계층으로 분리되어있다

  • 애플리케이션 (응용) 계층
  • 전송 계층
  • 인터넷 계층
  • 네트워크 엑세스 (링크) 계층

 

· 만약 HTTP를 통해 웹 서버에 있는 데이터를 요청할 시 TCP/IP를 통한 통신 과정은?

1. 애플리케이션(응용계층)에서 HTTP Request 데이터가 들어감

2. 전송계층(TCP)에서 응용계층에서 받은 데이터를 통신하기 용이하게 조각내어 안내 번호와 출발지, 목적지포트 번호(TCP 패킷)을 붙여 인터넷 계층에 전달

3. 인터넷 계층에서 데이터에 출발지, 목적지 IP주소를 추가하고 네트워크 엑세스(링크계층)로 전달

4. 링크 계층에서 수신지 MAC주소 및 이더넷 프레임 추가

5. 네트워크를 통해 송신할 준비 완료

6. 수신측 서버는 링크 계층에서 데이터 수신 후 순서대로 위 계층에 전달하여 애플리케이션(응용계층)까지 도달

7. 도달 후 클라이언트가 발신한 HTTP Request를 수신할 수 있음

 

네이버 접속 시나리오

  1. 웹 브라우저에 www.naver.com 입력.
  2. DNS로 네이버 서버 IP주소 할당.
  3. 응용 계층(L4)에서 메세지 데이터 패킹(HTTP 메시지).
  4. 전송 계층(L3)에서 PORT정보(출발지, 목적지), 전송제어 정보, 순서 정보, 검증 정보 패킹 (TCP).
  5. 인터넷 계층(L2)에서 IP정보(출발지, 목적지) 패킹
  6. 네트워크 엑세스(L1) 계층에서 MAC주소 패킹
  7. 게이트웨이를 통해 인터넷망 접속.
  8. 라우터를 통해 목적지(네이버 서버)를 찾아 연결.
  9. 네이버 서버에 도착하면 패킷을 하나 하나 까면서 목적 포트에 메세지 데이터 전달하여 다시 응답.

 

 

 

참조링크

https://gmlwjd9405.github.io/2019/01/28/http-header-types.html

 

[Network] HTTP 헤더의 종류 및 항목 - Heee's Development Blog

Step by step goes a long way.

gmlwjd9405.github.io

 

https://inpa.tistory.com/entry/WEB-%F0%9F%8C%90-TCP-IP-%EC%A0%95%EB%A6%AC-%F0%9F%91%AB%F0%9F%8F%BD-TCP-IP-4%EA%B3%84%EC%B8%B5

 

[NW] 🌐 TCP / IP 4계층🗼 - 핵심 총정리

TCP / IP 개념 정리 (선수 지식) IP (인터넷 프로토콜) 지정한 IP 주소에 데이터의 조각들을 패킷(Packet)이라는 통신 단위로 최대한 빨리 목적지로 보내는 역할. 조각들의 순서가 뒤바뀌거나 일부가

inpa.tistory.com

 

댓글