2022년 7월 ~ 2022년 8월 동안 http 완벽 가이드 스터디를 진행하면서 노션에 정리해놨던 내용입니다.
1.3 리소스
1.3.1 미디어 타입
- http는 웹에서 전송되는 객체에 MINE(Multipurpose Internet Mail Extenstions) 타입이라는 데이터 포멧 라벨을 붙인다.
- Content-type 헤더에 포함되어 있음.
- JEPG ⇒ Content-type: image/jpeg
- HTML ⇒ Content-typs: text/html
1.3.2 URI
- URI는 URN과 URI를 포함하는 상위 개념임.
- 통상적인 관례로 URI와 URL을 같은 의미로 많이 사용함.
- URI ⇒ 통합 자원 식별자, Uniform Resource Identifer
- URI ⇒ Unitform Resource Locator
- 어느 경로로 가야 리소스에 접근할 수 있는지 명확하게 명시한다.
- 현재 대부분 이 방식을 사용한다.
- URL 표준 포맷
- scheme ⇒ http://
- 인터넷 주소 ⇒ google.com
- 웹 서버의 리소스 ⇒ /mail/u/0/
- URN ⇒ Unitform Resource Name
- 리소스의 이름으로 리소스에 접근한다.
- 리소스의 이름이 변하지 않는 한 리소스의 위치가 변경되어도 접근할 수 있다.
- 하지만 널리 채택되지 않았고, 아직 실험중인 기술이다.
1.4 트랜잭션
- 트랜잭션은 요청 명령과 응답 결과로 구성되어 있다.
1.4.1 메서드
(3장에서 자세히 다룸)
- GET ⇒ 서버에서 클라이언트로 지정한 리소스를 보내라
- PUT ⇒ 클라이언트에서 서버로 보낸 데이터를 지정한 이름의 리소스로 저장하라
- DELETE ⇒ 지정한 리소스를 서버에서 삭제하라
- POST ⇒ 클라이언트 데이터를 서버 게이트웨이 애플리케이션으로 보내라
- HEAD ⇒ 지정한 리소스에 대한 응답에서, HTTP 헤더 부분만 보내라
1.4.2 상태 코드
(3장에서 자세히 다룸)
- 흔히 쓰이는 상태 코드들
- 200 ⇒ 응답 성공
- 302 ⇒ 다시 보내라. 다른 곳에서 리소스를 가져가라
- 404 ⇒ 없음. 리소스를 찾을 수 없다.
- 사유 구절
- 응답 코드 뒤에 오는 설명 메시지. 설명을 위해 포함된 것일 뿐 응답 처리에는 상태코드가 사용됨.
- 아래 두 가지 경우 동일한 응답 처리로 취급됨.
1.5 메시지
- 시작줄
- 요청 메시지 일 때 ⇒ 어떤 메서드를 사용해 요청할지?
- GET /test/hi-there.txt HTTP/1.0
- 응답 메시지 일 때 ⇒ 어떤 상태코드 응답인지
- 헤더
- Content-type, Content-length 등의 정보가 담겨있음.
- 헤더의 마지막 줄은 빈 줄로 끝남.
- 본문
- 요청할 때 ⇒ 리소스 등 데이터를 실어서 보냄
- 응답일 때 ⇒ 클라이언트로 데이터를 반환
1.6 TCP 커넥션
1.6.1 TCP/IP
- 애플리케이션 계층 프로토콜.
- HTTP 세부사항에 대해 신경쓰지 않아도 됨.
- HTTP 네트워크 프로토콜 스택
- 애플리케이션 계층 : HTTP
- 전송 계층 : TCP
- 네트워크 계층 : IP
- 데이터 링크 계층
- 물리 계층
- 웹브라우저 연결 절차
- 호스트명을 얻는다 → 접속URL
- 호스트명에 해당하는 IP 주소를 얻어온다 (DNS)
- IP 주소의 80 포트에 연결한다
- HTTP GET 요청을 보낸다
- 서버에서 응답을 읽는다
- 커넥션을 닫는다.
1.8 웹의 구성요소
1.8.1 프락시
- 클라이언트와 서버 사이에 위치한 HTTP 중계자
- 주로 보안을 위해 사용됨
- ex) 교육청 차단 프로그램, 애플리케이션 바이러스 검출
1.8.2 캐시
- 자주 찾는 것의 사본을 저장해둠.
- (7장에서 자세히 다룸)
1.8.3 게이트웨이
- 다른 서버들의 중계자로 동작하는 서버
- HTTP 트래픽을 다른 프로토콜로 변환하기 위해 사용
- (8장에서 자세히 다룸)
1.8.4 터널
- 두 커넥션 사이의 데이터를 열어보지 않고 그대로 전달해주는 HTTP 애플리케이션
1.8.5 에이전트
- 사용자를 위해 http 요청을 만들어주는 클라이언트 프로그램