HTTP 메소드, Request target, HTTP version이 있다
GET /search HTTP/2.0
HTTP 메소드 : 요청의 의도를 담고 있는 GET(존재하는 자원에 대한 요청),POST(새로운 자원생성),PUT(존재하는 자원에 대한 변경),DELETE(존재하는 자원에 대한 삭제) 등이 있다.
Reauest target: HTTP가 전송되는 목표 주소
HTTP version : version에 따라 메시지 구조나 데이터가 다를수 있어서 version을 명시한다.
HTTP Request 그 자체에 대한 정보를 담고 있다. key: value 형태로 이루어져 있다.
Request, Respone에만 있는 Header 외에 공통 Header도 존재한다.
Host : 요청하려는 서버 호스트 이름과 포트번호
User-agent : 클라이언트 프로그램 정보. 이것을 통해 서버는 클라이언트 프로그램에 맞는 데이터를 보내 줄수 있다.
Referer : 바로 직전에 머물렀던 웹 링크 주소
Accept : 클라이언트가 처리 가능한 미디어 타입종류 나열
If-Modified-Since : 여기에 쓰여진 시간 이후로 변경된 리소스 취득. 페이지가 수정되었으면 최신 페이지로 교체한다.
Authorization : 인증 토큰을 서버로 보낼 때 쓰이는 Header
Origin : 서버로 Post 요청을 보낼 때 요청이 어느 주소에 시작되었는지 나타내는 값. 이값으로 요청을 보낸 주소와 받는 주소가 다르면 CORS(Cross-Origin Resource Sharing) 에러가 발생한다.
Cookie : 쿠키의 값이 key-value로 표현된다.
헤더의 끝을 식별하기위해서 생긴 빈 줄
HTTP 메소드, Request target, HTTP version이 있으며 Request와 비슷하다.
Location : 301, 302 상태코드일 때만 볼 수 있는 Header로 서버의 응답이 다른곳에 있다고 알려주면서 해당 위치(URL)를 지정한다.
Server : 웹서버의 종류
Age : max-age 시간내에서 얼마나 흘렀는지 초 단위로 알려주는 값
Referrer-policy : 서버 referrer 정책을 알려주는 값 ex)unsafe-url, string-origin
WWW-Authenticate : 사용자 인증이 필요한 자원을 요구할 시 ,서버가 제공하는 인증방식
Proxy-Authenticate : 요청한 서버가 프록시 서버인 경우 유저 인증을 위한 값
헤더의 끝을 식별하기위해서 생긴 빈 줄
요청과 응답에 모두 사용되는 헤더이다.
Date : 메시지가 만들어진 시작. 자동으로 생성됨
Connection : 클라이언트와 서버 간 연결에 대한 옵션 설정 ex)keep-Alive
Cache-Control : 캐시 제어
- no-store : 캐시 저장하지 않음
- no-cache: 모든 캐시를 쓰기 전에 해당캐시를 사용해도 되는지 확인할 것이다.
- must-revalidate: 만료된 캐시만 서버에서 확인한다
- public: 공유 캐시에 저장해도 된다.
- private: '브라우저' 같은 특정 사용자 환경에만 저장한다.
Content-Length : 메시지의 본문 크기를 바이트 단위로 표시. 메시지 크기에 따라서 자동으로 생성
Content-Type : 컨텐츠의 타입과 문자열 인코딩을 명시
Content-Language : 사용자의 언어를 뜻한다.
Content-Encoding : 컨텐츠가 압축된 방식. 압축된 컨텐츠를 보내면 브라우저가 해제해서 사용한다.
만약 코드가 어떤 내용을 뜻하는지 기억이 안날때 https://http.cat/(번호) 를 입력해서 들어가면 귀여운 고양이 사진과 함께 무슨 상태인지를 알려준다.
프로세스가 네트워크로 내보내거나 데이터를 받기위한 실제적인 창구역할을 수행한다. 프로세스가 데이터를 보내거나 받기 위해서는 반드시 소켓을 열어서 소켓에 데이터를 써보내거나 소켓으로부터 데이터를 읽어들여야 한다.
프로토콜 : 어떤 시스템이 다른 시스템과 통신을 원활하게 수용하도록 해주는 통신 규약
IP : 컴퓨터에 부여된 고유의 식별 주소
PORT : 네트워크 상에서 통신하기 위해서 호스트 내부적으로 프로세스가 할당받아야하는 고유한 숫자. 컴퓨터 내에서 프로그램을 식별하는 번호이다.
서버
연결 요청이 오면 클라이언트 소켓을 생성하여 통신이 가능하게 한다.
클라이언트