1. HTTP란?
- 웹페이지를 주고 받기 위해 주로 사용되는 protocol
- text 기반의 protocol이며 Request(요청) -> Response(응답) 구조
- TCP기반이지만 상태를 저장하지(stateless) 않음
2. HTTP packet 구조
- Header: Device끼리 통신할 때 사용하는 주요 옵션 포함
- Body: 통신의 내용 포함
- 가변적인 size를 가짐
- Header는 반드시 존재하지만, Body는 없을 수도 있음
\r\n => Header의 끝
\r\n\r\n => Header와 Body 사이를 나눔
ex) Header1\r\n Header2\r\n\r\n Body
- Request Line: Http method(GET,POST , 등), 요청하는 URI 경로, HTTP protocol version
- Host: 요청하는 목적지 이름 또는 목적지 IP 주소
- User-Agent: 클라이언트 측에서 사용하는 브라우저나 앱의 정보
이 정보로 클라이언트의 브라우저의 호환성 체크 가능
- Accept: 클라이언트가 해석할 수 있고 받길 원하는 리소스의 MIME타입 정보
- Accept-Language: 클라이언트가 이해할 수 있고 선호하는 언어 정보
=> ex) 영어 / 한국어 / 일본어
- Accept-Encoding: 클라이언트가 원하는 리소스의 압축 방식 정보
- Referer: 현제 요청한 페이지 또는 리소스를 요청하기 전에 있던 페이지 또는 사용한 리소스의 정보
- Cookie: 클라이언트 측에서 저장하고 있는 쿠키 정보
- Content-Type: 요청 Body의 MIME 타입 정보
- Content-Length: 요청 Body의 길이 정보
- Status Line: Htttp protocol version, code , 상태 메세지
- Server: 웹 서버의 소프트웨어 및 버전 정보
- Date: 시간 정보
- Content-Type: 응답 Body의 MiME 타입 정보
- Content-Length: 응답 Body의 길이 정보
- Content-Encoding: 응답 Body의 인코딩 방식 정보
- Cache-Control: 캐시 제어하는 방법에 대한 정보
- expires: 캐시가 언제 만료되는지를 나타내는 정보
- Set-Cookie: 서버 측에서 클라이언트에게 전송할 쿠키 정보
- Last-Modified: 응답 리소스의 마지막 수정 시간 정보