HTTP 완벽 가이드 3장 HTTP 메시지
- 메시지의 흐름
- HTTP는 인바운드, 아웃바운드라는용어로 트랜잭션 방향을 표현한다.
- 인바운드: 메시지가 서버 방향으로 가는것
- 아웃바운드: 메시지가 다시 클라이언트로 돌아오는것
- 업스트림: 메시지의 발송자는 수신자의 업스트림
- 다운스트림: 메시지는 강물처럼 다운스트림으로 흐른다
- CRLF
- 시작줄과 헤더는 CRLF 줄바꿈문자열로 구분된다.
- HTTP 명세에 따르면 줄바꿈 문자열은 CRLF인데, 개행 문자도 받아들여야할 필요성이 있다.
- 시작줄/헤더
- 아스키 문자열로 구성
- CRLF(캐리지 리턴과 개행문자)로 구성
- 헤더는 본문에 대한 정보를 준다
- 본문
- 엔터티 본문은 텐스트, 이진데이터, 비어있기 모두 가능하다
- 메시지는 요청 메시지이거나 응답메시지이다
- 요청 메시지의 구조
<메서드> <요청 URL> <버전>
<헤더>
<엔터티 본문>
- 버전: 사용중인 HTTP 버전
- 응답 메시지의 구조
<버전> <상태 코드> <사유 구절>
<헤더>
<엔터티 본문>
- 상태 코드: 요청중에 무슨일인지, 실패했는지 성공했는지 등
- 버전 번호:
- 요청과 응답 메시지 양쪽에 있다
- 자신이 따르는 프로토콜의 버전을 상대방에게 알려주는 용도
- HTTP 관련 youtube 영상 요약
이챕터는 읽다보니까 잘 모르겠어서 영상의 힘을 받기로했다!![다른 요약자료]
www.youtube.com/watch?v=0OrmKCB0UrQ&ab_channel=HusseinNasser
- HTTP Anatomy
- HTTP 리퀘스트의 항목
URL |
Method type |
Headers |
Body |
- HTTP 리스폰스의 항목
Status Code |
Headers |
Body |
- HTTP 1.0 over TCP
TCP 커넥션을 다 감당하기엔 메모리가 좀 딸리던 시절.
index.html 을 요청하는 get 요청을 보내고 바로 닫음.
근데 그다음에 이미지 같은걸 요청하기엔 이미 요청을 닫아버림.
TCP 요청 열고 닫느라 시간다 쓴다. 이렇게 살수는 없는 법. 요약하자면 HTTP1.0은 아래의 특징을 가지고 있다.
- New TCP connection with each request
- Slow
- Buffering
- HTTP 1.1 over TCP
한 20년정도 썼다고... Keep Alive 라는게 나타났다.
요청하나 했다고 바로 닫고 그러지않고, 좀 열어둠.
- Persisted TCP Connection: 바로 안닫는다
- Low latency: 좀 빨라짐
- Streaming with Chuncked transfer
- Pipelining(disabled by default)
- HTTP/2 over TCP
- Multiplexing: [참고자료]
- compression
- Server Push
- SPDY
- secure by default
- Protocol Negotiation during TLS
- HTTP/2 over QUIC(HTTP/3)
- Replaces TCP with QUIC(UDP with congestion control)
- All HTTP/2 features
- Still experimental as of making of this video
- 더 짧은 영상
후기
이걸 뭐 어떻게 쓴다는건진 모르겠구먼. 개념만 알아두고, 나중에 막상 뭔가 처리할일이 있으면 다시 공부를 할 부분인것 같다.
참고자료
웹서버 HTTP2 지원 확인 방법
개요 대부분의 브라우저가 HTTP2를 지원하는 반면 아직까지도 대부분의 웹서버들은 HTTP2 를 지원하지 않는 경우가 많다. 여기서는 자신이 사용하고 웹사이트나 운영하는 웹서버가 HTTP2 프로토콜
fliedcat.tistory.com
- evan-moon.github.io/2019/06/13/http2-with-aws/
AWS와 함께 간단하게 HTTP/2 적용하기
이번 포스팅에서는 AWS(Amazon Web Service) 환경에서 HTTP/2 프로토콜을 적용하는 방법에 대해서 설명하려고 한다. AWS의 와 는 자체적으로 HTTP/2 프로토콜을 사용할 수 있는 기능들을 제공해주고 있기
evan-moon.github.io