HTTP ( Hyper Text Transfer Protocol ) 란?
W3 (World Wide Web)에서 데이터를 주고 받을 수 있는 애플리케이션 단의 통신 규약(프로토콜)이다.
보편적으로 HTML (Hyper Text Markup Language)문서를 주고 받으며, TCP를 이용해 통신한다. 1
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 :
URL이나 프로토콜, 포트, 도메인의 절대경로 (포맷은 HTTP메소드에 따라 달라진다) 4
header :
User-Agent, Accept-Type,Accept-Language,Referer 등...
blank-line :
body (document) :
일반적으로 데이터를 가져오는 요청에는 값을 넣지 않지만, POST나 PUT과 같은 메소드에서는 값이 들어간다
HTTP 응답(Response) 메시지 구조
헤더 : 바디 :
status-line :
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
'Infra > 네트워크' 카테고리의 다른 글
네트워크 기초 : 서브넷 (0) | 2022.07.11 |
---|---|
네트워크 기초 : LAN과 WAN 그리고 DMZ (0) | 2022.06.29 |
네트워크 기초 : 회선 교환 방식과 패킷 교환 방식 (0) | 2022.02.20 |