HTTP는 신뢰성 있는 데이터 전송 프로토콜을 사용
=> 개발자는 HTTP통신이 전송 중 파괴되거나 왜곡되는 것 걱정X, 애플리케이션의 고유 기능을 구현하는데 집중 가능
웹 클라이언트와 서버
- 웹 서버는 HTTP 프로토콜로 의사소통하기 때문에 보통 HTTP 서버라고 불림
- 클라이언트는 서버에게 HTTP 요청을 보내고 서버는요청된 데이터를 HTTP 응답으로 돌려줌
미디어 타입
- 웹 서버는 모든 HTTP 객체 데이터에 MIME 타입을 붙임
- 웹 브라우저는 서버로부터 객체를 돌려받을 때, 다룰 수 있는 객체인지 MIME 타입을 통해 확인
- MIME 타입은 /로 구분된 주타입과 부타입으로 이루어진 문자열 라벨
HTML로 작성된 텍스트 문서: text/html
JPEG 이미지: image/jpeg
GIF 이미지: image/gif
- 서버 리소스 이름은 통합 자원 식별자(Uniform Resource Identifier), URI로 불림
- 정보 리소스를 고유하게 식별하고 위치 지정
- URI는 URL과 URN 2종류가 있음
- 리소스 식별자의 가장 흔한 형태
- 특정 서버의 한 리소스에 대해 구체적인 위치 서술
- 첫 번째 부분 - 스킴(scheme): 리소스에 접근하기 위해 사용되는 프로토콜 서술 (보통 HTTP 프로토콜
http://)
- 두 번째 부분 - 서버의 인터넷 주소
- 세 번째 부분 - 웹 서버의 리소스
- 리소스의 위치에 영향 받지 않는 유일무이한 이름 역할
- 리소스를 여기저기 옮기더라도 문제없이 작동
오늘날 쓰이는 대부분의 URI는 URL이다
트랜잭션
메서드
서버에게 어떤 동작이 취해져야하는지 말해줌
| HTTP 메서드 | 내용 |
|---|
| GET | 서버에서 클라이언트로 지정한 리소스 보내라 |
| PUT | 클라이언트에서 서버로 보낸 데이터를 지정한 이름의 리소스로 저장하라 |
| DELETE | 지정한 리소스를 서버에서 삭제하라 |
| POST | 클라이언트 데이터를 서버 게이트웨이 애플리케이션으로 보내라 |
| HEAD | 지정한 리소스에 대한 응답에서 HTTP 헤더 부분만 보내라 |
상태 코드
클라이언트에게 요청 성공 여부 알려줌
메시지

- 시작줄: 요청이라면 무엇을 해야하는지, 응답이라면 무슨일이 나타났는지 나타냄
- 헤더: 헤더 필드가 콜론(:)으로 구분
- 본문: 요청의 본문은 웹 서버로 데이터를 실어 보내고, 응답의 본문은 클라이언트로 데이터 반환
임의의 이진 데이터(이미지, 비디오 등) 포함 가능
TCP 커넥션
TCP의 제공
- 오류 없는 데이터 전송
- 순서에 맞는 전달
- 조각나지 않는 데이터 스트림 (언제든 어떤 크기로든 보낼 수 있음)
TCP 커넥션이 맺어지면 클라이언트와 서버 컴퓨터 간 교환되는 메시지가 없어지거나 손상,순서 뒤바뀌는 경우 아예 없음
HTTP 클라이언트가 서버에 메시지를 전송할 수 있게 되기 전에, 인터넷 프로토콜(IP) 주소
와 포트번호를 사용해 클라이언트와 서버 사이에 TCP/IP 커넥션을 맺어야 함

웹의 구성요소
프락시
- 클라이언트와 서버 사이에 위치
- 클라이언트의 모든 HTTP 요청을 받아 서버에 전달
- 사용자를 대신하여 서버에 접근
- 모든 웹 트래픽 흐름 속에서 신뢰할 만한 중재자 역할을 함
- 요청과 응답 필터링
캐시
- 웹캐시와 캐시 프락시는 자신을 거쳐 가는 문서들 중 자주 찾는 것의 사본을 저장해두는 특별한 종류의 HTTP 프락시 서버
- 다음번에 클라이언트가 같은 문서 요청 시 캐시가 갖고 있는 사본 받을 수 있음
- 클라이언트는 웹 서버보다 근처의 캐시에서 훨씬 빠르게 문서 다운 가능
- HTTP는 캐시를 효율적으로 동작하게 하고 캐시된 콘텐츠를 최신 버전으로 유지, 프라이버시드 보호하기 위한 많은 기능 정의
게이트웨이
- 다른 서버들의 중개자로 동작하는 특별한 서버
- HTTP 트래픽을 다른 프로토콜로 변환하기 위해 사용
터널
- 단순히 HTTP 통신을 전달하기만 하는 특별한 프락시
- 두 커넥션 사이에 raw 데이터를 열어보지 않고 그대로 전달해주는 HTTP 애플리케이션
- HTTP 터널은 주로 비 HTTP 데이터를 하나 이상의 HTTP 연결을 통해 그대로 전송해주기 위해 사용
- 암호화 된 SSL 트래픽을 HTTP 커넥션으로 전송함으로써 웹 트래픽만 허용하는 사내 방화벽을 통과시키는 것
에이전트
- 사용자를 위해 HTTP 요청을 만들어주는 클라이언트 프로그램
- 웹 요청을 만드는 애플리케이션은 뭐든 HTTP 에이전트 (웹 브라우저, 자동화된 사용자 에이전트 등)
출처
HTTP 완벽 가이드