HTTP는 무엇일까요?
지극히 개인적인 정리입니다. 잘못된 내용을 포함할 수 있으며, 설명이 부실할 수 있습니다.
혹시 그러한 내용을 찾으신다면 부디 댓글로 알려주세요 :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의 기능이 매우 제한적이었습니다. 그래서 브라우저와 서버 모두 좀 더 많은 기능을 제공할 수 있도록 발전되었습니다.
- 각 요청마다 HTTP의 버전이 포함되었습니다. (ex, GET /mypage.html HTTP/1.0)
브라우저는 HTTP의 버전을 보고 올바르게 처리할 수 있습니다. == 호완성이 높아졌습니다. - 각 응답에 상태 코드가 포함되었습니다.
브라우저가 요청의 성공, 실패에 대해서 알 수 있게되었고 결과에 대해서 동작할 수 있게 되었습니다. == 융통성이 높아졌습니다. - 각 요청과 응답에 헤더가 도입되었습니다.
더보기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 - 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>
'2020 백엔드 개발자 로드맵' 카테고리의 다른 글
인터넷은 어떻게 동작할까요? (0) | 2020.11.09 |
---|---|
2020 백엔드 개발자 로드맵 (0) | 2020.11.09 |