HTTP와 비지속적 연결
특징)
- 각 요청-응답 쌍을 개별 TCP 연결에서 처리.
- 요청된 객체를 서버가 전송한 후 연결이 종료됨.
- HTML 파일, 이미지 등 여러 객체를 다운로드하려면 객체마다 새로운 TCP 연결을 생성.
예시)
- HTTP 클라이언트 프로세스가 서버80번 포트로 TCP 연결
- 소켓을 통해 경로를 포함한 HTTP 요청 메시지를 서버로 전달
- HTTP 서버 프로세스가 메시지 수신, 경로를 HTTP 응답 메시지에 캡슐화하여 클라이언트로 전송
- 클라이언트가 응답 메시지 수신
- TCP 연결 종료
- 만약 웹사이트가 1개의 html과 10개의 이미지로 구성되어 있다면, 총 11개의 TCP 연결 생성 → 각 TCP 연결은 한 번의 요청과 응답만 처리함.
장단점)
- 장점: 구현이 간단하며, 요청-응답이 독립적이라 연결 관리를 최소화.
- 단점:
- 각 객체마다 새로운 TCP 연결을 설정해야 하므로 추가적인 오버헤드 발생.
- RTT(왕복 시간)가 객체마다 2번씩 필요하므로 성능이 저하됨.
- 서버와 클라이언트 모두에서 TCP 버퍼와 변수 관리에 부담.
HTTP와 지속적 연결
특징)
- 하나의 TCP 연결을 여러 요청-응답 쌍에서 재사용.
- 기존 비지속적 연결에서 11개의 TCP 연결을 생성했던 것과 달리, 하나의 연결에서 연속적으로 전송(파이프라이닝).
- 연결이 일정 시간 동안 유지되며, 동일한 서버에서 여러 객체를 전송 가능.
- HTTP 1.1의 기본 설정.
장단점)
- 장점:
- TCP 연결 설정/종료에 소요되는 오버헤드 감소.
- 객체마다 2 RTT 대신 전체 페이지에 대해 최소 2 RTT로 처리 가능.
- 서버와 클라이언트의 자원 사용 감소.
- 단점:
- 장시간 연결 유지로 인해 연결 타임아웃 설정이 필요.
- 잘못된 연결로 인해 여러 요청이 실패할 가능성.
HTTP 메시지 포맷
보통 HTTP 요청 메시지의 형식은 다음과 같다.
GET /somedir/page.html HTTP/1.1
Host: www.someschool.edu
Connection: close
User-agent: Mozilla/5.0
Accept-language: fr
요청 라인(Request Line): HTTP 요청 메시지 내 첫번째 줄
- 메서드(보통 GET), url, http 버전으로 구성돼있음.
헤더 라인(Header Lines): HTTP 요청 메시지 내 요청 라인을 제외한 나머지
Web proxy caches 때문에 꼭 필요함.
- Host: 요청 객체가 위치한 서버의 호스트 이름 지정.
- Connection: 연결 유지 여부 (예: close는 비지속적 연결 요청).
- User-agent: 요청을 보낸 브라우저 정보
- Accept-language: 사용자 선호 언어 설정
'CS' 카테고리의 다른 글
[CS] TCP 혼잡 제어(TCP Congestion Control) (0) | 2025.02.01 |
---|---|
[CS] 신뢰적인 데이터 전송(Reliable Data Transfer) (0) | 2025.01.17 |
[CS] 지역성과 Fast File System (1) | 2025.01.04 |
[CS] 페이징: 더 빠른 주소 변환을 위한 TLB 기법 (3) | 2024.12.22 |
[CS] 멀티프로세서 스케줄링(Multiprocessor Scheduling) (0) | 2024.12.16 |