하이퍼텍스트 문서를 교환하기위한 Application Layer 프로토콜.
즉, 웹 서버와 클라이언트 간의 데이터를 주고받기 위해 만들어놓은 통신 규약이다.
Cookie와 Session을 사용한다.)암호화가 되지 않은 텍스트를 전송하는 프로토콜이므로, 누군가 네트워크에서 신호를 가로채면 내용이 노출되는 보안 이슈가 존재한다.
--> 이걸 해결하기 위한 프로토콜이 HTTPS!
클라이언트 : 서버에게 요청을 보내는 리소스 사용자
ex) 웹 브라우저, 모바일 애플리케이션, IoT 등
서버 : 클라이언트에게 요청에 대한 응답을 제공하는 리소스 관리자

클라이언트(웹 브라우저, 모바일 등)가 브라우저를 통해서 어떠한 서비스를 URI를 통해 서버에 요청(Request)하면 서버에서는 해당 요청에 대한 결과를 응답(Response)하는 형태
1) TCP connection
TCP 연결은 요청을 보내거나 응답을 받는데 사용된다. 클라이언트는 새 연결을 열거나, 기존 연결을 재사용하거나, 서버에 대한 여러 TCP 연결을 열 수 있다.
2) HTTP 메시지를 전송
GET / HTTP/1.1
Host: developer.mozilla.org
Accept-Language: fr
3) 서버에 의해 전송된 응답을 읽음
HTTP/1.1 200 OK
Date: Sat, 09 Oct 2010 14:28:02 GMT
Server: Apache
Last-Modified: Tue, 01 Dec 2009 20:18:22 GMT
ETag: "51142bc1-7449-479b075b2891b"
Accept-Ranges: bytes
Content-Length: 29769
Content-Type: text/html
<!DOCTYPE html... (here comes the 29769 bytes of the requested web page)
4) TCP connections을 close 하거나 다른 요청들을 위해 재사용


1) GET : 클라이언트가 서버에 리소스를 요청할 때 사용 (CRUD에서 Read)
2) POST : 클라이언트가 서버의 리소스를 새로 만들 때 사용 (CRUD 에서 Create)
3) PUT : 클라이언트가 서버의 리소스를 수정 할 때 사용 (CRUD에서 Update: 전체 수정)
4) DELETE: 클라이언트가 서버의 리소스를 삭제 할 때 사용 (CRUD에서 Delete)
그 외) PATCH, HEAD, OPTIONS, CONNECT, TRACE 등...
1xx(정보) : 요청을 받았으며 프로세스를 계속 진행함
2xx(성공) : 요청을 성공적으로 받았으며 인식했고 수용함
3xx(리다이렉션) : 요청 완료를 위해 추가 작업 조치가 필요
4xx(클라이언트 오류) : 요청의 문법이 잘못되었거나 요청을 처리할 수 없음
5xx(서버 오류) : 서버가 명백히 유효한 요청에 대한 충족을 실패
HTTP에 데이터 암호화가 추가된 프로토콜
인터넷 상에서 정보를 암호화하는SSL 프로토콜을 사용하여 클라이언트와 서버가 자원을 주고 받을 때 사용하는 통신 규약
공개키 암호화 방식을 SSL통신 절차에 적용을 하면 흐름은 다음과 같다.
https://developer.mozilla.org/ko/docs/Web/HTTP (HTTP)
https://surprisecomputer.tistory.com/54 (HTTP)
https://www.whatap.io/ko/blog/40/ (HTTP 상태 코드)
https://programmer93.tistory.com/38 (HTTP 메소드)
https://kingjakeu.github.io/study/2020/08/11/HTTP-HTTPS/ (HTTPS)