1. HTTP( Hypertext Transfer Protocol )
HyperText
는 HTML( Hyper Text Markup Language ), 문서와 문서가 링크로 연결되는 것을 의미한다.
Transfer
는 HTML로 만든 웹페이지 문서( 파일 )을 보내는 것을 의미하고
Protocol
은 상호 간에 정의한 HTML 송수신에 대한 규칙을 의미한다.
2. HTTP 통신 구조
HTTP의 통신 구조는 클라이언트가 요청( Request )을 보내면 서버가 응답( Response )한다. 클라이언트와 서버가 분리됨으로써 각자의 역할에 집중할수 있고 이를 통해 클라이언트, 서버 양쪽이 각각 독립적으로 고도화가 가능하다.
3. HTTP 특징
3-1. 무상태성 ( Stateless )
Stateless
란 클라이언트와 서버 사이에 상태를 유지하지 않는 특성을 말한다. 데이터를 주고 받기 위한 각각의 데이터 요청을 서로 독립적으로 관리한다. 이를 통해 서버는 세션과 같은 별도의 추가 정보를 관리하지 않아도 되고 다수의 요청 처리 및 서버의 부하를 줄일 수 있는 성능 상의 이점을 가진다. 또 서버의 확장성 ( Scale-Out )이 높으나, 클라이언트가 추가 데이터를 전송해야해서 메모리 소모가 크다.
3-2. 비연결성 ( Connectionless )
Connectionless
란 서버와 클라이언트의 연결을 지속하지 않는 특성을 말한다. 서버에 요청 후 응답을 받으면 바로 TCP/IP
연결을 끊는다. 이를 통해 서버의 자원을 효율적으로 관리하고 수많은 클라이언트의 요청에 대응할 수 있도록 한다. 하지만 이러한 특징은 TCP 3 way handshake를 매번 해야한다는 한계가 있다. 이를 해결 하기 위해 HTTP 지속 연결( Persistent Connections ) 라는 개념이 도입되었고 소켓 연결을 일정 시간 동안 더 유지함으로써, 필요한 자원들을 모두 다운받을때 까지 연결이 종료되지 않고 요청 / 응답이 반복된 뒤 종료한다.
4. HTTP Message
HTTP Message의 구조는 Start-line
, Header
, Empty line
, Body
로 구분된다.
Request
와 Response
는 Header
와 Empty line
, Body
의 내용은 거의 비슷하다.
Header
에는 HTTP 전송에 필요한 모든 부가 정보가 담기고 Empty line
은 헤더와 바디를 구분하기 위한 라인이다. Body
에는 실제 전송할 / 전송 받은 데이터가 담긴다.
Start-line
에서 서로 차이가 많이 나는데,
Request
의 Start-line
에는 HTTP Method, URL, Version이 담기고,
Response
의 Start-line
에는 Version, Status Code, Status Message가 담긴다.
✔️ HTTP Method
✔️ HTTP Status Code
5. HTTP vs HTTPS
✅ HTTPS: HTTP + SSL ( 전자상거래에서의 데이터 보안을 위해서 개발된 통신 레이어 )
HTTPS는 SSL 레이어 위에 HTTP를 통과시키는 방식으로 평문인 HTTP 문서는 SSL 레이어를 통과하면서 암호화 되어 목적지에 도착하고 목적지에서는 SSL 레이어를 통과하면서 복호화 되어 웹 브라우저에 전달된다. HTTP 메시지는 일반 텍스트이므로 누구나 쉽게 엑세스하고 읽을 수 있는 반면, HTTPS는 모든 데이터를 암호화된 형태로 전송하므로 보안성이 높다. 또한 이러한 보안성과 신뢰성 때문에 검색 엔진에서도 HTTP 보다 컨텐츠의 순위를 높게 지정한다.