
HTTP & HTTPS 인터넷에서 HTML과 같은 하이퍼 텍스트를 전송하기 위한 통신 규약이 존재한다.
- HTTP - Hyper Text Transfer Protocol (하이퍼 텍스트 전송 프로토콜)
- 웹 브라우저(클라이언트)와 웹 서버간의 커뮤니케이션을 위한 통신 규약 (프로토콜)
- 기본 포트 : 80
- HTTPS - Hyper Text Transfer Protocol Secure
- HTTP에 데이터 암호화가 추가된 통신 규약(프로토콜)
- 기본 포트 : 443
HTTP는 데이터를 평문으로 전송한다. 이것은 보안 문제와 직결되므로, HTTPS에서는 이러한 평문 전송에 의한 보안 이슈를 공개키방식으로 암호화 후 전송하는 방법으로 해결했다.
connectionless, stateless 프로토콜
- Connectionless - 무접속
- 클라이언트의 요청에 대해 서버가 응답을 마치면 네트워크 연결을 끝맺는다
- Stateless - 무상태
- 서버가 클라이언트의 이전 상태를 보존하지 않는다
URI & URL 웹에 접속할 때 브라우저에 사이트의 주소를 입력한다. 이 주소를 보통 URL이라고 하는데, 구체적으로 어떤 것인지 알아보자.
- URI - Uniform Resource Identifier
- 리소스를 식별하기 위한 식별자
- URL - Uniform Resource Locator
- 리소스의 위치를 식별하기 위한 식별자
즉 URI가 URL을 포함하는 상위 개념임을 알 수 있다.
URI 구성요소
- Scheme : 프로토콜(
http/https)에 대한 정보- Host : 웹 서버의 호스트에 대한 정보
- Path : 웹 서버의 리소스에 대한 경로 - 구분자 :
/- Query : 웹 서버에 전달하는 파라미터
- Fragment : 서브 리소스 식별 시 사용
Request & ResponseHTTP통신으로 요청(Request) 및 응답(Response)을 한다. 해당 내용에 대해 자세히 알아보자. 요청과 응답 모두 각 줄의 개행은 CRLF로 이루어져야 한다.
WSL 환경에서 httpie를 사용해 http 통신을 해보았다. -v 옵션을 사용하면 요청에 대한 request header와 request body도 확인이 가능하다.

이미지에 출력된 텍스트에 대해 알아보자.
HTTP Request서버에 대한 요청이다.
첫 줄은
Method,Path,Version으로 구성된다.
두 번째 줄부터Request Header부분이다.name:value형태로 구성된다.
Request Header끝에CRLF출력 후Request Body부분이 출력된다.POST /ping HTTP/1.1 Accept: application/json, */* Accept-Encoding: gzip, deflate Connection: keep-alive Content-Length: 42 Content-Type: application/json Host: naver.com User-Agent: HTTPie/1.0.3{ "password": "pw1234", "username": "user" }
HTTP Response서버의 응답이다.
첫 줄은
Version과Status Code로 구성된다.
두 번째 줄부터Response Header부분이다.name:value형태로 구성된다.
Response Header끝에CRLF출력 후Response Body부분이 출력된다.HTTP/1.1 301 Moved Permanently Connection: keep-alive Content-Type: text/html Date: Mon, 26 Jul 2021 14:23:39 GMT Location: http://www.naver.com/ping Server: NWS Transfer-Encoding: chunked Vary: Accept-Encoding,User-Agent<html> <head><title>301 Moved Permanently</title></head> <body> <center><h1>301 Moved Permanently</h1></center> <hr><center> NWS </center> </body> </html>
html텍스트Response Body부분이다. 서버가 응답한 데이터를 담고 있는 부분이다.
Request MethodOPTION - 지원 메소드 확인GET - 페이지 반환HEAD - 상태 확인GET메서드와 동일한 응답 요구하지만 Response header만 받음POST - 생성 & 수정 PUT - 수정DELETE - 삭제TRACE - 경로 확인PATH를 따라 look-back 테스트 진행