HTTP프로토콜 분석(Wireshark)

1. HTTP 프로토콜 분석

wireshark를 이용해, HTTP 프로토콜과 헤더 구조를 분석한다.
 

웹 브라우저를 열고 http://info.cern.ch/를 입력했을때 캡처된 패킷이다.

 

No. 1 패킷 분석
HTTP  패킷은 요청을 하는 패킷과 응답을 하는 패킷으로 나뉜다.
 
No.1 패킷은 요청을 하는 패킷으로 Request Method로 GET요청을 사용하고 있으며, 자주 사용되는 버전인 HTTP 1.1을 사용하고 있음을 Request Version에서 확인할수 있다.
 
또한 Host 헤더에서 요청을 보낸 호스트가 info.cern.ch이며, Connection이 Keep-alive라는 것을 통해 지속적인 연결을 필요로 하고 있음을 파악할수 있다.
*\r 는 행의 앞으로 이동하라는 의미이고, \n는 다음 행으로 이동하라는 의미 이므로 \r\n은 위치한 행을 다음 행으로 줄바꿈 하라는 의미이다.

 

No. 2 패킷 분석

No.2 패킷은 No.1 패킷의 요청에 대해서 응답을 하는 패킷으로 200 OK라는 것을 통해 해당 요청이 성공적으로 처리됐다는 것을 확인할 수 있다.

 

해당 패킷 또한 HTTP 1.1 버전을 사용하고 있으며, 요청, 응답 패킷 모두 사용하는 Date라는 헤더를 통해 메시지가 생성된 날짜, 시각 정보를 확인할 수 있으며, Content-Type을 통해 본문이 HTML 문서라는 점을 확인할 수 있다.

 

Server는 아파치 서버를 사용하는 것을 확인할 수 있으며, ETag를 통해서 캐시된 자원이 최신상태인지 확인하는 것을 확인할 수 있으며, Connection을 통해서 추가적인 연결을 하지 않는다는 것을 확인했다. 

 

No. 2 패킷 분석

본문내용은 HTTP 프로토콜 아래에 Line-based text data: text/html에서 확인할수 있다.
 

http://info.cern.ch/ 접속시 화면(최초의 웹사이트)
No. 3 패킷 분석

No. 3 패킷은 http://info.cern.ch/에 접속한 후 첫 번째 글머리 기호에 있는 "Browse the first website"를 클릭했을 때 캡처되는 요청 패킷이다. 
 
이 요청은 GET 메서드를 사용하고 있으며 HTTP 1.1 버전을 사용하고 있다. 요청의 대상 호스트는 'info.cern.ch'이며, Connection 헤더를 통해 클라이언트가 서버와의 지속 연결을 원하고 있음을 알 수 있다.
 
User-Agent 헤더는 요청을 보내는 클라이언트 측 프로그램에 대한 정보를 제공한다. Referer 헤더를 통해 클라이언트가 이 요청을 보내기 직전에 머물렀던 URL이 http://info.cern.ch/임을 확인할 수 있다.
 
Accept-Encoding 헤더는 클라이언트가 받아들일 수 있는 인코딩 방식을, Accept-Language 헤더는 클라이언트가 선호하는 콘텐츠 언어를 서버에 알려주는 역할을 한다. 이러한 헤더들은 콘텐츠 협상의 일부로, 서버가 클라이언트에게 가장 적합한 형태의 콘텐츠를 제공할 수 있도록 돕는다.
 
 

참고자료

[1] 혼자 공부하는 네트워크. 강민철 저. 한빛미디어, 2024.