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 & Response
HTTP
통신으로 요청(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 Method
OPTION
- 지원 메소드 확인GET
- 페이지 반환HEAD
- 상태 확인GET
메서드와 동일한 응답 요구하지만 Response header
만 받음POST
- 생성 & 수정 PUT
- 수정DELETE
- 삭제TRACE
- 경로 확인PATH
를 따라 look-back
테스트 진행