컴퓨터 공학(CS)/네트워크 기본 정보

HTTP 요청 생성 및 분석

GrapeMilk 2024. 8. 23. 01:59
nc example.com 80

 

nc (netcat) 명령어를 터미널에 입력하면 간단하게 TCP 연결을 생성할 수 있다.

 

GET / HTTP/1.0
Host: example.com

 

그 다음 GET 요청을 작성한 뒤 엔터를 누르면 response를 받을 수 있다.

 

nc & http 요청 결과

 

 

터미널에서 명령어를 통해 간단하게 TCP 연결 및 HTTP 요청을 수행했다! HTTP 요청과 응답을 하나씩 뜯어보면

 

request header 분석

GET / HTTP/1.0

GET: HTTP method를 의미

/: 요청 url

HTTP/1.0: HTTP 버전

 

Host: example.com: 요청 도메인 이름

 

response header 분석

HTTP/1.0 200 OK

HTTP/1.0: HTTP 버전

200 OK: 응답 상태 코드

 

그 외 key:value 형식으로 다양한 응답값이 있다. 

 

response에는 header와 payload가 존재한다. payload는 위의 사진에 일부 잘린 html이며 header와 엔터로 구분된다.

 

HTTP 1.0과 1.1

 

HTTP 1.0은 많은 단점이 있는데 그 중 하나는 multiple request가 되지 않는 것이다. 위에서 실습한 nc 명령어에 HTTP 버전을 1.1로 바꾸면 request한 뒤 한번더 요청이 가능하다. (1.0으로 연결하면 한 번 요청을 보내고 연결이 끊어진다) 이러한 단점은 TCP handshake 시간지연에 따른 비효율로 1.1에서 개선되었다.