네트워크

HTTP란?

닥치고개돌 2021. 12. 24. 18:01
728x90

HTTP란?

 

HTTP는 OSI 7 계층과 TCP/IP를 기준으로는 애플리케이션 레이어 속하는 프로토콜이다. 애플리케이션 레이어는 데이터의 형식과 절차에 관련된 프로토콜이 속하는 계층.

쉽게 생각해서, 웹을 기준으로 수많은 클라이언트와 서버가 서로 통신을 하면서 데이터를 주고받게 되는데, 이때 이 데이터를 어떤 형태로 요청하고 보낼지를 결정하는 규약이라고 생각하면 된다.

현대의 웹은 거의 모든 영역이 HTTP 프로토콜을 기반으로 작동하고 있다.

 

 대표적으로는 다음과 같은 특징을 갖고 있습니다

  • Request(요청) & Response(응답)의 형태
  • TCP 위에서 동작
  • stateless: 상태를 기록하지 않음.

 

 

http는 평문을 전달합니다. 즉 어떤 특이한 형태가 아닌 형식이 정해진 문자열을 주고받는다고 생각하면 됩니다.

Request 형식

요청 메시지는 아래의 내용을 포함.

  • 리퀘스트 라인: 메소드, URI, 버전
  • 메시지 헤더: 웹 브라우저의 종류와 버전, 대응하는 데이터 형식 등과 같은 필요 정보 (개행을 하며 한 줄씩 작성)
  • (공백 한 줄)
  • 메시지 바디: 메소드에 따라 바디에 내용을 넣을 수 있는 경우, 이곳에 추가적인 정보를 기입하여 전달.

 

Response 형식

응답의 형식은 아래의 것들을 포함.

  • 리스폰스 라인/status line: 버전, 상태 코드, 설명문
  • 메시지 헤더
  • (공백 한 줄)
  • 메시지 바디: 요청에 대한 자료가 담겨있으며 웹에서 html 파일,json,이미지가 가는 경우가 많다.

 

 

TCP와의 연결고리

HTTP에서는 전송 계층 프로토콜로 TCP를 사용하고 네트워크 계층 프로토콜로 IP를 사용하는데 이를 합쳐 TCP/IP라고 부른다.

TCP는 데이터의 전송과 관련된 룰을 담당한다.TCP는 웹에서 데이터를 서로 주고 받을 때 안전한 소통을 보장하기 위한 방법이다.

http2는 TCP 방식으로 HTTP 메시지를 주고 받는다. 쉽게 말해 메시지의 형식에 대한 룰은 http, 메시지의 전송 방식은 tcp 정책.

HTTP3도 있는데, 3부터는 속도를 위해 UDP를 사용한다.

 

 

Stateless

각각의 요청, 응답의 독립성 보장. 직전에 같은 IP주소에서 똑같은 주소로 요청을 보냈든 말든 다음 요청은 이에 대한 내용을 전혀 모른다는 의미이다. 요청은 그때그때 필요한 정보를 전달하고 응답을 받아올 뿐, 응답의 히스토리에 대해서 HTTP 차원에선 관리할 필요가 없기 때문에 룰이 간단해지는 것이다.

단, HTTP에서 상태를 관리하지 않기때문에, 브라우저나 서버는 여러 가지 방식으로 상태를 저장해야한다. 예) 브라우저의 쿠키, 서버의 세션

728x90

'네트워크' 카테고리의 다른 글

각종 타임아웃(timeout)설명과 설정 팁  (0) 2024.02.04
AJAX란?  (0) 2022.04.04
ip란?  (0) 2021.12.27