티스토리 뷰
HTTP
HTTP는 HyperText Transfer Protocol로 HTML과 같은 문서를 전송하기 위한 프로토콜이다. 프로토콜이라 함은 일종의 규약이다. 웹 서버와 웹 브라우저가 데이터를 주고받기 위해 생긴 약속이다. 요청을 하는 클라이언트는 HTTP message 양식에 맞게 요청을 보내고, 응답을 하는 서버도 HTTP message 양식에 맞게 응답을 한다.
무상태성 stateless
무상태성이다. HTTP는 상태를 가지지 않는다. 이것이 HTTP의 가장 큰 특징이다. 사용자가 장바구니에 상품을 추가할 때, HTTP 요청을 보내고 적절한 응답과 함께 사용자가 원하는 작업이 완료될 것이다. 그러나 HTTP는 통신 규약일 뿐이므로, 장바구니에 저장을 했는지 저장이 안되어있는지 상태를 가지지 않는다. 상태를 확인하기 위해서 쿠키, 세션, API 등을 이용한다.
HTTP message
HTTP message는 클라이언트와 서버 사이에 데이터가 교환되는 방식이다.
HTTP message는 구성이 정해져있고, 개발자가 일일이 작성하지 않아도 된다. 필요한 정보만 입력하면 자동으로 양식이 완성되어 전송된다.
start line(또는 status line)과 HTTP headers를 합해서 head, overhead라고 부르고 페이로드(payload, 관심사. 여기서는 body에 담기는 실제 관심있는 데이터)가 body이다.
HTTP message는 HTTP request와 HTTP response, 두가지 유형이 있다.
HTTP request
클라이언트가 서버에게 보내는 HTTP message이다.
start line
start line에는 세 가지 요소가 있다. HTTP메서드, 요청 대상, HTTP버전이다.
1. HTTP메서드는 수행할 작업(GET, PUT, POST 등)이나 방식(HEAD or OPTIONS)이 온다.
2. 요청 대상은 URL이나 URI, 경로 등이 오는데 HTTP메서드에 따라 형식이 다르다.
- origin 형식 : '?'와 쿼리 문자열이 붙는 절대 경로입니다. GET, POST, HEAD, OPTIONS 등의 method와 함께 사용한다. POST / HTTP 1.1
GET /background.png HTTP/1.0
HEAD /test.html?query=alibaba HTTP/1.1
OPTIONS /anypage.html HTTP/1.0 - absolute 형식 : 완전한 URL 형식으로, 프록시에 연결하는 경우 대부분 GET method와 함께 사용한다.
GET http://developer.mozilla.org/en-US/docs/Web/HTTP/Messages HTTP/1.1 - authority 형식 : 도메인 이름과 포트 번호로 이루어진 URL의 일부분. HTTP 터널을 구축하는 경우, CONNECT와 함께 사용할 수 있다.
CONNECT developer.mozilla.org:80 HTTP/1.1 - asterisk 형식 : OPTIONS와 함께 별표(*) 하나로 서버 전체를 표현한다.
OPTIONS * HTTP/1.1
3. HTTP버전에 따라 HTTP message 형식이 달라진다. 따라서 start line에 HTTP버전을 기입한다.
headers
- Request headers : fetch를 통해 가져올 리소스나 클라이언트 자체에 대한 자세한 정보를 포함하는 헤더이다. User-Agent, Accept-Type, Accept-Language와 같은 헤더는 요청을 보다 구체화한다. Referer처럼 컨텍스트를 제공하거나 If-None과 같이 조건에 따라 제약을 추가할 수 있다.
- General headers : 메시지 전체에 적용되는 헤더로, body를 통해 전송되는 데이터와는 관련이 없는 헤더이다.
- Representation headers : 이전에는 Entity headers로 불렀으며, body에 담긴 리소스의 정보(콘텐츠 길이, MIME 타입 등)를 포함하는 헤더이다.
body
모든 요청에 body가 필요한 것은 아니다. POST와 PUT의 경우에 데이터를 업데이트하기 위해 body를 사용한다. GET과 같은 요청은 body를 사용하지 않는다.
HTTP response
서버가 응답하는 HTTP message이다.
status line
status line에는 세 가지 요소가 있다. HTTP버전, 응답 상태코드, 응답 상태코드에 대한 설명이다.
HTTP/1.1 404 Not Found
headers
- Response headers : 위치 또는 서버 자체에 대한 정보(이름, 버전 등)와 같이 응답에 대한 부가적인 정보를 갖는 헤더로, Vary, Accept-Ranges와 같이 상태 줄에 넣기에는 공간이 부족했던 추가 정보를 제공한다.
- Representation headers : 이전에는 Entity headers로 불렀으며, body에 담긴 리소스의 정보(콘텐츠 길이, MIME 타입 등)를 포함하는 헤더이다.
- General headers : HTTP request와 마찬가지로 메시지 전체에 적용되는 헤더로, body를 통해 전송되는 데이터와는 관련이 없는 헤더이다.
body
모든 응답에 body가 필요하지는 않다. 201, 204와 같은 상태 코드를 가지는 응답에는 본문이 필요하지 않다.
'개발 > CS, Network' 카테고리의 다른 글
Session(세션) (0) | 2023.05.06 |
---|---|
Cookie(쿠키)란, 쿠키 옵션 종류 (0) | 2023.05.04 |
SOP와 CORS (0) | 2023.04.04 |
REST API, REST 성숙도 모델 (0) | 2023.03.29 |
URL과 URI / IP와 PORT / 도메인과 DNS (0) | 2023.03.29 |
- Total
- Today
- Yesterday
- 공릉 맛집
- 티스토리검색
- 롯데월드 보조배터리
- 티스토리
- 공릉 밀크티
- 춘천닭갈비
- 공릉 이자카야
- 공릉 카페
- sitemap
- 이수 맛집
- 을지로맛집
- 공릉맛집
- Til
- 롯데월드 키오스크
- 신불당 술집
- solo project
- 구글서치콘솔
- 깃허브 데스크탑 로그아웃
- 태릉삼겹살
- 태릉 술집
- 홍천 삼겹살
- 태릉맛집
- 태릉 꼬치
- 공릉 꼬치
- 공릉 술집
- 태릉 이자카야
- 롯데월드 매직패스 프리미엄
- 춘천맛집
- 맥 깃허브 데스크탑
- 회고
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |