우리는 간혹 www.naver.com 과 같이 도메인 이름을 직접 검색하여 웹 사이트에 접속할 때가 있습니다. 그러나 자세히 보면 앞에 http 혹은 https 라는 키워드가 붙은 것을 볼 수 있습니다. 이번 시간에는 http 프로토콜에 대해 자세히 알아보겠습니다.

HTTP 프로토콜의 요청과 응답
브라우저 는 HTTP 요청 메소드, URL 경로, HTTP 프로토콜 버전 정보와 Header가 담긴 정보를 서버에 전달한다. Header는 웹사이트 도메인의 호스트, 언어, 사용자의 브라우저 등 서버가 필요한 정보를 전달한다.
//HTTP Request
GET /index.html HTTP/1.1
Host: example.com
User-Agent: Mozilla/5.0
Accept-Language: ko-KR
서버 는 HTTP 프로토콜 버전 정보와 HTTP 상태 코드를 클라이언트에 전달한다. 여기서의 Header는 브라우저가 필요한 정보를 전달한다. 응답의 Body는 브라우저가 요청한 데이터를 반환한다.
//HTTP Response
HTTP/1.1 200 OK
Date: Sat, 09 Oct 2023 14:28:02 GMT
Server: Apache
Content-Type: text/html
<html>
...
</html>
// HTTP Status Code
- 1xx (정보) : 요청을 받았으며 프로세스를 계속한다.
- 2xx (성공) : 요청을 성공적으로 받았으며 인식했고 수용하였다.
- 3xx (리다이렉션) : 요청 완료를 위해 추가 작업 조치가 필요하다.
- 4xx (클라이언트 오류) : 요청의 문법이 잘못되었거나 요청을 처리할 수 없다.
- 5xx (서버 오류) : 서버가 명백히 유효한 요청에 대해 충족을 실패했다.
HTTP와 HTTPS의 차이
HTTP는 데이터를 암호화하지 않고 전송하기 때문에 중간에 제3자가 데이터를 가로채고 읽을 수 있다. 반면에, HTTPS 는 HTTP에 Secure 키워드가 추가된 것으로 브라우저와 서버가 데이터를 전송하기 전에 안전하고 암호화된 연결을 생성한다. (포트번호 또한 HTTP는 80, HTTPS는 443 으로 다르다.)
가끔 어떤 사이트에 방문했을 때 "연결이 비공개로 설정되어 있지 않습니다." 혹은 "안전하지 않은 정보를 제출하려 함" 이라고 경고 페이지가 나타나는 것은 주로 HTTPS가 아닌 HTTP 프로토콜로 이루어진 웹 페이지에 방문하려고 할 때 나타나는 현상이다. HTTPS 프로토콜을 도메인에서 사용하기 위해서는 SSL 인증을 받아야 하는데, 이것이 만료되거나 문제가 발생한 경우 쉽게 찾아볼 수 있는 모습이다. 이럴 경우애는 고급 탭을 눌러 안전하지 않은 사이트로 이동해야 할 수 있다.

오늘은 HTTP 프로토콜에 대해 자세히 알아보았습니다. 다음에는 우선 URL의 구성 요소인 Query String 에 대해 자세히 다뤄보도록 하겠습니다.