HTTP ( Hyper Text Transfer Protocol ) 란?

W3 (World Wide Web)에서 데이터를 주고 받을 수 있는 애플리케이션 단의 통신 규약(프로토콜)이다.

보편적으로 HTML (Hyper Text Markup Language)[각주:1]문서를 주고 받으며, TCP를 이용해 통신한다. 

 

HTTP /3 부터는 UDP를 사용하며 80번 포트를 사용한다.

 

HTTP는 클라이언트와 서버 사이에서 Request와 Response를 주고 받는 형식으로 통신하고,

HTTP로 전달되는 자료는 http:// 로 프로토콜을 선언 한 뒤, 해당 url를 붙여서 조회할 수 있다.

 

HTTP는 상태값을 저장하지 않는다 (Stateless). 각 요청과 응답은 독립적인 형태이다.

HTTP통신에서 상태 값을 저장하기 위해 쿠키나 세션을 사용한다.

 

HTTP가 통신하는 과정

1. TCP 연결을 연다.

 : 응답을 주고 받는 것에 사용한다.

 

2. HTTP 메세지를 전송한다. 

  : HTTP /2 이후로는 메세지가 프레임[각주:2] 속으로 캡슐화되어서 개발자가 직접 읽을 수 없다

 

3. 서버가 주는 응답을 읽어들인다. 

 

4. 연결을 닫거나, 다른 요청을 위해 연결을 재사용한다.

 

HTTP 요청(Request) 메시지 구조

헤더 :        바디 :     

 

start-line :

HTTP 메서드[각주:3]

URL[각주:4]이나 프로토콜, 포트, 도메인의 절대경로 (포맷은 HTTP메소드에 따라 달라진다)

header :

User-Agent, Accept-Type,Accept-Language,Referer 등...

blank-line :   

body (document) :

일반적으로 데이터를 가져오는 요청에는 값을 넣지 않지만, POST나 PUT과 같은 메소드에서는 값이 들어간다

 

 

HTTP 응답(Response) 메시지 구조

헤더 :        바디 :     

 

status-line :

프로토콜 버전[각주:5], 상태 코드, 상태 텍스트

header :

User-Agent, Accept-Type,Accept-Language,Referer 등...

blank-line :   

body (document) :

서버에서 반환한 데이터

 

HTTP 응답의 상태 코드

보통 200 대는 정상적 반환, 300대 리다이렉션, 400대 클라이언트 에러, 500대 서버 에러로 나뉘어진다.

상태코드는 다양하며 여기서는 몇 가지만 정리해보려고 한다.

 

403 Forbidden : 권한으로인한 거절 (로그인 실패시와 같은...)

404 Not Found : 서버가 리소스를 찾을 수 없을 때. 보통 화면 매핑에 실수가 있을 때 자주 보인다

 

500 Internal Server Error : 서버에서 예외가 발생했을 때

(스프링에선 서버 에러 로그가 노출되므로 가급적 이 페이지가 안 떨어지게 예외 처리를 잘 해야한다)

505 HTTP Version Not Supported : 요청으로 들어온 HTTP 버전을 서버가 지원하지 않음

 

418 I'm a teapot 이라는 만우절 농담에서 유래한 상태 코드도 있다.😂

 

 

 

 

참고문헌

위키백과 'HTTP' https://ko.wikipedia.org/wiki/HTTP

 

HTTP - 위키백과, 우리 모두의 백과사전

 

ko.wikipedia.org

mdn web docs 'HTTP 개요' https://developer.mozilla.org/ko/docs/Web/HTTP/Overview

 

HTTP 개요 - HTTP | MDN

HTTP는 HTML 문서와 같은 리소스들을 가져올 수 있도록 해주는 프로토콜입니다. HTTP는 웹에서 이루어지는 모든 데이터 교환의 기초이며, 클라이언트-서버 프로토콜이기도 합니다. 클라이언트-서버

developer.mozilla.org

mdn web docs 'HTTP 메시지' https://developer.mozilla.org/ko/docs/Web/HTTP/Messages

 

HTTP 메시지 - HTTP | MDN

HTTP 메시지는 서버와 클라이언트 간에 데이터가 교환되는 방식입니다. 메시지 타입은 두 가지가 있습니다. 요청(request)은 클라이언트가 서버로 전달해서 서버의 액션이 일어나게끔 하는 메시지

developer.mozilla.org

 

  1. 웹 페이지에 주로 쓰이는 마크업 언어 [본문으로]
  2. 이진 구조로 되어있다. [본문으로]
  3. GET,POST,PUT,DELETE...등 [본문으로]
  4. uniform resource locator [본문으로]
  5. 일반적으로 HTTP/1.1이다 [본문으로]

+ Recent posts