일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
31 |
- recyclerview
- 플로이드워셜
- 안드로이드
- Dispatchers
- apk 빌드 과정
- flutter
- 물리 메모리
- 상태관리
- 내부 단편화
- appcompatacitivity
- 디자인 패턴
- 절대 주소
- appcompatactivity
- 리사이클러뷰풀
- AsyncListDiffer
- http 역사
- Kotlin
- 리사이클러뷰
- GetX
- NestedScrollView
- AAC
- http발전과정
- 프로세스
- viewModelScope
- Android
- 데코레이터 패턴
- 자이고트
- DiffUtil
- 뷰홀더
- 운영체제
- Today
- Total
hong's android
[cs] HTTP의 발전 과정 본문
HTTP란?
HTTP(하이퍼텍스트 전송 프로토콜)은 웹 페이지, 텍스트, 이미지, 미디어, 바이너리 파일과 같은 다양한 콘텐츠 전송을 가능하게 하는 애플리케이션 계층 프로토콜입니다.
HTTP/1.0
Http/1.0은 전송 제어 프로토콜 (TCP) 기반으로 연결되며, 각 요청이 별도의 TCP 연결을 통해 생성됩니다. 각 요청마다 TCP 연결을 해야 하므로 비효율적이고, 레이턴시를 증가시킵니다. 또한, TCP는 slow-start 기반으로 작동하기 때문에 많은 TCP 연결이 추가될수록 오버헤드가 발생합니다.
HTTP/1.1
- 단일 TCP 연결에서 다수의 요청과 응답 전송
Http/1.0의 문제를 해결하기 위해 HTTP/1.1은 연결 유지(Keep-Alive) 메커니즘을 도입했습니다. 이 메커니즘은 “Connection: Keep-Alive” 헤더를 통해 하나의 연결을 여러 요청에 재사용할 수 있게 하여 반복적인 TCP 핸드셰이크와 같은 과정이 줄어들어 지연 시간이 감소했습니다.
- 응답을 대기하지 않고 여러 요청 전송 가능 (Head-Of-Line-Blocking 이슈 발생)
HTTP/1.1은 HTTP 파이프라이닝을 통해 응답을 기다리지 않고 여러 요청을 보낼 수 있도록 했습니다. 하지만 파이프라이닝에서는 “Head-Of-Line-Blocking” 문제가 발생했습니다. 이전 요청이 완료될 때까지 이후 요청이 기다려야 하며, 응답의 순서가 유지되어야 했기 때문에 이러한 방식이 효율을 떨어뜨렸습니다. 이러한 문제로 인해 많은 웹 브라우저에서 HTTP/1.1 파이프라이닝에 대한 지원이 점차 중단되었습니다.
HTTP/2
- 단일 TCP 연결에서 멀티플렉싱 방식 도입
HTTP/2는 바이너리 프레이밍 레이어를 도입하여 클라이언트와 서버 간 통신에서 더 작은 데이터 단위(프레임)를 사용합니다. 각각의 프레임은 독립적으로 작동하여 순서에 구애받지 통신을 할 수 있습니다.
더 구체적으로, http 메시지를 독립적인 개별 프레임(frame) 단위로 나누고, 이들을 상호배치(Interleave)하여 전송한 뒤 목적지에 도착하였을 때 재조립하는 방식을 사용합니다.
- 스트림 : 생성된 하나의 커넥션 내 데이터의 양방향 흐름
- 메시지 : 논리적 요청 또는 응답 메시지에 매칭되는 프레임의 완전한 시퀀스
- 프레임 : HTTP/2에서 사용되는 커뮤니케이션 단위 중 가장 작은 단위(unit)
하나의 스트림안에 한 개 이상의 요청/응답 메시지가 오갈 수 있고, 각 메시지는 프레임 단위로 상대방 측으로 전달됩니다.
- 효율적인 요청 및 응답 메타데이터 처리
HTTP/2는 요청 및 응답의 메타데이터(헤더 필드와 쿠키 데이터 포함)를 압축하는 헤더 압축 기능을 제공합니다.
- 서버 푸시 제공
HTTP/2는 서버 푸시(server push)라는 유용한 기능을 도입했습니다. 서버 푸시는 새로운 데이터가 사용 가능해질 때 서버가 클라이언트에 업데이트를 선제적으로 전송하여, 클라이언트가 반복적으로 업데이트를 요청할 필요를 없애는 방식입니다.
HTTP/3
HTTP/3와 HTTP/2의 가장 큰 변화는 QUIC 프로토콜을 기반으로 한다는 점입니다. QUIC은 TCP 대신 UDP를 사용하여 인터넷 프로토콜 위에 쌓인 프로토콜 계층의 구조에 변화를 가져왔습니다.
출처
'Develop > Cs' 카테고리의 다른 글
[CS] 물리 메모리 관리 (0) | 2025.02.19 |
---|---|
[CS] 프로세스 동기화 (0) | 2025.02.11 |
[CS] 프로세스와 스레드 (1) | 2025.01.17 |
[Cs] 컨텍스트 스위칭 (0) | 2023.01.13 |