Develop Note by J.S.

[Network] HTTP 본문

Knowledge/Network

[Network] HTTP

js-web 2023. 7. 3. 10:03
반응형

HTTP는 HyperText Transfer Protocol 의 약자로 Web브라우저에서 사용하는 네트워크 통신 프로토콜입니다. HTTP는 현재 HTTP3 버전까지 나온 상태이며 각 버전별 특징을 간략하게 정리하였습니다.

 

우선 HTTP 버전설명 전에 TCP와 UDP의 차이점을 알아야 할 것 같습니다. 

TCP : OSI 4계층의 연결형 프로토콜로 신뢰성있는 데이터 통신이 가능하며, 에러 복구, 흐름제어 기능을 담당합니다. 

UDP : 같은 4계층의 비연결형 프로토콜로 순서가 보장되지 않고 흐름제어를 할 수 없지만, 속도가 빠르고 checkSum을 통해 최소한의 오류를 잡습니다. 

 

HTTP 1.1 (TCP)

  • Connection 한개당 하나의 요청만 처리가 가능하여 요청/응답이 1:1 Sequence로 동작. 
  • HOL(Head Of LIne) Blocking이 발생될 수 있다. 
    * HOLB : 패킷 전송 중 오류 패킷이 발견 될 경우 재 전송될 때까지, 다음 패킷들의 멈춰있는 지연 상태 발생
  • RTT(Round Trip Time) 증가 

 

* 1개의 Connection에 1회의 요청응답처리로 인해 매 요청 시 Connection으로 인한 3-way Handshake 가 반복적으로 발생되어 불필요한 RTT(왕복시간) 증가 및 네트워크 지연발생 (TLS 암호화까지 3 RTT 소모)

 

* 3-way Handshake : Client에서 Server로 Connection을 맺기위해 Signal을 보내 연결을 맺는 단계로 SYN, ACK의 신호를 주고 받음.

 

 

 

 

HTTP 2 (TCP)

  • 이전 버전 대비 네트워크 속도, 리소스 사용량 등의 성능 위주로 개선.
  • Multiplexed Streams : 1개의 Connection으로 다수의 요청/응답을 가능하게 하며 Stream형식으로 주고받음. 
  • Header정보를 HPACK으로 압축하여 헤더크기 감소. 
  • Client가 요청하기 전에 Server측에서 콘텐츠 푸시 가능. 

 

HTTP 3 (UDP)

  • QUIC 프로토콜을 사용하여 UDP에 의존하며. UDP의 특징을 살려 연결 속도를 향상 
  • 기본적으로 TLS 암호화 방식이 적용되어 보안성 향상
  • 0-RTT 이미 연결된 서버는 Handshake를 건너 뛸 수 있음. (첫 연결 시에만 1 RTT를 소모)
  • Multiplexing 을 지원
  • 전방오류정정(FEC) 방식을 사용하여 오류발생 시 패킷 재 전송이 아닌, 정정비트를 통해 훼손된 비트를 복구

 

 

참고사이트
https://velog.io/@wiostz98kr/HTTP1.1%EA%B3%BC-HTTP2.0%EC%9D%98-%EC%B0%A8%EC%9D%B4-e2v4x4t1

https://velog.io/@rlacksals96/%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC-TCPUDP%EC%99%80-3way-handshake

https://www.spirent.kr/blogs/building-next-generation-web-with-http-3

반응형

'Knowledge > Network' 카테고리의 다른 글

[Network] OSI 7계층 & TCP/IP 4계층  (0) 2023.08.08
[Network] API Architecture  (0) 2023.06.27
[Network] Socket.io vs Websocket  (0) 2023.06.26
[Network] HTTPS  (0) 2023.06.26