Hyper Text Transfer Protocol
웹브라우저(Client)와 웹서버는 HTML과 같은 문서를 전송하기 위해 HTTP 메시지를 주고받으며 대화를 나눈다.
클라이언트와 서버 사이에서 데이터가 교환되는 방식으로 몇 줄의 텍스트 정보로 구성되어 있다. 개발자가 직접 작성할 필요는 없으며 서버나 프록시의 구성 파일, 브라우저의 API, 기타 인터페이스 등에서 자동으로 완성한다.
"request message가 보내지면 response message는 무조건 온다. (에러가 나도)"
(1) Head
(2) empty line
: 헤더와 본문을 구분하는 빈 줄
(3) body
: 요청이나 응답과 관련된 데이터 또는 문서를 포함하며, 요청/응답 유형에 따라 선택적으로 사용
HTTP는 통신 규약일 뿐이므로 통신 과정에서 HTTP는 클라이언트나 서버의 상태를 확인하지 않는다. 즉 HTTP는 특정 상태를 담고 있지 않으며 이전 요청이나 다음 요청을 기억하지 않는다. 상태 확인을 위해서는 쿠키-세션, API 등의 다른 방법이 필요하다.
클라이언트가 서버의 자원을 이용할 수 있도록 서버가 제공하는 인터페이스 (서버 요청 메뉴판)
컴퓨터와 인간을 연결시키는 사용자 인터페이스와 다르게, 컴퓨터나 소프트웨어를 연결하여 프로그래머들이 사영하도록 고안되었다.
서버는 리소스 전달을 위해 API 문서를 작성하고, 이를 활용하여 클라이언트가 HTTP 프로토콜을 통해 데이터를 요청할 수 있다.
HTTP API Design Best Practice
- CRUD 행동과 비슷한 HTTP 요청 메소드 API
- Create (POST
) - Read (GET
) - Update (PUT
, PATCH
) - Delete (DELETE
)
GET
: 특정 리소스의 표시를 요청한다. GET을 사용하는 요청은 오직 데이터를 받기만 한다.
POST
: 특정 리소스에 엔티티를 제출할 때 쓰이며, 종종 서버의 상태 변화나 부작용을 일으킨다.
PUT
: 목적 리소스의 모든 현재 표시를 요청 payload로 바꾼다.
PATCH
: 리소스의 부분만을 수정할 때 쓰인다.
DELETE
: 특정 리소스를 삭제한다.
서버가 제공되는 환경에 존재하는 파일의 위치(주소)를 나타낸다. 네트워크 상에서 자원이 어디 있는지 알려주기 위한 규약으로, 웹 리소스에 대한 참조이다. 즉 웹사이트와 네트워크 상의 자원을 찾기 위한 주소이다.
scheme : 통신 방식(프로토콜) 결정
- HTTP인 경우 웹 브라우저를, FTP인 경우 FTP 클라이언트를 이용해야 한다.
hosts : 웹 서버의 이름, 도메인, IP 등의 주소
url-path : 웹 서버에서 지정한 루트 디렉토리로부터 시작하는 리소스들이 위치한 경로와 파일명
위치를 알려준다기 보다는, 질문을 통해 내가 찾는 리소스가 무엇인지 식별하게 해준다. URL의 3가지 기본요소에 query, bookmark가 더해진 것으로 URI는 URL을 포함하는 상위 개념이다.
query : 웹 서버에 보내는 추가적인 질문, 파라미터
네트워크에 연결된 특정 PC의 주소를 나타내는 체계
IPv4(IP version 4)
4개의 숫자로 구분된 IP 주소 체계로 하나의 숫자는 0부터 255까지 나타낼 수 있으며 2^32(약 43억)개의 IP 주소를 표현할 수 있다. 이 중 몇 가지는 이미 용도가 정해져 있다.
127.0.0.1
: localhost0.0.0.0
, 255.255.255.255
: broadcast address (로컬 네트워크에 접속된 모든 장치와 소통하는 주소)IPv6(IP version 6)
IPv4의 할당량이 한계에 다다르자 등장한 버전으로 2^128개의 IP 주소를 표현할 수 있다.
IP 주소에 진입할 수 있는 정해진 통로로, 이미 사용중인 포트는 중복 사용할 수 없다.
0~65,535번 까지 사용할 수있으나, 0~1024번 까지의 포트 번호는 주요 통신을 위한 규약에 따라 이미 정해져 있다.
잘 알려진 포트 번호의 경우 생략이 가능하지만, 아니라면 반드시 포함해야 한다. (:3000 등의 임시 포트)
웹 브라우저를 통해 특정 사이트에 진입할 때 IP 주소 대신 사용하는 이름
네트워크 상의 모든 PC는 IP 주소를 갖지만, 모든 IP 주소가 도메인 이름을 가지지는 않는다. 도메인 이름은 일정 기간 대여하여 사용해야 한다.
도메인 이름을 브라우저 검색창에 입력했을 때, 매칭되는 IP 주소를 확인하는 작업이 반드시 필요하며 네트워크 상에 이를 위한 별도로 존재한다. DNS는 host의 도메인 이름을 IP 주소로 변환하거나 그 반대의 경우를 수행하도록 개발된 database system이다.
에러 메시지는 다음의 상황에서 발생할 수 있다.
에러 메시지가 발생한 경우 아래와 같은 문제들로 이어진다.