HTTP(하이퍼텍스트 전송 프로토콜)란?

웹 브라우저와 웹 서버 등의 사이에서 HTML이나 이미지, 데이터를 주고받기 위한 응용 계층의 프로토콜. 클라이언트가 메서드, URL, 헤더, 본문으로 이루어진 요청을 보내고, 서버가 상태 코드, 헤더, 본문으로 이루어진 응답을 돌려준다. 프로토콜로서는 무상태이며, 로그인 같은 상태는 Cookie 등을 사용하여 유지한다. HTTP/1.1은 텍스트 형식으로 지속 연결을 사용하고, HTTP/2는 하나의 TCP 연결 위에서 여러 스트림을 다중화하며, HTTP/3은 UDP 위의 QUIC을 사용한다. TLS로 보호한 것을 HTTPS라고 한다.

일본어 명칭: HTTP

HTTP(하이퍼텍스트 전송 프로토콜)은(는) 웹 기술 기초, 네트워크 기초 등 2개 분야의 연습 문제 14개에 나와요.

분야: 웹 기술 기초

요청과 응답의 형태

요청은 'GET /index.html HTTP/1.1' 같은 요청 라인, Host나 Accept 등의 헤더, 빈 줄, 본문의 순서로 나열됩니다. 응답은 'HTTP/1.1 200 OK' 같은 상태 라인, Content-Type이나 Cache-Control 등의 헤더, 본문으로 이루어집니다. 헤더는 '이름: 값' 형태로, 본문의 종류, 캐시 취급, 인증 정보, 압축 방식 등을 전합니다.

버전에 따른 차이

HTTP/1.1에서는 하나의 TCP 연결을 재사용하는 지속 연결이 표준이지만, 하나의 연결에서는 응답을 차례로 하나씩 받습니다. HTTP/2는 메시지를 바이너리 프레임으로 나누어 하나의 연결에 여러 요청과 응답을 다중화하고, 헤더도 압축합니다. HTTP/3은 전송 계층에 UDP 위의 QUIC을 사용하여, 패킷 손실이 관계없는 스트림까지 멈추게 하는 문제를 줄이고, 연결 설정에 필요한 왕복도 줄였습니다.

무상태와 상태 관리

HTTP는 각 요청을 독립적으로 다루는 무상태 프로토콜입니다. 서버가 이전 요청을 기억하지 않아도 되므로, 많은 서버로 부하를 나누기 쉬워집니다. 로그인 같은 상태는 서버가 발급한 세션 ID를 Cookie로 주고받거나, 서명된 값을 Authorization 헤더로 보내는 등의 방법으로 애플리케이션 쪽에서 유지합니다.

도전해 보기: HTTP(하이퍼텍스트 전송 프로토콜) 관련 문제

HTTPS(HTTP를 TLS로 보호한 통신)로 보호되는 것으로 올바른 것은?

  1. A접속한 웹사이트의 운영자가 악의가 없는 신뢰할 수 있는 사람이나 조직이라는 것
  2. B통신하고 있다는 사실 자체나 접속한 서버의 IP 주소가 도중의 경로에서 보이지 않는다는 것
  3. C통신 내용을 도중에 엿보거나 바꿔 쓸 수 없다는 것과, 접속한 서버가 인증서에 적힌 도메인 이름의 정당한 소유자라는 것
정답과 해설 보기

정답: C. 통신 내용을 도중에 엿보거나 바꿔 쓸 수 없다는 것과, 접속한 서버가 인증서에 적힌 도메인 이름의 정당한 소유자라는 것

TLS는 통신의 암호화(기밀성), 변조 검출(무결성), 서버 인증의 세 가지를 제공합니다. 서버는 인증서를 제시하고, 브라우저는 신뢰하는 인증 기관(CA)의 서명을 따라가 인증서가 올바른지 확인하며, URL의 도메인 이름과 일치하는지도 확인합니다. 다만 확인할 수 있는 것은 '그 도메인 이름의 소유자와 통신하고 있다'는 것까지이며, 사이트 운영자가 선량한지는 알 수 없습니다. 사기 사이트라도 자기 도메인 이름의 인증서는 취득할 수 있습니다. 또한 IP 헤더는 암호화되지 않으므로, 어느 IP 주소와 언제, 얼마나 많은 양을 통신하고 있는지는 도중의 경로에서 보입니다.

HTTP/1.1 요청의 첫 줄(요청 라인)에 나열되는 요소의 조합으로 올바른 것은?

  1. A메서드, 요청 대상(경로 등), HTTP 버전
  2. BHTTP 버전, 상태 코드, 이유를 나타내는 짧은 문구
  3. C출발지 IP 주소, 목적지 포트 번호, 메서드
정답과 해설 보기

정답: A. 메서드, 요청 대상(경로 등), HTTP 버전

HTTP 요청은 요청 라인, 헤더(한 줄에 하나씩 '이름: 값'), 빈 줄, 본문의 순서로 나열됩니다. 예를 들어 'GET /docs/index.html HTTP/1.1'은 GET 메서드로 /docs/index.html을 요구하는 줄입니다. HTTP/1.1에서는 Host 헤더도 반드시 보내, 같은 IP 주소로 여러 사이트를 운영하더라도 어느 사이트에 대한 요청인지 서버가 판단할 수 있게 합니다. 응답의 첫 줄은 상태 라인으로, 'HTTP/1.1 200 OK'처럼 버전, 상태 코드, 이유 구문이 나열됩니다.

자주 묻는 질문

HTTP와 HTTPS는 무엇이 다른가요?

HTTPS는 HTTP 통신을 TLS로 암호화하고, 변조 검출과 서버 인증을 더한 것입니다. 요청이나 응답의 형태는 HTTP와 같으며, 기본 포트 번호는 HTTP가 80, HTTPS가 443입니다. 비밀번호나 Cookie를 지키기 위해 웹사이트에서는 일반적으로 HTTPS를 사용합니다.

GET과 POST는 어떻게 구분해서 사용하나요?

GET은 리소스를 가져오기 위한 메서드로, 서버의 상태를 바꾸지 않는 '안전'한 것으로 취급되어 브라우저나 캐시가 반복해서 보내거나 저장하기도 합니다. POST는 주문이나 게시처럼 서버에 처리를 시키거나 데이터를 등록할 때 사용합니다. GET의 쿼리는 URL에 들어가 접근 기록이나 열람 이력에 남으므로, 비밀번호 같은 비밀 정보는 넣지 않습니다.

해설 속 HTTP(하이퍼텍스트 전송 프로토콜)

HTTP(하이퍼텍스트 전송 프로토콜)이(가) 나오는 문제 (14)

  1. HTTPS(HTTP를 TLS로 보호한 통신)로 보호되는 것으로 올바른 것은?
  2. HTTP/1.1 요청의 첫 줄(요청 라인)에 나열되는 요소의 조합으로 올바른 것은?
  3. HTTP의 상태 코드와 그 의미의 조합으로 올바른 것은?
  4. HTTP/2와 HTTP/3에 대한 설명으로 올바른 것은?
  5. HTTP는 무상태(stateless) 프로토콜이다. 이것과, 웹사이트에서 로그인한 상태를 유지하는 일반적인 방법에 대한 설명으로 올바른 것은?
  6. 온라인 결제 서비스에서 결제가 완료된 것을 가맹점 서버가 즉시 알고 싶어 한다. 결제 서비스가 미리 등록된 가맹점의 URL로 HTTP POST로 통지를 보내는 방식(Webhook)에 대한 설명으로 올바른 것은?
  7. 1.5 MB의 텍스트 데이터를 gzip으로 3분의 1 크기로 압축하여 보낸다. 대역폭이 10 Mbps, RTT가 100 ms이고, 데이터를 보내기 시작하기 전에 TCP 연결, TLS 핸드셰이크, HTTP 요청에 합쳐서 3왕복이 걸린다고 한다. 1 MB = 10^6바이트로 하고, 압축과 압축 해제 시간, 헤더, TCP의 혼잡 제어에 의한 대기는 무시한다. 데이터를 다 받을 때까지의 시간에 가장 가까운 것은?
  8. TCP/IP의 4계층 모델에서 TCP와 UDP가 속하는 계층은?
  9. UDP의 특징으로 올바른 것은?
  10. RTT(왕복 시간)가 100 ms인 웹 서버에 HTTPS(TCP 위의 TLS 1.3)로 새로 접속하여, 첫 요청을 보내고 응답을 받기 시작할 때까지 걸리는 시간에 가장 가까운 것은? DNS 이름 해석은 끝났으며, 서버의 처리 시간과 데이터 전송 시간은 무시한다.
  11. 프로토콜과 그 서버가 표준으로 사용하는 포트 번호의 조합으로 올바른 것은?
  12. RTT가 40 ms인 웹 서버에서 HTML 하나와 거기서 참조하는 이미지 4개를 하나씩 차례로 가져온다. TCP 연결 설정에 1왕복, 각 요청과 응답에 1왕복이 걸린다고 하고, 데이터 전송 시간, 서버의 처리 시간, TLS, 연결 종료는 고려하지 않는다. 객체마다 새로운 TCP 연결을 여는 경우와 하나의 TCP 연결을 재사용하는 지속 연결의 경우에 걸리는 시간의 차이는?
  13. 채팅 앱에서 새 메시지를 서버에서 브라우저로 즉시 전달하고 싶다. WebSocket에 대한 설명으로 올바른 것은?
  14. 웹 시스템을 웹 서버, 애플리케이션 서버, 데이터베이스 서버의 3계층으로 구성한다. 애플리케이션 서버가 주로 담당하는 처리로 적절한 것은?

관련 용어

TLS DNS(도메인 네임 시스템) 포트 번호(Port Number) HTTP 상태 코드(HTTP Status Code) 쿠키(Cookie) OSI 참조 모델(OSI Reference Model) 3-way 핸드셰이크(Three-way Handshake) SSH 웹소켓(WebSocket) 동일 출처 정책(Same-origin Policy)

용어집으로 돌아가기