HTTP는 웹 브라우저를 통해 인터넷으로 평문 통신을 수행할 수 있는 프로토콜
- HTTP란
Hyper Text Transfer Protocol
의 약자로, WWW(World Wide Web, 인터넷) 상에서 데이터를 주고 받기 위한 클라이언트와 서버 사이에 이루어지는 요청/응답 프로토콜입니다. - HTTP는 어떤 종류의 데이터든지 전송할 수 있도록 설계되어있지만 주로 HTML문서를 주고받는데 쓰입니다.
- 예를 들면, 클라이언트인 웹 브라우저가 HTTP를 통하여
서버로부터 웹페이지나 그림 정보를 요청
하면, 서버는 이 요청에 응답하여필요한 정보를 해당 사용자에게 전달
하게 됩니다. - HTTP를 통해 전달되는 자료는 http:로 시작하는 URL(인터넷 주소)로 조회할 수 있으며, 사용하는 포트는 80번입니다.
- HTTP 통신은 주로
웹 브라우저(Internet Explorer, Chrome, Firefox)
를 이용하여 통신하며, 이외에도 시스템의특정 프로그램(curl, wget)
을 이용하여 통신할 수 있습니다. - HTTP의 단점이 하나 있는데, 인터넷 상에서 데이터를 받아 중간에 볼 수 있다면, 이러한 데이터는
평문(사람이 알아볼 수 있는 정보)
으로 보입니다. - 두 번째 슬라이드와 같이
Wireshark
로 HTTP 통신 정보(패킷)을 캡처해 보면 평문이 그대로 노출되는 것을 볼 수 있습니다. - 네트워크가 설계되는 과정에서 생겨난 HTTP는 보안성을 고려하지 않은 설계로,
네트워크 상에서 패킷이 그대로 노출되는 취약점
이 있습니다.
HTTP의 헤더 구조와 간략한 설명
- HTTP Header(HTTP 헤더)는
HTTP 통신을 위해 필요한 정보
들이 입력되어 있는 데이터 영역을 말합니다. - 이러한 헤더는 데이터를 받기 전에 적절한 장소로 전송하기 위한 설정값이라고 생각하시면 좋습니다.
- HTTP 헤더에는
Host, Accept, User-Agent, Referer, Cookie, Content-Type, Content-Length
등의 정보가 들어있습니다.
HTTP Method(HTTP 메소드)와 Content-Type이란?
- HTTP Method(HTTP 메소드)는
HTTP 통신이 어떤 형태로 통신할 건지
결정하는 역할을 합니다. - 이러한 메소드는 7가지가 있으며 각각의 역할이 있습니다.(참고 사이트 : HTTP 응답코드와 HTTP 메소드)
- 보편적으로 웹에서는
GET, POST
를 주로 사용합니다.
# | 타입 | 의미 | 예시 |
---|---|---|---|
1 | Text | 사람이 읽고, 직접 이해할 수 있는 텍스트 문자열 | Text/xml |
2 | Image | 그림 데이터 | image/jpeg |
3 | Audio | 음성 데이터 | audio/mpeg |
4 | Video | 동영상 데이터 | video/mp4 |
5 | Application | 모든 종류의 이진 데이터 | application/pdf |
6 | Multipart | 복수의 데이터로 이루어진 복합 데이터 | multipart/related |
7 | Message | 전자 메일 메시지 | message/rfc822 |
8 | Model | 복수 차원으로 구성하는 모델 데이터 | model/vrml |
- HTTP 헤더에는 보내지는
데이터 즉, 컨텐트의 타입
이 포함됩니다. - 이러한 컨텐트의 타입은 Content-Type이라고 되어 있는 헤더 영역에 지정되는데, 이 값은
표준 MIME Type
의 하나이다. - MIME-Type을 살펴 봄으로써, 브라우저(Internet Explorer, Chrome, Firefox 등)는 데이터를 나타내는데 어떤 종류의 파일 Stream인지를 알게 되며, 또한 서버에서 데이터를 해석할 때도 중요한 역할을 합니다.