。゚(*´□`)゚。

코딩의 즐거움과 도전, 그리고 일상의 소소한 순간들이 어우러진 블로그

CS

2.3 HTTP / HTTPS

quarrrter 2023. 12. 1. 23:55

HTTP

인터넷 상에서 데이터를 전송하기 위한 프로토콜로,TCP/IP 4계층에서 응용 계층에 속한다. 

 

특징

1. 비연결성 : 클라이언트에서 요청을 보낸 후 서버로부터 응답을 받으면 연결을 끊는 것/ 단점 보완 위해 HTTP Keep Alive 를 사용함(마지막 응답이 후 일정 시간 동안 연결 유지, 클라이언트에서 HTTP요청을 보낼 때 헤더에 추가해서 보내면 서버에서 유지할 시간을 헤더에 추가해서 응답함)

2. 무상태 : 서버에서 클라이언트의 상태를 저장하지 않는 것.

그렇기 때문에 클라이언트는 요청에 필요한 데이터를 모두 가지고 있어야하고(쿠키), 또는 서버가 클라이언트로 받은 요청 사항을 모두 저장해야함(세션). 

 

HTTP 메세지

HTTP에서는 클라이언트와 서버가 통신하기 위해 정형화된 데이터인 HTTP 메세지를 주고 받는다. 

[구조]

  • 요청라인: 요청 URI, 요청 방법, HTTP 버전 등을 포함한다.
  • 상태라인: 요청에 대한 HTTP 상태코드와 HTTP 버전을 포함한다.
  • 헤더: 키-값으로 구성된 다수의 헤더 항목으로 구성된다.
  • 빈 줄: 헤더의 끝을 나타내는 빈 줄로, 헤더와 바디를 구분한다.
  • 바디: 요청할 때 요청 방법 메서드가 POST인 경우에만 바디가 있고, 그 외 메서드일 때는 비어있는 상태로 전달

 

클라이언트 >> 서버 

요청메세지 (요청라인, 헤더, 빈줄, (바디))

 

서버 >> 클라이언트

응답메세지(상태 또는 응답라인, 헤더, 빈 줄,(바디))

 

 

[HTTP 상태 코드] : 클라이언트의 요청에 대한 서버의 상태를 알려주는 코드 

  • 1xx : 클라이언트로부터 요청을 받아 처리 중 
  • 2xx : 요청을 성공적으로 처리함
  • 3xx : 요청을 처리하기 위해 추가 처리 필요
  • 4xx : 클라이언트 오류
  • 5xx : 서버 내부 오류 발생 

 

HTTPS

보안 계층인 SSL/TLS를 이용해 HTTP의 보안을 강화한 웹 통신 프로토콜이다. HTTP는 데이터 암호화를 거치지 않고 전송해서 보안에 취약하다. 

SSL 넷스케이프에서 개발한 암호화 프로토콜인데 몇 가지 문제점을 보완해 새로운 암호화 프로토콜 TLS를 개발했다. HTTPS에서 통용되는 방식은 TLS지만, SSL이라는 명칭이 사라지지 않아서 SSL 또는 SSL/TLS라고 부른다.

 

HTTP 동작 방식

응용 계층 HTTP
전송 계층 TCP
인터넷 계층 IP
네트워크
인터페이스 계층
네트워크
인터페이스

 

 

HTTPS 

응용 계층 HTTP
보안 계층 SSL/TLS
전송 계층 TCP
인터넷 계층 IP
네트워크
인터페이스 계층
네트워크
인터페이스

 

SSL/TLS : 데이터를 송신할 때 응용 계층에서 보안 계층의 SSL/TLS로 데이터를 보내면 데이터를 암호화해 전송 계층으로 전달한다.

데이터를 수신할 때 전송 계층에서 보낸 데이터를 보안 계층의 SSL/TLS에서 받아 복호화한 후 응용 계층으로 보낸다.

 

 

 

 

웹 페이지 접속 과정

사용자가 URL을 입력했을 때 화면이 나타나기까지 전체 과정

 

1. 사용자가 URL을 웹 브라우저에 입력한다.

2. 웹브라우저는 입력한 URL을 바탕으로 DNS 서버에 연결할 IP를 요청한다.

3. DNS 서버는 IP주소를 웹 브라우저에게 응답으로 제공한다. 

4. 웹 브라우저는 DNS 서버에서 받은 IP를 통해 웹 서버와 TCP/IP 연결을 하고 HTTP 요청을 보낸다.

5. 웹 서버는 받은 HTTP 요청에 응답한다. 응답은 웹 페이지와 필요한 리소스를 포함한다.

6. 웹 브라우저는 받은 응답을 바탕으로 사용자에게 웹 페이지를 보여 준다.

'CS' 카테고리의 다른 글

2. 컴퓨터 네트워크 정리  (0) 2023.12.04
2.4 REST  (0) 2023.12.04
2.2 TCP와 UDP  (1) 2023.11.29
2.1 네트워크 계층  (1) 2023.11.28
1. 운영체제 질문  (0) 2023.11.25