[WEB] HTTP & HTTPS

Profile-exe·2021년 7월 26일
1

web

목록 보기
1/11
post-thumbnail

1. HTTP & HTTPS

인터넷에서 HTML과 같은 하이퍼 텍스트를 전송하기 위한 통신 규약이 존재한다.

  • HTTP - Hyper Text Transfer Protocol (하이퍼 텍스트 전송 프로토콜)
    • 웹 브라우저(클라이언트)와 웹 서버간의 커뮤니케이션을 위한 통신 규약 (프로토콜)
    • 기본 포트 : 80
  • HTTPS - Hyper Text Transfer Protocol Secure
    • HTTP에 데이터 암호화가 추가된 통신 규약(프로토콜)
    • 기본 포트 : 443

HTTP는 데이터를 평문으로 전송한다. 이것은 보안 문제와 직결되므로, HTTPS에서는 이러한 평문 전송에 의한 보안 이슈를 공개키방식으로 암호화 후 전송하는 방법으로 해결했다.

1-1. connectionless, stateless 프로토콜

  • Connectionless - 무접속
    • 클라이언트의 요청에 대해 서버가 응답을 마치면 네트워크 연결을 끝맺는다
  • Stateless - 무상태
    • 서버가 클라이언트의 이전 상태를 보존하지 않는다

2. URI & URL

웹에 접속할 때 브라우저에 사이트의 주소를 입력한다. 이 주소를 보통 URL이라고 하는데, 구체적으로 어떤 것인지 알아보자.

  • URI - Uniform Resource Identifier
    • 리소스를 식별하기 위한 식별자
  • URL - Uniform Resource Locator
    • 리소스의 위치를 식별하기 위한 식별자

URIURL을 포함하는 상위 개념임을 알 수 있다.

2-1. URI 구성요소

  • Scheme : 프로토콜(http / https)에 대한 정보
  • Host : 웹 서버호스트에 대한 정보
  • Path : 웹 서버리소스에 대한 경로 - 구분자 : /
  • Query : 웹 서버에 전달하는 파라미터
  • Fragment : 서브 리소스 식별 시 사용

3. Request & Response

HTTP통신으로 요청(Request) 및 응답(Response)을 한다. 해당 내용에 대해 자세히 알아보자. 요청과 응답 모두 각 줄의 개행CRLF로 이루어져야 한다.

WSL 환경에서 httpie를 사용해 http 통신을 해보았다. -v 옵션을 사용하면 요청에 대한 request headerrequest body도 확인이 가능하다.
WSL 쉘에서 httpie로 요청 보내기

이미지에 출력된 텍스트에 대해 알아보자.

3-1. 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"  
}

3-2. HTTP Response

서버의 응답이다.

첫 줄은 VersionStatus 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 부분이다. 서버가 응답한 데이터를 담고 있는 부분이다.

3-3. Request Method

  • OPTION - 지원 메소드 확인
    • 리소스가 허용하는 메소드 목록 반환
  • GET - 페이지 반환
    • 특정 리소스의 표시 요청 / 오직 데이터를 받기만 함
  • HEAD - 상태 확인
    • GET메서드와 동일한 응답 요구하지만 Response header만 받음
  • POST - 생성 & 수정
    • 특정 리소스 생성데이터 추가를 위해 사용 / 값 제출 가능
  • PUT - 수정
    • 요청한 값으로 해당 리소스의 값을 설정
  • DELETE - 삭제
    • 특정 리소스 삭제
  • TRACE - 경로 확인
    • 목적 리소스의 PATH를 따라 look-back 테스트 진행
    • 웹 서버로 가는 경로 상의 중간 서버의 존재를 확인 가능
profile
컴퓨터공학과 학부생

0개의 댓글