와이어샤크 http 패킷 분석 - waieosyakeu http paekis bunseog

*/*은 어떤 미디어 타입도 가능하다는 뜻이다. 만약 application/json이라고 하면 json데이터를 2진데이터로 받을 것이고, gzip이면 압축파일을 받을 것이고, text/plain이라고 하면 String을 받을 것이다.

User-Agent

1995년 HTML 2.0이 나오기 전까지 HTML은 표준화되지 않았다.

당시 Netscape나 Microsoft 같은 벤더들은 웹제작자들이 좀 더 풍부하게 컨텐츠를 제공할 수 있도록 각자 매력적인 기능을 추가하고 있었다. 이에 따라 다양한 브라우저가 출시되기 시작했고, 최신 브라우저는 좀 더 화려한 HTML을 제공했다.

여러 브라우저가 출시되면서 웹제작자들은 제작한 컨텐츠가 다양한 브라우저에 모두 정상적으로 보일 수 있도록 대책이 필요했다. 그 중 하나는 가장 낮은 버전의 HTML을 제공하는 것이었고, 다른 하나는 브라우저의 버전을 탐지해 서버가 브라우제 따라 적합한 컨텐츠를 내려주도록 하는 것이었다. 당시에는 브라우저에서 스크립트가 가능하지 않았기 때문에, 서버에서 브라우저를 탐지해내기 위해 User-Agent 헤더가 생기게 됐다.

첫째, HTTP의 모든 형태는 HyperText Transfer Protocol입니다. HTTP는 ISO 또는 TCP/IP 모델의 응용 프로그램 계층 프로토콜입니다. 애플리케이션 계층 아래에 ​​있는 HTTP를 찾으려면 아래 그림을 참조하십시오.

와이어샤크 http 패킷 분석 - waieosyakeu http paekis bunseog

HTTP는 월드 와이드 웹 (w.w.w) 및 브라우저에서 메시지 형식 및 전송 방법을 정의합니다. 따라서 HTTP 정의는 브라우저가 HTTP 명령을 수신할 때 취해야 하는 조치를 결정합니다. 또한 HTTP는 서버에서 데이터를 가져오기 위해 HTTP 명령을 전송하는 규칙을 정의합니다.

예를 들어 브라우저(Internet Explorer, Chrome, Firefox, Safari 등)에 url을 입력하면 실제로 서버에 HTTP 명령을 보냅니다. 그리고 서버는 적절한 명령으로 응답합니다.

HTTP 방법:

HTTP/1.1에 대한 몇 가지 메소드 세트가 있습니다(이것은 HTTP 버전입니다)

GET, HEAD, POST, PUT, DELETE, CONNECT, OPTION 및 TRACE.

우리는 각 방법에 대해 자세히 설명하지 않고 대신 꽤 자주 볼 수 있는 방법에 대해 알게 될 것입니다. 와 같은

가져 오기: GET 요청은 웹 서버에서 데이터를 요청합니다. 이것은 문서 검색을 사용하는 주요 방법입니다. 우리는 이 방법의 실용적인 예를 볼 것입니다.

우편: POST 방식은 서버에 일부 데이터를 보내야 할 때 사용됩니다.

HTTP는 Wiresahark입니다.

HTTP가 어떻게 작동하는지 이해하기 위해 실용적인 것을 시도해 봅시다.

따라서 이 예에서 우리는 다운로드할 것입니다 "alice.txt"(서버에 있는 데이터 파일) ~에서 “gaia.cs.umass.edu” 섬기는 사람.

설정:

  1. URL 열기 http://gaia.cs.umass.edu/wireshark-labs/alice.txt [우리는 alice.txt를 다운로드하기 위한 전체 URL을 알고 있습니다] 컴퓨터 브라우저에서.
  2. 이제 브라우저에서 다운로드한 파일을 볼 수 있습니다. 여기 스크린샷이 있습니다

와이어샤크 http 패킷 분석 - waieosyakeu http paekis bunseog

  1. 동시에 Wireshark에서 패킷을 캡처했습니다.

Wireshark의 HTTP 패킷 교환:

HTTP로 들어가기 전에 HTTP가 포트 80과 TCP를 전송 계층 프로토콜로 사용한다는 것을 알아야 합니다. [다른 주제 토론에서 TCP를 설명할 것입니다].

이제 해당 URL을 입력하고 브라우저에서 Enter 키를 누르면 네트워크에서 어떤 일이 발생하는지 봅시다.

다음은 스크린샷입니다.

TCP 3-way handshake ——-> HTTP OK ——-> TCP Data [alice.txt의 내용] ——->

HTTP 확인

와이어샤크 http 패킷 분석 - waieosyakeu http paekis bunseog

와이어샤크 http 패킷 분석 - waieosyakeu http paekis bunseog

이제 HTTP GET 및 HTTP OK 패킷 내부에 무엇이 있는지 살펴보겠습니다.

참고: 다른 주제 토론에서 TCP 교환에 대해 설명합니다.

HTTP 가져오기:

TCP 3-way handshake[SYN, SYN+ACK, ACK 패킷]가 완료된 후 HTTP GET 요청이 서버로 전송되며 패킷의 중요한 필드는 다음과 같습니다.

1.요청 방법:가져오기 ==> 패킷은 HTTP GET 입니다.

2.요청 URI: /wireshark-labs/alice.txt ==> 클라이언트가 /Wireshark-labs에 있는 alice.txt 파일을 요청합니다.

3. 버전 요청: HTTP/1.1 ==> HTTP 버전 1.1입니다.

4. 수락: 텍스트/html, 애플리케이션/xhtml+xml, 이미지/jxr, */* ==> [클라이언트 측 브라우저]가 수락할 수 있는 파일 유형에 대해 서버에 알려줍니다. 여기서 클라이언트는 텍스트 유형인 alice.txt를 기대합니다.

5.허용-언어:ko-미국 ==> 허용되는 언어 표준.

6. 사용자 에이전트:Mozilla/5.0(Windows NT 10.0, WOW64, 트라이던트/7.0; rv: 11.0) 도마뱀붙이처럼 ==> 클라이언트 측 브라우저 유형. 인터넷 익스플로러를 사용했지만 항상 표시되는 경우/최대 시간에 Mozilla가 표시됨

7.인코딩 수락:gzip, 수축 ==> 클라이언트 측에서 허용된 인코딩.

8.호스트:gaia.cs.umass.edu ==> 클라이언트가 HTTP GET 요청을 보내는 웹 서버 이름입니다.

9.연결:연결 유지 ==> 연결은 현재 트랜잭션이 완료된 후 네트워크 연결이 열린 상태를 유지하는지 여부를 제어합니다. 연결 유형은 연결 유지입니다.

다음은 HTTP-GET 패킷 필드의 스크린샷입니다.

와이어샤크 http 패킷 분석 - waieosyakeu http paekis bunseog

HTTP 확인:

TCP 데이터[content of alice.txt]가 성공적으로 전송된 후 HTTP OK가 클라이언트로 전송되고 여기에 패킷의 중요한 필드가 있습니다.
1. 응답 버전:HTTP/1.1 ==> 여기 서버도 HTTP 버전 1.1
2.상태 코드: 200 ==> 서버에서 보낸 상태 코드.
3. 응답 문구:좋아요 ==> 서버에서 보낸 응답 문구.

따라서 2와 3에서 200 OK를 얻었으며 이는 [HTTP GET] 요청이 성공했음을 의미합니다.

4.날짜:2019년 2월 10일 일요일 06:24:19 GMT ==> 서버에서 HTTP GET을 수신한 현재 날짜, GMT 시간.
5.서버:Apache/2.4.6(CentOS) OpenSSL/1.0.2k-fips PHP/5.4.16 mod_perl/2.0.10 Perl/v5.16.3 ==> 서버 세부 정보 및 구성 버전.
6.최종 수정: 2004년 8월 21일 토 14:21:11 GMT ==> "alice.txt" 파일의 마지막 수정 날짜 및 시간.
7.ETag: "2524a-3e22aba3a03c0" ==> ETag는 캐싱을 지원하고 성능을 향상시키기 위해 콘텐츠가 변경되지 않았음을 나타냅니다. 또는 콘텐츠가 변경된 경우 etag는 리소스의 동시 업데이트가 서로를 덮어쓰는 것을 방지하는 데 유용합니다.
8. 허용 범위: 바이트 ==> 바이트는 서버에서 콘텐츠에 사용되는 단위입니다.
9.콘텐츠 길이:152138 ==> 이것은 바이트 단위의 alice.txt의 총 길이입니다.
10. 살아 유지:시간 초과=5, 최대=100 ==> 활성 매개변수를 유지합니다.
11.연결:살아 유지 ==> 연결은 현재 트랜잭션이 완료된 후 네트워크 연결이 열린 상태를 유지하는지 여부를 제어합니다. 연결 유형은 연결 유지입니다.
12.콘텐츠 유형:텍스트/일반; 문자 집합=UTF-8 ==> 내용 [alice.txt] 유형은 텍스트이고 문자 집합 표준은 UTF-8입니다.

다음은 HTTP OK 패킷의 다른 필드에 대한 스크린샷입니다.

와이어샤크 http 패킷 분석 - waieosyakeu http paekis bunseog

이제 웹 서버에 있는 파일을 요청할 때 어떤 일이 발생하는지 압니다.

결론:

HTTP는 우리가 일상생활에서 매일 사용하는 간단한 애플리케이션 프로토콜입니다. 그러나 안전하지 않아 HTTPS가 구현되었습니다. "S"는 보안을 의미합니다. 그래서 최대 웹 서버 이름은 http로 시작합니다.s://[웹사이트 이름]. 이는 귀하와 서버 간의 모든 통신이 암호화됨을 의미합니다. 이 HTTPS에 대해서는 향후 별도로 논의할 예정입니다.

📌 HTTP 프로토콜 소개

HyperText Transfer Protocol 로 www 웹 상에서 정보를 주고 받을 수 있는 프로토콜입니다.
주로 HTML 문서를 주고 받는데에 쓰이는데 이미지, 동영상, 오디오, 텍스트 문서와 같이 웹 상에서의 데이터라면 어떤 종류든 전송이 가능합니다.
클라이언트와 서버 사이에 이루어지는 요청(Request) 과 응답(Response) 를 통해 전송이 이루어지고 이렇게 전달이 된 자료들은 흔히 잘 알고 있는 http:// 로 시작하는 인터넷 주소(URL)로 조회가 가능합니다.

와이어샤크 http 패킷 분석 - waieosyakeu http paekis bunseog

클라이언트로부터 웹 브라우저가 HTTP를 통해 서버로부터 정보를 요청하면 👉🏻 서버는 이 요청에 응답하여 필요한 정보를 사용자에게 전달해주는 역할을 합니다.


📌 요청에 포함되는 요청 Method(메소드)

  • GET URL에 해당하는 자료의 전송을 요청
  • HEAD GET과 같은 요청이지만, 자료에 대한 정보만 받음
  • POST 서버가 처리할 수 있는 자료 전송
  • PUT 해당 URL에 자료를 저장
  • DELETE 해당 URL에 자료를 삭제

📌 응답 코드

- ERROR
500 👉🏻 예외적이거나 예측 불가능한 에러를 의미하며 서버의 타임 아웃, 트래픽 과부하, 스크립트 문법 오류 일때 발생합니다. 분석 결과 이 에러가 많으면 SQL 인젝션 공격을 의심해볼 수 있습니다.
404 👉🏻 URL의 문제로 요청된 문서를 찾지 못해 보통 페이지를 열 수 없습니다.
400 👉🏻 Bad Request로 잘못된 요청이 들어온 에러입니다. 요청 실패로 문법상 오류가 있을 확률이 높습니다.

- SUCCESS
200 👉🏻 페이지를 성공적으로 불러옴을 의미합니다.


📌 Wireshark를 이용한 HTTP 패킷 분석

와이어샤크 http 패킷 분석 - waieosyakeu http paekis bunseog

이렇게 간단한 HTTP 샘플 패킷을 다운 받아 분석해 보겠습니다.

샘플 프로토콜 패킷 다운로드 사이트

와이어샤크 http 패킷 분석 - waieosyakeu http paekis bunseog

우선 전체적인 통계를 살펴보기 위해 응답 코드를 확인했습니다. 각 프로토콜의 통계가 먼저이지만 HTTP 하나뿐인 패킷 샘플이기에 넘어갑니다.
응답 코드 확인 결과 에러는 없이 200 으로 요청 승인이 된 상태입니다.

와이어샤크 http 패킷 분석 - waieosyakeu http paekis bunseog

Requests 를 보면 어떠한 데이터가 요청되었는지 알 수 있습니다. 여기서는 png 이미지 파일입니다.

와이어샤크 http 패킷 분석 - waieosyakeu http paekis bunseog

HTTP Stream을 통해 살펴봐도 마찬가지로 클라이언트는 logo.png 이미지 파일을 요청하고, 서버는 200 OK 응답을 보내주었다는 것을 확인할 수 있습니다.

와이어샤크 http 패킷 분석 - waieosyakeu http paekis bunseog

요청된 이미지 파일이 궁금하여 File - Export Objects - HTTP 로 저장해보니 이런 이미지가 나오는 것을 알 수 있습니다😎