CS12. HTTP 분석기 미션 설명은 크롱과 함께!
CS스터디에서 네트워크 발표도 했었는데. . HTTP 동작 원리는 전혀 알지 못해서 생활코딩 영상을 보고 정리함 🐰..
클라이언트 client
: 서버에게 요청 request 하는 컴퓨터.
서버 server
: 클라이언트로부터 요청을 받아 응답 response 하는 컴퓨터.
: HTTP는 request와 response로 구성된 메시지, 서로가 알아들을 수 있는 서로의 약속.
HTTP는 하이퍼텍스트가 다니는 도로라고 할 수 있음.
*구글 크롬 - 개발자 도구 - Network 탭에 들어가 각 파일을 클릭하면 HTTP 요청 내역을 알 수 있음.
웹 브라우저는 사용자가 요청한 정보를 웹 서버에게 대신 물어봐줌. request header
웹 서버는 자신이 가지고 있는 정보를 보내주면서 응답 헤더를 만듦. response header
웹 브라우저는 웹 서버로부터 응답받은 정보를 화면에 그려줌.
Request Line
: Request Message의 가장 첫 줄. (== 요청 행)
Request Headers
: Request Line 과 Request Message Body 사이 부분에 해당.
(Request Headers 와 Request Body 사이에는 한 줄이 띄워져 구분되어 있음)
Request Message Header
: Request Line 과 Request Headers를 묶어 부르는 부분.
Request Body (또는 페이로드)
: 클라이언트가 요청 시 서버 쪽으로 전송해야 할 정보가 있을 때, Request Body에 넣어서 보냄.
GET /doc/test.html HTTP/1.1
GET
웹 서버-웹 브라우저 간의 통신 방식을 나타내는 부분(method).
GET은 데이터를 웹 서버로부터 가져올 때 사용하는 방식.
/doc/test.html
웹 브라우저가 웹 서버에게 요청하는 정보가 무엇인지 나타내는 부분.
HTTP/1.1
웹 브라우저가 현재 사용하고 있거나 사용할 수 있는 프로토콜과 그 버전을 나타내는 부분.
(웹 서버가 해당 HTTP버전을 기준으로 자원을 보내주도록 함)
Host
(필수)
User Agent
Accept-Encoding
If-Modified-Since
Status 또는 Status Line
서버가 응답했을 때 정상 / 비정상 응답인지,
비정상 응답이라면 어떤 오류가 발생했는지 나타내는 부분.
version
: HTTP 버전에 대한 정보
status code
: 서버의 응답 결과를 나타내는 코드
1) 1xx
: Information
100번대 코드는 어떠한 정보를 의미함.
2) 2xx
: Successes
200번대 코드는 서버가 성공적으로 응답했음을 의미함.
3) 3xx
: Redirection
300번대 코드는 서버가 요청을 redirection 했음을 의미함.
4) 4xx
: Client Error
400번대 코드는 client errror를 의미함.
*404 Not Found
: 클라이언트가 서버에 없는 데이터를 요청했을 때 발생.
5) 5xx
: Server Error
500번대 코드는 서버 측 에러를 의미함.
*500 Internal Server Error
: 서버 내부적인 문제로 응답할 수 없을 때 발생.
phrase
: status code
를 인간이 이해할 수 있게 풀어 쓴 부분.
Response Headers
*1.Status Line과 2.Response Header를 묶어 부르는 부분.
Status Line
1) HTTP/1.1
: version
을 나타내는 부분.
2) 200
: status code
를 나타내는 부분.
3) OK
: phrase
를 나타내는 부분.
Response Headers
1) Content-Type
: 웹 서버가 응답한 컨텐츠에 대한 정보를 나타내는 부분.
웹 브라우저는 이 정보를 기준으로 화면에 해당 응답을 어떻게 나타낼지 결정함.
*Content-Type : text/html
은 해당 응답이 HTML로 된 text 파일임을 의미
2) Content-Length
: 웹 서버가 응답한 컨텐츠의 전체 길이를 나타내는 부분. (단위는 byte)
3) Content-Encoding
: 해당 컨텐츠가 압축된 방식을 나타내는 부분.
웹 브라우저는 이 정보를 기준으로 컨텐츠 압축을 해제해 화면에 나타냄.
4) Last-Modified
: 해당 컨텐츠가 마지막으로 수정된 날짜를 나타내는 부분.
https
(SSL
), cache
, cookie
와 web storage
, proxy
(중개 서버), 네트워크 모니터링 도구(크롬 개발자도구 또는 wireshark)