
전 세계의 웹 서버로부터 대량의 정보를 빠르고, 간편하고, 정확하게 사람들의 PC에 설치된 웹 브라우저로 전송한다. 신뢰성 있는 데이터 전송 프로토콜을 사용한다.
웹 리소스는 웹 컨텐츠의 본체이다. 크게 정적 파일과 동적 파일로 구분된다.
인터넷은 수많은 데이터 타입을 다루기 때문에 HTTP는 웹에서 전송되는 객체 각각에 MIME 타입이라는 데이터 포맷 라벨을 붙인다. MIME은 이메일에서 잘 동작했기에 HTTP에서도 이를 채택하게 되었다.
웹 서버는 모든 HTTP 객체 데이터에 MIME 타입을 붙인다. 웹 브라우저는 서버로부터 응답을 받을 때, 해당 객체를 다룰 수 있는지 MIME 타입을 통해 확인한다.
MIME(Multipurpose Internet Mail Extensions)이란 각기 다른 전자메일 시스템 사이에서 메시지를 주고 받을 때 겪는 문제를 해결하기 위해 설계되었다.
MIME 타입은 사선으로 구분된 주 타입과 부 타입으로 이루어진 문자열이다.
통합 자원 식별자(URI)란 서버 리소스의 이름이다. 윕 서버 리소스는 각자 이름을 갖고 있고, 클라이언트는 특정 리소스에 URI를 통해 접근할 수 있다.
URI는 URL과 URN으로 나누어진다.
통합 자원 지시자(URL)는 특정 서버의 한 리소스에 대한 구체적인 위치를 서술한다.
대부분의 URL은 세 부분으로 이루어진 표준 포맷을 따른다.
통합 자원 이름은 특정 리소스에 대해 위치에 영향 받지 않는 유일무이한 이름을 뜻한다. 리소스의 위치가 변하더라도 URN은 정상 동작한다. 하지만 리소스 위치를 분석하기 위한 인프라의 부재로 아직까지 많이 사용되지는 않는다.
HTTP transaction은 요청 명령과 응답 결과로 구성된다. 이러한 상호작용은 그림과 같이 HTTP message라고 불리는 정형화된 데이터를 이용해 이루어진다.

모든 HTTP 요청 메시지는 한 개의 method를 가진다. Method는 서버에게 어떤 동작을 취해야 하는지 알려준다. 다음 표는 흔히 쓰이는 HTTP methods를 나타낸다.
| HTTP method | description |
|---|---|
| GET | 서버 → 클라이언트로 지정한 리소스 전송 |
| PUT | 클라이언트 → 서버로 보낸 데이터를 지정한 이름의 리소스로 저장 |
| DELETE | 지정한 리소스 삭제 |
| POST | 클라이언트 데이터를 서버 게이트웨이 어플리케이션으로 전송 |
| HEAD | 지정한 리소스에 대한 응답에서 HTTP 헤더 부분만 전송 |
모든 HTTP 응답 메시지는 상태 코드와 함께 반환된다. 상태 코드는 클라이언트에게 요청이 성공했는지, 추가 조치가 필요한지 알려주는 3자리 숫자이다.
이 때 HTTP는 텍스트로 된 사유 구절(reason phrase)도 함께 보낸다. 다만 사유 구절은 설명만을 위해 포함된 것이기에 실제 응답 처리에는 숫자로 된 상태 코드가 사용된다.
HTTP 메시지는 단순한 줄 단위의 문자열이다.

HTTP는 application 계층 프로토콜이다. HTTP는 네트워크 통신과 관련된 부분을 TCP/IP에게 맡긴다. 사실 인터넷 자체가 TCP/IP에 기초하고 있다.
일단 TCP 커넥션이 맺어지면 클라이언트와 서버 컴퓨터 간 교환되는 메시지는 무결성이 보장된다.
IP 주소와 포트 번호를 이용해 클라이언트는 TCP/IP로 쉽게 통신할 수 있다.
Telnet utility는 키보드를 목적지의 TCP 포트로 연결해주고, 출력 TCP 포트를 화면으로 연결해준다. 텔넷은 원격 터미널 세션을 위해 흔히 사용되지만 일반적인 TCP 서버에 연결하기 위해 사용될 수도 있다.
클라이언트와 서버 사이에 위치한 HTTP 중개자
사용자를 대신해서 서버에 접근한다.
주로 보안을 위해 사용된다. 즉, 모든 웹 트래픽 흐름 속에서 신뢰할만한 중개자 역할을 한다.
요청과 응답을 필터링한다.
많이 찾는 웹페이지를 클라이언트 가까이 보관하는 HTTP 창고
자신을 거쳐가는 문서들 중 자주 찾는 것의 사본을 저장해 두는 HTTP 프락시 서버이다.
더욱 빠른 속도로 컨텐츠를 로딩하기 위해 사용한다.
다른 애플리케이션과 연결된 특별한 웹 서버
주로 HTTP 트래픽을 다른 프로토콜로 변환하기 위해 사용된다.
언제나 스스로가 리소스를 갖고 있는 진짜 서버인 것처럼 요청을 다루며 클라이언트는 이를 모른다.
단순히 HTTP 통신을 전달하기만 하는 특별한 proxy
두 커넥션 사이에서 데이터 뚜껑을 열어보지 않고 그대로 전달만 하는 HTTP 어플리케이션이다.
대표적인 예로 웹 트래픽만 허용하는 사내 방화벽을 통과시키기 위해 SSL을 HTTP로 한 겹 감싸서 전송하는 상황이 있다.
자동화된 HTTP 요청을 만드는 준지능적 웹 클라이언트
예를 들어 사람 통제 없이 스스로 웹을 돌아다니며 컨텐츠를 받아오는 사용자 에이전트가 있다.
스파이더나 웹로봇과 같은 이름이 있다.
중요한 요소들에 대해 보기 쉽게 요약되어있어서 좋은 참고가 되었습니다! :) 감사합니다.