[HTTP] 통신 프로토콜 - HTTP와 HTTPS
HTTP (Hyper Text Transfer Protocol)
- 서버와 클라이언트의 데이터 교환을 요청과 응답 형식으로 정의한 프로토콜
# 기본 메커니즘
- 클라이언트가 서버에게 요청하면 서버가 응답하는 것
: 웹 서버는 HTTP 서버를 HTTP 서비스 포트에 대기시킴 (TCP/80 or TCP/8080을 주로 사용함)
→ 클라이언트가 서비스 포트에 HTTP 요청을 전송하면 이를 해석하여 응답을 반환함
HTTP 메세지
# 종류
- Request HTTP 메세지
- Response HTTP 메세지
# 기본 구조
1) HTTP 헤드
- 메세지에 대한 정보
- 각 줄은 CRLF(빈 줄)로 구분됨
- 첫 줄 : 시작 줄 (Start-line)
- 나머지 줄 : 헤더 (Header)
: 필드와 값으로 구성됨 → HTTP 메세지 또는 바디의 속성을 나타냄
: 하나의 HTTP 메세지에는 0개 이상의 헤더가 있을 수 있음
- 헤드의 끝은 CRLF 한 줄로 나타냄
2) HTTP 바디
- 헤드의 끝을 나타내는 CRLF 뒤에 있는 줄
- 클라이언트가 서버에게 or 서버가 클라이언트에게 전송하려는 데이터가 담김
- 바디에 담아서 보내는 정보는 노출되지 않음
→ 따라서, POST 방식으로 보내는 정보는 바디 부분에 작성
HTTP 요청 (Request)
- 서버에게 특정 동작을 요구하는 메세지
→ 서버는 해당 동작과 클라이언트 권한을 검토하고, 적절할 때만 이를 처리
1) 메서드(Method)
: URI가 가리키는 리소스를 대상으로, 서버가 수행하길 바라는 동작을 나타냄
▶ GET
: 리소스를 가져오라는 메서드
이용자가 브라우저에 웹 서버의 주소를 입력하거나 하이퍼링크를 클릭하면
새로운 페이지를 렌더링하기 위해 리소스 필요
→ 브라우저는 GET 요청을 서버에 전송하여 리소스를 받아옴
▶ POST
: 리소스로 데이터를 보내라는 메서드
전송한 데이터는 HTTP 바디에 포함됨
ex) 로그인 시 id, pw 등이 POST 요청을 통해 서버로 보내짐
2) 요청 URI
: 메서드의 대상이 되는 리소스 ex) html 파일명
3) HTTP 버전
: 클라이언트가 사용하는 HTTP 프로토콜의 버전 ex) HTML/1.1
HTTP 응답 (Response)
- HTTP 요청에 대한 결과 및 이유, 전송할 웹 리소스를 반환하는 메시지
1) HTTP 버전
- 서버에서 사용하는 HTTP 프로토콜의 버전
2) 상태 코드 (Status Code)
- 요청에 대한 처리 결과를 세 자릿수로 나타낸 것
[HTTP] 상태 코드
HTTP 상태 코드 - 3자리 숫자로 이루어져 있으며, 총 100번대 ~ 500번대 까지 존재 - 클라이언트가 보낸 HTTP 요청에 대한 서버의 응답 코드 - 상태 코드에 따라 요청의 성공/실패 여부 판단 HTTP 상태 코
thdrlehd.tistory.com
3) 처리 사유 (Reason Phrase)
- 상태 코드가 발생한 이유를 짧게 기술함
# 요청(Request)과 응답(Response)
- 클라이언트는 웹 서버에게 특정 리소스를 지정해서 제공해달라고 '요청'
- 서버가 해당 요청에 대응되는 동작을 통해 클라이언트에서 리소스를 반환하며 '응답'
→ 프로토콜 : 이러한 규격화된 상호작용에 적용되는 '평등한' 약속(규약)
(비교 : 인터페이스는 '강제성이 있는' 약속)
ex) TCP/IP : 네트워크 통신의 기초가 되는 프로토콜
HTTP : 웹 애플리케이션이 사용하는 프로토콜
FTP : 파일을 주고받을 때 사용하는 프로토콜
- HTTP의 응답과 요청은 평문으로 전달됨 (특정 형식이 없는 문자열)
→ '중간 탈취자'가 이러한 정보를 가로채면 중요한 정보가 유출될 수 있음
→ 보완 : HTTPS
HTTPS (HTTP over Secure socket layer)
- TLS (Transport Layer Security) 프로토콜 도입
→ TLS는 서버와 클라이언트 사이에 오가는 모든 HTTP 메시지를 암호화함
→ 공격자가 중간에 메시지를 탈취하더라도 해석할 수 없음
→ HTTP 통신이 도청과 변조로부터 보호됨
→ 현재 개발되는 서비스들은 규모에 상관없이 HTTP보다 HTTPS를 사용하는 추세