프론트엔드 개발
HTTP overview 본문
HTTP(Hyper Text Transfer Protocol)란
서버와 클라이언트가 인터넷 상에서 HTML 문서를 주고받을 수 있게 하기 위해 만든 protocol(통신 규약)입니다.
클라이언트
이 역할은 주로 브라우저에 의해 수행됩니다
웹 페이지는 하이퍼텍스트 문서로, 표시된 텍스트의 일부는 사용자가 웹을 돌아다닐 수 있도록 새로운 웹 페이지를 가져오기 위해 실행될 수 있는 링크임을 뜻합니다.
브라우저는 HTTP 요청 내에서 지시 사항들을 변환하고 HTTP 응답을 해석하여 사용자에게 명확한 응답을 표시합니다.
웹 서버
통신 채널의 반대편에는 클라이언트에 의한 요청에 대한 문서를 제공하는 서버가 존재합니다.
HTTP 통신방식
- HTTP통신은 클라이언트가 데이터를 요청하면, 서버는 그 요청을 처리하여 다시 클라이언트에게 응답하는 형식을 따릅니다.
- HTTP는 상태를 저장하지 않습니다(Stateless). 서버가 두 요청 간에 어떠한 상태도 유지하지 않음을 의미합니다.
- 동일한 상태를 공유하기 위해 최근에는 쿠키, 세션, 로컬 스토리지 등을 사용합니다.
HTTP 흐름
클라이언트가 서버와 통신하고자 할 때, 다음 단계의 과정을 수행합니다:
1. TCP 연결을 엽니다. TCP 연결은 요청을 보내거나 응답을 받는데 사용됩니다. 클라이언트는 새 연결을 열거나, 기존 연결을 재사용하거나, 서버에 대한 여러 TCP 연결을 열 수 있습니다.
2. HTTP 메시지를 전송합니다
3.. 서버에 의해 전송된 응답을 읽어들입니다:
4. 연결을 닫거나 다른 요청들을 위해 재사용합니다.
HTTP Request 구조
HTTP request는 크게 3가지(request line, headers, body)로 구성됩니다.
request line
- HTTP Method
해당 request가 의도한 action을 정의하는 부분
HTTP Methods에는 GET, POST, PUT, DELETE, OPTIONS 등 - Request target
해당 request가 전송되는 목표 uri - HTTP Version
HTTP 프로토콜 버전. 버전에는 1.0, 1.1, 2.0 등이 있다.
headers
해당 request에 대한 추가 정보(addtional information)를 담고 있는 부분
Key:Value 값으로 구성
Headers도 크게 3 부분으로 나뉨(general headers, request headers, entity headers)
자주 사용되는 header 정보에는 다음과 같은 것들이 있습니다.
- Host
가져오려는 리소스의 경로. 여기서는 developer.mozilla.org - User-Agent
요청을 보내는 클라이언트의 대한 정보, ex) 웹브라우저에 대한 정보 - Accept
해당 요청이 받을 수 있는 응답(response) 타입 - Connection
해당 요청이 끝난 후에 클라이언트와 서버가 계속해서 네트워크 컨넥션을 유지할 것인지 아니면 끊을 것인지에 대해 지시하는 부분 - Content-Type
해당 요청이 보내는 메시지 body의 타입, ex) JSON을 보내면 application/json - Content-Length:
메세지 body의 길이
body
해당 reqeust의 실제 메시지/내용
GET 방식의 request들은 대부분 body가 없는 경우가 많다.
HTTP Response 구조
Response도 request와 마찬가지로 크게 3가지(status line, headers, body) 구성되어 있습니다.
status line
- HTTP Version
HTTP 프로토콜 버전 - Status Code
응답 상태를 나타내는 코드, ex) 200 - Status messagge
응답 상태를 간략하게 설명해주는 부분, ex) "OK"
headers
Response의 headers와 비슷한 형식
body
Response의 body와 비슷한 형식.
데이터를 전송할 필요가 없을 경우 request의 body가 비어있게 됩니다.
HTTP Methods
- GET
데이터를 서버에게 읽기 위해 요청하는데 사용하는 Method
- POST
데이터를 생성/수정/삭제 할때 사용되는 Method.
데이터를 생성 및 수정 할때 사용하기 때문에, requst body에 데이터를 같이 보내기도 합니다.
- OPTIONS
주로 요청 URI에서 사용할 수 있는 Method를 받아올때 사용하는 Method
예를 들어, /update uri에서 어떤 method를 요청 가능한가를 알고 싶으면 먼저 OPTIONS 요청을 사용해서 확인하게 됩니다.
- PUT
POST와 비슷하게, 데이터를 생성 할때 사용되는 Method
- DELETE
특정 데이터를 서버에서 삭제 요청을 보낼때 쓰이는 Method
출처
https://developer.mozilla.org/ko/docs/Web/HTTP/Overview#http_%ED%9D%90%EB%A6%84
'CS > Network' 카테고리의 다른 글
3 Way-Handshake (0) | 2021.01.26 |
---|