이 글은 "HTTP 완벽 가이드"를 읽고 이해한 내용을 복습하기 위해 작성하는 글입니다.
위에서 서버와 클라이언트가 보내고 받는 요청/응답을 HTTP Request, HTTP Response라고 한다.
웹에서 서버와 클라이언트가 서로 통신하기 위해 상호간에 정한 통신 규약
- GET, POST, PUT, DELETE, HEAD 등의 요청 메서드를 지원한다.
웹 클라이언트에서 서버로 보낸 HTTP 메시지를 요청, 서버에서 클라이언트로 보낸 HTTP 메시지를 응답 메시지라고 한다.
( 따로 메시지로 분류해서 밑에서 다루도록 하겠다.)
일반적으로 시작줄, 헤더, 본문의 3개의 구조를 가지고 있다
이처럼 서버와 클라이언트가 메시지를 주고 받는 것을 트랜잭션이라고 한다.
TCP/IP를 기반으로 통신한다.
* TCP/IP : TCP와 IP가 층을 이루는 패킷교환 네트워크 프로토콜의 집합
HTTP는 TCP를 통하여 손상되지 않게 메시지를 전달하고, TCP는 IP패킷을 통하여 데이터를 전달한다.
클라이언트와 서버가 서로 메시지를 전달하기 전에, TCP/IP 커넥션을 맺어야 하는데, 이 과정에서 포트번호와 IP주소가 필요하다.
1 ) 시작줄
모든 HTTP 메시지는 시작줄을 가지고 있다.
Request
서버에서 수행하야하는 동작의 메서드, 해당 메서드의 대상을 지칭하는 URL을 포함한다.
메서드
시작줄은 메서드로 시작하는데, 메서드 중 POST, PUT만 본문( Body )이 존재한다.
Response
응답 메시지에 쓰인 HTTP 버전, 숫자로 된 응답코드 (status : 200), 응답 코드에 대한 사유 구절이 문자열로 반환된다.
상태코드
클라이언트의 요청에 대해 어떠한 응답을 했는지 알려준다.
사유 구절
상태코드에 대한 설명을 기술한다.
2 ) 헤더
Requeset, Response 메시지에 추가 정보를 더한다.
일반헤더
메시지에 대한 아주 기본적인 정보를 제공한다.
Request
Reponse
3 ) 본 문
위에서 말한 웹 리소스들은 웹 안에 무수히 많이 존재한다.
우리는 이 리소스들 중 필요한 리소스들을 찾아야 하는데, 이때 사용되는것이 URI이다.
URI는 각각의 리소스들을 고유하게 식별하고, 위치를 지정하는 역할을 한다.
리소스 식별자의 가장 대표적인 형태이다.
특정한 리소스에 대한 구체적인 위치를 알려준다.
URL은 일반 URL 문법을 따르며, 일반적으로 9개 부분으로 나뉜다.
기본적으로 스킴, 사용자이름/비밀번호, 호스트, 포트, 경로, 파라미터, 질의, 프래그먼트 9개의 요소를 가진다
하지만 9개를 모두 가지는 URL은 거의 없다.
가장 중요한 세가지 요소는 스킴, 호스트, 경로이다.
스킴 ( Protocol )
위 사진에 보이는 프로토콜이 바로 스킴이다.
리소스를 가져올때, 어떠한 프로토콜을 사용하여 서버에 접근할 것인지를 가리킨다.
호스트 ( Domain )
위 사진에서 도메인 부분이 호스트이다.
예시를 간단하게 든 것이지 도메인 === 호스트 는 아니다
정확히 설명하면 music이 호스트이고, 도메인은 naver.com이다.
호스트와 도메인의 차이점
호스트 : 도메인 안의 한 대의 서버 또는 PC를 지칭
도메인 : 해당 서버 또는 PC를 대표
ex ) 도메인 : 삼성, 호스트 : 삼성 물산, 삼성 전자 ...
리소스를 내보내는 서버의 호스트명 또는 IP주소를 가리킨다.
경로 ( Path )
서버내의 리소스가 어디에 있는지를 가리킨다.