HTTP
- Hypertext Transfer Protocol
- 웹 애플리케이션 통신에 사용되는 프로토콜

- 현재는 HTTP/1.1 이 표준
MIME
- Multipurpose Internet Mail Extensions
- 웹에서 오가는 다양한 타입의 HTTP 객체 데이터에 붙여지는 데이터 포맷 라벨
- 웹 서버는 모든 HTTP 객체 데이터에 MIME 타입을 붙이고
- 웹 브라우저는 서버로부터 객체를 돌려받을 때, 다룰 수 있는 객체인지 MIME 타입을 통해 확인
- 형태: ex) text/html image/jpeg image/gif …
URI
- Uniform Resource Identifier
- 리소스를 고유하기 식별해주는 것
URL
- Uniform Resource Locator
- 특정 서버의 한 리소스에 대한 구체적인 위치를 서술
- 오늘날 대부분의 URI 는 URL 임
- scheme(접근에 사용되는 프로토콜) + 서버의 인터넷 주소 + 웹 서버의 리소스
URN
- Uniform Resource Name
- 위치에 영향받지 않는 리소스의 유일한 이름 역할
- 아직은 리소스 위치를 분석할 인프라가 부재하기에 채택 X
HTTP Transaction
- 구성
- 요청 명령 (client → server)
- 응답 결과 (server → client)
- 웹페이지는 여러 리소스 객체들의 모음이다.
- 웹브라우저는 페이지 레이아웃을 서술하는 HTML 뼈대를 한 번의 HTTP 트랜잭션으로 가져온 뒤, 첨부된 리소스들을 가져오는 추가적인 HTTP 트랜잭션들을 수행
HTTP Method
- 모든 HTTP 요청 메시지는 한 개의 HTTP 메서드를 가짐
- ↓ 자주 쓰는 5개의 HTTP method

Status Code
- 모든 응답 메시지는 상태 코드와 함께 반환
- client 에게 요청 성공 여부나 추가 조치가 필요한지 알려줌
- 200: 성공
- 302: 다시 요청을 보내달라
- 404: 실패. 리소스를 찾을 수 없음
HTTP 메시지 구조

실제적 통신
HTTP는 애플리케이션 계층 프로토콜이기 때문에 통신의 세부사항은 신뢰성 있는 인터넷 전송 프로토콜인 TCP/IP 로 넘어간다.

TCP
- 오류 없는 데이터 전송
- 순서에 맞는 전달
- 조각나지 않는 데이터 스트림
TCP/IP
- TCP와 IP가 층을 이루는 패킷 교환 네트워크 프로토콜의 집합
- 어떤 종류의 컴퓨터나 네트워크든 서로 신뢰성 있는 의사소통을 하게 해줌
TCP 커넥션
- TCP 커넥션을 맺으려면 목적지의 IP 주소와 Port 번호가 필요
- 이를 위해 URL 을 사용한다.

- HTTP URL에 포트번호가 없는 경우에는 기본값 80이라고 가정
웹 애플리케이션의 종류
proxy
- client와 server 사이에 위치한 HTTP 중개자
- 웹 보안, 애플리케이션 통합, 성능 최적화 등
- HTTP 요청을 받아서 필터링하여 서버에 전달/접근
cache
- 가장 많이 찾는 웹페이지를 client 가까이에 보관하는 특수한 HTTP proxy server
gateway
- 다른 애플리케이션과 연결된 특별한 웹 서버
- 다른 서버들의 중개자로서 동작
- 주로 HTTP 트래픽을 다른 프로토콜로 변환하는 용도
tunnel
- 단순히 HTTP 통신을 전달하는 proxy
- 두 커넥션 사이에서 raw data를 그대로 전달해줌
- 주로 비 HTTP 데이터를 하나 이상의 HTTP 터널을 통해 그대로 전송해주기 위해 사용
agent
- 자동화된 HTTP 요청을 만드는 client
- 웹 브라우저도 HTTP agent의 일종