CS

HTTP 기초

킹갓홍 2023. 11. 11. 18:13

HTTP란 

HyperText Transfer Protocol의 약자로 웹에서 클라이언트와 서버간의 컨텐츠(HTML/JavaScript/Css/이미지 등)를 주고 받기위해 서로 알아볼 수 있는 메세지이다.

HTML과 같은 Text파일뿐만 아니라 이미지 오디오 동영상과 같은 다양한 멀티미디어 파일을 전송하는 프로토콜이다.

즉, HTTP는 클라이언트의 Request와 서버의 Response를 위한 메세지이다.

 

프로토콜(protcol) : 컴퓨터 네트워크나 통신 시스템에서 통신 간의 규칙이나 규약을 의미한다. 프로토콜은 특정한 통신 형태나 서비스의 표준화된 방법을 정의하며, 이는 효율적이고 정확한 데이터 교환을 가능케 한다.

    ex) TCP/IP(Transmission Control Protocol/ Internet Protocol) : 컴퓨터 간의 통신을 지원하기 위한 핵심 프로토콜

    HTTP(HyperText Transfer Protocol) : 웹 브라우징을 위한 프로토콜
    SMTP(Simple Mail Trasnfer Protocol) : 이메일 전송을 위한 프로토콜

 

웹브라우저의 개발자도구(크롬은 F12)에서는 Network탭을 통해서 웹브라우저와 웹서버가 어떻게 통신하고 있는지 알 수 있다.

실제 크롬 개발자도구 Network탭

Response Headers는 서버가 웹브라우저에게 응답한 정보를 볼 수 있다.

맨 첫줄은 HTTP/1.1 방식으로 200(성공적으로 데이터를 가져왔다!) 반환 이라는 뜻

 

Request Headers는 웹브라우저가 서버에게 요청한 정보를 보여준다.

Get방식을 통해서 1.html을 요청, 내가 사용하는 방법 HTTP/1.1

주소는 localhost:8080 이라는 정보를 보냄  

 

즉, 웹브라우저는 사용자가 요청한 정보를 Request Headers안에 넣어서 웹서버에게 대신 물어보는 역할을 한다. 

HTTP Request Message

Request message 구조
Request Message Header

GET/1.html HTTP/1.1

Get방식, 1.html 정보 요청, HTTP/1.1 버전

 

Host: localhost:8080
요청한 주소를 나타냄

 

User-Agent

웹브라우저의 다른표현이라고 보면 됨(요청하는 브라우저가 어떤 웹브라우저인지 보여줌)
현재 사용자의 운영체제와 버전, CPU정보가 담겨있음(위의 사진은 Mac OS 10_13_5버전 , intel CPU) 
이를 통해, 나중에  어떤 브라우저를 쓰는 사람이 많이 접속하는지 등의 통계를 낼 수 있으며, Bot이 접속하는 경우 차단이 가능하다.

 

Accept-Encoding

웹서버에서 크기가 큰 컨텐츠들은 압축을 통해서 웹브라우저로 보내지게 되는데, 압축을 지원하는 형식을 보여줌

 

If-Modified-Since

서버는 효율성을 위해 요청할 때 마다  데이터를 보내주는 것이 아닌,  If-Modified-Since의 시간 값을 비교해서 최신의 데이터가 업데이트 된 경우에만 보내주게 된다.

 

HTTP Response Message

Response message 구조
Response Message Header

HTTP/1.1 200 OK

HTTP/1.1 방식으로 200(성공적으로 데이터를 가져왔다!) 반환 OK(유저가 이해하기 쉽도록 써준부분)

(status code검색하면 더 많은 정보를 알 수 있다.)

 

Last-Modified
마지막으로 데이터를 보내준 날짜(Request에 있는 If-Modified-Since와 비교해서 업데이트 됐을 때만 데이터를 넘겨줌)

 

Content-Encoding
gzip이라는 형식으로 데이터가 압축됨을 알려줌

 

Content-Length 
컨텐츠의 글자수

 

Content-Type
컨텐츠의 형식(Text형식으로/HTML임)

 


참고자료

https://opentutorials.org/course/4848/21673

 

HTTP 소개 - 생활코딩

수업소개 HTTP가 무엇인지를 살펴봅니다. 크롬 개발자 도구 내의 네트워트 기능도 살짝 살펴봅니다.  강의

opentutorials.org