📍

1장. HTTP 개관

1.1. HTTP: 인터넷의 멀티미디어 배달부

HTTP는 전 세계의 웹서버로부터 대량의 정보(이미지, HTML, 텍스트, 동영상 등)를 빠르고 간편하고 정확하게 사람들의 PC 웹브라우저로 전송합니다.
HTTP는 신뢰성 있는 데이터 전송 프로토콜을 사용합니다.

1.2. 웹 클라이언트와 서버

웹 콘텐츠는 웹 서버에 존재 ⇒ 웹 서버는 HTTP 프로토콜로 의사소통하기 때문에 HTTP 서버라고 불림
서버는 인터넷의 데이터를 저장하고, 클라이언트가 요청한 데이터를 제공

1.3. 리소스

어떤 종류의 콘텐츠도 리소스가 될 수 있다.

1.3.1. 미디어 타입(MIME 타입)

HTML 문서
text/html
plain ASCII 텍스트 문서
text/plain
JPEG
image/jpeg
GIF
image/gif
애플 퀵타임 동영상
video/quicktime

1.3.2 URI

웹 서버 리소스는 각자 이름을 갖고 있어서, 클라이언트는 관심 있는 리소스를 지목 가능
URI ⇒ 서버 리소스 이름, 통합 자원 식별자(Uniform resource Identifier)
URI는 두가지 파트로 나뉜다.
URL
URN: 콘텐츠를 이루는 한 리소스에 대해, 리소스의 위치에 영향받지 않는 유일무이한 이름 역할. 실험 중인 상태이며 아직 채택은 안 됐음.

1.4. 트랜잭션

구성
요청 명령(클라이언트 → 서버)
응답 결과(서버 → 클라이언트)
메서드
GET
서버에서 클라이언트로 지정한 리소스 반환 요청
PUT
클라이언트 → 서버로 보낸 데이터를 (지정한 이름의 리소스로 )저장 덮어쓴다고 생각하면 됨
PATCH
클라이언트 → 서버로 보낸 특정 데이터를 수정 수정된 것만 덮어쓴다고 생각하면 됨
DELETE
삭제
POST
생성(클라이언트 데이터를 서버 게이트웨이 어플리케이션으로 전송)
HEAD
지정한 리소스에 대한 응답에서, HTTP 헤더 부분만
상태 코드

1.5. 메세지

단순 텍스트이지만 보통 형식 지정함(MIME)

1.6. TCP 커넥션

1.6.1. TCP/IP

제공 사항
오류 없는 데이터 전송
순서에 맞는 전달
조각나지 않는 데이터 스트림

1.6.2. 접속, IP 주소, 포트번호

1.8. 웹의 구성요소

프록시
클라이언트와 서버 사이에 위치한 HTTP 중개자
캐시
많이 찾는 웹페이지를 클라이언트 가까이에 보관하는 HTTP 창고
게이트웨이
다른 애플리케이션과 연결된 특별한 웹 서버
터널
단순히 HTTP 통신을 전달하기만 하는 특별한 프락시

1.8.1. 프락시

웹 보안, 애플리케이션 통한, 성능 최적화를 위해 중요
클라이언트의 HTTP 요청을 받아 서버에 전달
사용자를 위한 프락시로 동작하며 사용자를 대신해서 서버에 접근
주로 보안을 위해 사용 ⇒ 모든 웹 트래픽 흐름 속에서 신뢰할만한 중개자 역할
요청과 응답을 필터링

1.8.2. 캐시

웹캐시 + 캐시 프락시 ⇒ 자신을 거쳐 가는 문서들 중 자주 찾는 것의 사본을 저장하는, 특별한 종류의 HTTP 프락시 서버

1.8.3. 게이트웨이

다른 서버들의 중개자로 동작하는 특별한 서버
주로 HTTP 트래픽을 다른 프로토콜로 변환하기 위해 사용됨
언제나 스스로가 리소스를 갖고 있는 진짜 서버인 것처럼 요청을 다룸
FTP

1.8.4. 터널

두 커넥션 사이에서 raw data를 열어보지 않고 그대로 전달해주는 HTTP 어플리케이션
비 HTTP 데이터를 하나 이상의 HTTP 연결을 통해 그대로 전송해주기 위해 사용됨
암호화된 SSL 트래픽을 HTTP 커넥션으로 전송함으로써 웹 트래픽만 허용하는 사내 방화벽을 통과시키는 것