HTTP는 무엇일까요?

2020. 11. 10. 23:53
지극히 개인적인 정리입니다. 잘못된 내용을 포함할 수 있으며, 설명이 부실할 수 있습니다.
혹시 그러한 내용을 찾으신다면 부디 댓글로 알려주세요 :D

HTTP(HyperText Trasfer Protocol)은 TCP 프로토콜 위에서 동작하는 Application 계층의 프로토콜입니다.

역할은 HTML 문서(뿐만 아니라 사진, 동영상 등)를 주고 받기 위한 것입니다. 

 

# Internet vs Web 

인터넷(Internet)과 웹(Web : World Wide Web)은 비슷한 듯 살짝 다릅니다. 
인터넷은 TCP/IP 기반의 네트워크가 전 세계적으로 확대되어 연결된 네트워크들의 네트워크를 의미합니다.

웹은 HTML이라는 문서 형태와 HTTP라는 문서 전송 프로토콜, URL로 문서의 위치를 표시하는 시스템을 말합니다.

# HTTP 종류별 특징

HTTP/0.9

HTTP 초기에는 버전이 없었습니다. 이후에 초기와 차이를 두기위해서 HTTP 0.9라는 이름을 갖게 되었습니다. 

HTTP/0.9는 원-라인 프로토콜이라고 부리웁니다. 

 

Request

GET /mypage.html

HTTP/0.9 요청은 하나의 라인으로 구성되며 메서드는 GET이 유일합니다. 

각각의 요청마다 TCP 연결과 연결 해제의 Handshake가 일어납니다.

 

Response

<HTML>
A very simple HTML page
</HTML>

응답은 오로지 파일내용 자체만 전송이 됩니다.

오로지 HTML 파일만 전송될 수 있으며 다른 유형의 문서는 전송할 수 없습니다.

상태 혹은 오류 코드도 없었습니다. 그래서 문제가 발생한 경우, 특정 HTML 파일이 사람이 처리할 수 있도록, 해당 파일 내부에 문제에 대한 설명과 함께 되돌려 보내졌었습니다.

 

HTTP/1.0

HTTP/0.9의 기능이 매우 제한적이었습니다. 그래서 브라우저와 서버 모두 좀 더 많은 기능을 제공할 수 있도록 발전되었습니다. 

  1. 각 요청마다 HTTP의 버전이 포함되었습니다. (ex, GET /mypage.html HTTP/1.0)
    브라우저는 HTTP의 버전을 보고 올바르게 처리할 수 있습니다. == 호완성이 높아졌습니다.
  2. 각 응답에 상태 코드가 포함되었습니다. 
    브라우저가 요청의 성공, 실패에 대해서 알 수 있게되었고 결과에 대해서 동작할 수 있게 되었습니다. == 융통성이 높아졌습니다.
  3. 각 요청과 응답에 헤더가 도입되었습니다.
    더보기
    1. Allow
    2. Authorization
    3. Content-Encoding
    4. Content-Length
    5. Content-Type
    6. Date
    7. Expires
    8. From
    9. If-Modified-Since
    10. Last-Modified
    11. Location
    12. Pragma
    13. Referer
    14. Server
    15. User-agent
    16. WWW-Authenticate
  4. Content-type 헤더가 추가되어 html 파일 외에 다른 것들이 전송 가능해졌습니다.

 

Request

GET /mypage.html HTTP/1.0
User-Agent: NCSA_Mosaic/2.0 (Windows 3.1)

이전과 다르게 GET외에도 HEAD, POST method가 추가되었습니다.

 

 

Response

200 OK
Date: Tue, 15 Nov 1994 08:12:31 GMT
Server: CERN/3.0 libwww/2.17
Content-Type: text/html

<HTML>
A page with an image
    <IMG SRC="/myimage.gif">
</HTML>

 

BELATED ARTICLES

more