틀린 부분이 있으면 댓글로 알려주시면 감사하겠습니다!!
인터넷에는 수십억 개의, 사진, 음성, HTML 페이지, 동영상들이 저장된다.
HTTP는 전 세계 웹 서버로부터 대량의 정보를 빠르고, 간편하고, 정확하게 사람들의 웹브라우저로 옮겨주는 배달부이다.
웹 콘텐츠들은 웹 서버에 존재한다.
HTTP는 웹에서 전송되는 객체 각각에 신중하게 MINE 타입이라는 데이터 포맷 라벨을 붙인다.
MINE (Multipurpose Interenet Mail Extensions, 다목적 인터넷 메일 확장)
전자메일 시스템 사이에서 메시지가 오갈 때 겪는 문제를 해결하기 위해 설계된 데이터 포맷 라벨
이 외에도 다양한 MIME 타입이 있다.
웹 서버 리소스는 각자의 이름을 가지고 있다.
클라이언트가 원하는 리소스를 얻기 위해 통합 자원 식별자(uniform resource identifier), 줄여서 URI라고 부른다.
'github'의 웹 서버에 있는 42기술면접스터디의 리소스의 URI는 이런 식이다.
오늘날의 대부분의 URI는 URL이다.
URL은 정확히 리소스가 어디에 있는지 어떻게 접근하는지 알려준다.
URN은 리소스의 위치에 영향을 받지 않는 유일한 이름 역할을 한다.
리소스의 이름이 변하지 앟는 한 리소스의 어디로 옮기더라도 문제없이 동작한다.
URN은 아직 실험적인 단계 널리 채택되지는 않았다.
HTTP 트랜잭션은 클라이언트가 서버에게 보내는 요청명령과 서버가 클라이언트의 용청에 응답하는 응답 결과로 구성되있다.
클라이언트 -> 서버
클라이언트가 서버에게 어떤 동작을 취해져야하는지 말해주는 방법이다
HTTP 메서드 | 설명 |
---|---|
GET | 서버에서 클라이언트로 지정한 리소스를 보내라. |
PUT | 클라이언트에서 서버로 보낸 데이터를 지정한 이름의 리소스로 저장하여라. |
DELETE | 지정한 리소스를 서버에서 삭제하라. |
POST | 클라이언트 데이터를 서버 게이트웨이 애플리케이션으로 보낸다. |
HEAD | 지정한 리소스에 대한 응답에서, HTTP 헤더 부분만 보내라. |
클라이언트 <- 서버
서바가 클라이언트에게 요청이 성공했는지 추가 조치가 필요한지 알려주는 수자이다.
각 상태코드별로 오류의 원인, 성공 여부 등 정보를 담아 클라이언트에게 전달한다.
HTTP 상태코드 | 설명 |
---|---|
200 | 좋다. 문서가 바르게 반환되었다. |
302 | 다시 보내라. 다른 곳에 가서 리소스를 가져가라. |
404 | 없음. 리소스를 찾을 수 없다. |
애플리케이션은 하나의 작업을 수행하기 위해 HTTP 트랜잭션을 여러 개를 수행한다.
아래 그림과 같이 하나의 '웹페이지'는 보통 하나의 리소스가 아닌 리소스의 모음이다.
HTTP 메시지는 단순한 줄 단위의 문자열이다.
요청 시작줄
응답 시작줄
하나의 이름과 하나의 값으로 구성되어 있고, 콜론(:)을 통해 구분한다.
공통 헤더
요청 헤더
응답 헤더
실제로 가져올 데이터
요청한 리소스에 따라 HTML, CSS, JavaScript 등
요청 본문
웹 서버로 데이터를 실어 보낸다. (?)
응답 시작줄
클라이언트로 데이터를 반환
HTTP 완벽 가이드 / 데이빗 고울리, 브라인언 토티, 마조리 세이어, 세일루 레디, 안슈 아가왈 지음 / 이응준, 정상일 옮김 / 프로그래밍인사이트