여름의 서재

[네트워크] HTTP & HTTPS 본문

CS/네트워크

[네트워크] HTTP & HTTPS

엉아_ 2022. 2. 8. 01:18
728x90

💡 HTTP 란?

: 텍스트 기반의 통신 규약으로 인터넷에서 데이터를 주고받을 수 있는 프로토콜이다. 이렇게 규약을 정해두었기 때문에 모든 프로그램이 이 규약에 맞춰 개발해서 서로 정보를 교환할 수 있게 되었다.

 

💡 HTTP의 특징

  • 메세지 교환 형태의 프로토콜: 클라이언트가 보고 싶은 걸 서버에 요청하면 응답이 온다.
  • 비연결성(Connectionless): 클라이언트와 서버가 한 번 연결을 맺은 후, 클라이언트의 요청을 서버가 응답하면 맺었던 연결을 끊는다. 불특정 다수의 통신을 줄여 더 많은 연결이 가능하지만, 동일한 요청을 새로 요청해야 한다.
  • 무상태(Stateless): 이전 상태를 유지 하지 않는다. 상태를 기억하기 위해서 쿠키, 세션, 토큰이 도입 된다.

 

 

💡 HTTP Request (요청)

: 클라이언트가 서버에게 연락하는 것을 요청이라고 하며 요청을 보낼때는 요청에 대한 정보를 담아 서버로 보낸다.

📌 URL

:서버에 자원을 요청하기 위해 입력하는 영문 주소

 

📌 HTTP 요청 메서드

  • GET : 존재하는 자원에 대한 요청
  • POST : 새로운 자원을 생성
  • PUT : 존재하는 자원에 대한 변경
  • DELETE : 존재하는 자원에 대한 삭제

📌 HTTP 요청 메시지

  •  Method : HTTP 메서드는 보통 클라이언트가 수행하고자 하는 동작을 정의한 GET, POST, OPTIONS, HEAD를 지칭한다. 클라이언트는 리소스를 가져오거나GET 사용 HTML 폼의 데이터를 전송POST 사용한다.
    다른 경우에는 다른 동작이 요구될 수도 있다.
  • Path : 가져오려는 리소스의 경로는 프로토콜 http://, 도메인 여기서는 developer.mozilla.org, 또는 TCP 포트 여기서는 80인 요소들을 제거한 리소스의 URL이다.
  • Version of the Protocol : HTTP 프로토콜의 버전.
  • Headers : 서버에 대한 추가 정보를 전달하는 선택적 헤더들.
  • etc : POST와 같은 몇 가지 메서드를 위한, 전송된 리소스를 포함하는 응답의 본문과 유사한 본문.

 

* HTTP Message: HTTP에서 클라이언트와 서버가 리소스를 교환하는 형식.

 

 

💡 HTTP Responce(응답)

: 서버가 요청에 대한 답변을 클라이언트에게 보내는 것을 응답이라고 한다.

 

📌 Status Code (상태 코드)

  • 1XX (조건부 응답) : 요청을 받았으며 작업을 계속한다.
  • 2XX (성공) : 클라이언트가 요청한 동작을 수신하여 이해했고 승낙했으며 성공적으로 처리했음을 가리킨다.
  • 3XX (리다이렉션 완료) : 클라이언트는 요청을 마치기 위해 추가 동작을 취해야 한다.
  • 4XX (요청 오류) : 클라이언트에 오류가 있음을 나타낸다.
  • 5XX (서버 오류) : 서버가 유효한 요청을 명백하게 수행하지 못했음을 나타낸다.

 

📌 HTTP 응답 메시지

  • Version of the Protocol : HTTP 프로토콜의 버전.
  • Status Code : 요청의 성공 여부와, 그 이유를 나타내는 상태 코드.
  • Status Message : 아무런 영향력이 없는, 상태 코드의 짧은 설명을 나타내는 상태 메시지.
  • Headers : 요청 헤더와 비슷한, HTTP 헤더들.
  • etc : 선택 사항으로, 가져온 리소스가 포함되는 본문.

 

🤔 HTTP의 단점

: HTTP는 암호화가 되지 않은 평문 데이터를 전송하는 프로토콜이였기 때문에 도청이 가능하고, 통신 상태를 확인하지 않기 때문에 위장이 가능하다.

 

 

💡 HTTPS 란?

: HTTP 에 암호화와 인증, 그리고 완전성 보호를 더한 프로토콜. HTTP 하부에 SSL과 같은 보안계층을 제공. HTTPS 의 SSL 에서는 대칭키 암호화 방식과 공개키 암호화 방식을 혼합한 하이브리드 암호 시스템을 사용한다. 클라이언트와 서버가 주고 받는 실제 정보는 대칭키 방식으로 암호화하고, 대칭키 방식으로 암호화된 실제 정보를 복호화할 때 사용할 대칭키는 공개키 방식으로 암호화해서 클라이언트와 서버가 주고 받는다.

 

- 실제 데이터 : 대칭키

- 대칭키의 키 : 공개키

 

-> 이렇게 두 가지 방식을 혼합하는 이유: 그것은 공개키 방식이 많은 컴퓨터 파워를 사용하기 때문이다. 만약 공개키를 그대로 사용하면 많은 접속이 몰리는 서버는 매우 큰 비용을 지불해야 할 것이다. 

반대로 대칭키는 암호를 푸는 열쇠인 대칭키를 상대에게 전송해야 하는데, 암호화가 되지 않은 인터넷을 통해서 키를 전송하는 것은 위험하다. 그래서 속도는 느리지만 데이터를 안전하게 주고 받을 수 있는 공개키 방식으로 대칭키를 암호화하고, 실제 데이터를 주고 받을 때는 대칭키를 이용해서 데이터를 주고 받는 것이다.

 

📌 SSL 란?

: SSL(Secure Sockets Layer)은 암호화 기반 인터넷 보안 프로토콜

 

출처: https://velog.io/@surim014/HTTP%EB%9E%80-%EB%AC%B4%EC%97%87%EC%9D%B8%EA%B0%80

출처: https://velog.io/@gparkkii/HTTPMessage

'CS > 네트워크' 카테고리의 다른 글

[네트워크] TCP & UDP  (0) 2022.02.05
[네트워크] HTTP & HTTPS / GET & POST / TCP & UDP  (0) 2022.01.15
[네트워크] RESTful API  (0) 2022.01.12
[네트워크] OSI 7계층 & TCP/IP  (0) 2021.12.22
Comments