Chapter2.2 웹과 HTTP(1): 동작원리와 지속 비지속 연결
- 웹 서비스 모델
- HTTP 원리
- 비지속(non-persistent) 연결 HTTP
- 지속(persistent) 연결 HTTP
웹 서비스 모델
- 웹 브라우저와 웹 서버
* HTTP(Hyper Text Transfer Protocol)
: 클라이언트 웹 브라우저와 웹 서버 간에 정보를 교환하는 중요한 프로토콜
- 웹 서버(Web server)
: 웹 페이지(Web page)들의 저장소와 요청 처리 소프트웨어 - 웹 페이지
- 기본 객체(base object)와 참조 객체(object)들로 구성
- 기본 객체: HTML file, 페이지 내의 다른 객체를 URL(하이퍼링크, hyperlink)로 참조
- 참조 객체: HTML file, JPEG image, Java applet, audio file, vidieo file, ...,
서로 다른 서버에 존재 가능(같은 서버에 존재할 수도, 다른 서버에 존재할 수도!) - 웹 객체 주소: URL (Unifrom Resource Locator)
- host name: 웹서버가 탑재된 컴퓨터의 도메인 주소
- path name: 그 웹 서버 내에 내가 지정하고자 하는 웹페이지 파일의 경로 정보(/이후)

- 웹 브라우저
- 웹 서비스 사용자 인터페이스
- 웹 페이지 요청 및 응답 페이지 디스플레이 - HTTP(Hyper Text Transfer Protocol)
- 웹 브라우저와 웹 서버 간의 요청 정보와 응답 정보 교환 규칙 정의 - TCP Connection
- 웹 요청 정보와 응답 정보의 신뢰 전송 통로
*HTTP를 통해 교환되는 메시지들은 TCP 커넥션을 통해 신뢰 전송방식으로(오류없이) 교환된다.
HTTP 원리
- HTTP 요청(request)과 응답(response)
: 웹 객체 각각에 대한 요청과 응답 메시지

- HTTP Request
- 웹 사용자의 요청(URL 입력 또는 하이퍼링크 클릭)으로, 웹 브라우저에 의해 생성되는 메시지
- 웹 서버의 웹 객체 URL과 해당 웹 객체 처리 방식 정보 제공
- 하위 계층의 TCP 연결을 통해 웹 서버에게 전송 - HTTP response
- 웹 브라우저의 요청으로 웹 서버에 의해 생성되는 메시지
- 수신한 URL에 해당되는 웹 객체와 웹 객체 속성(attribute) 정보 제공
- 하위 계층의 TCP 연결을 통해 웹 서버에게 전송
- 비상태형 프로토콜(stateless protocol)
- HTTP request 메시지와 HTTP response 메시지 간의 관계 정보가 웹 서버에 저장되지 않음
- 서버는 수신되는 HTTP request 메시지 간이 관계 추론 불가
- 웹 브라우저-웹 서버 간의 통신 상태 정보를 유지하지 않음(stateless protocol)
*Why?
HTTP request 메시지가 웹 브라우저로부터 웹 서버에 전송이 되면,
거기에 대응되는 HTTP response 메시지에 대한 정보를 웹 서버에 유지하지 않음.
그래서 서버는 반복해서 http request가 오더라도, 어떤 http의 request인지 알 수 없음.(추론 불가)
=> HTTP 웹 서버는 기본적으로 request 메세지를 하나하나 전부 다 독립적으로,
스스로 그 상관관계를 추론할 수 없도록 처리한다. (stateless protocol)
HTTP와 TCP 연결
- TCP 연결과 HTTP 요청

*SYN: TCP 연결요청 메시지
*SYN 요청 메세지->그에 대한 응답 메세지
->(내가 요청한 tcp 연결이 되었음을 확인) -> 그 판단근거를 서버에 알림.
*3-way Handshaking
1) TCP 요청 메세지(SYN) 보냄
2) 응답 메세지 받음 //(1)+(2) = 왕복지연시간(RTT)
3) HTTP 요청
*위의 과정을 통해 설정한 TCP를 계속 지속적으로 사용할 것인지,
혹은 객체 하나 다운 후에는 TCP 연결을 해제하고 그 다음에 다시 TCP를 설정할 것인지
를 결정해야 함! (지속적/비지속적 연결 HTTP의 개념)
비지속(non-persistent) 연결 HTTP
- 비지속 연결 HTTP
- 웹 객체를 위한 HTTP request와 HTTP response 메시지 쌍마다 별도의 TCP 연결 설정
- 10개의 객체로 구성된 웹 페이지 전송을 위해 10개의 TCP 연결 설정
- 다중 연결(multiple connections) 설정으로 병렬 전송 가능
- 서버 자원 관리 차원에서 클라이언트별 병렬 연결 수 제한 (5~10)

- 비지속 HTTP와 지연시간
- 객체별 지연시간: 2RTT + 객체파일 전송시간
*만약, 순차적으로 전송된다면
위의 객체별 지연시간에 N을 곱해 계산한다.

지속(persistent) 연결 HTTP
- 지속 연결 HTTP
- 동일 서버의 다수 웹 객체가 하나의 TCP 연결을 통해 클라이언트에게 전송하도록 TCP 연결 유지
- 일정 시간 동안 사용하지 않으면 TCP 연결 해제
- [장점] TCP 연결 지연시간 절약,
[단점] 사용하지 않는 시간 동안 자원(소켓 자료구조) 낭비 - 다수의 객체를 한꺼번에 요청하고 응답하는 파이프라이닝(pipelining) 적용 가능

지속비지속 연결 장단점 비교
- 지속 연결 HTTP
- TCP 연결 지연시간 회피 // 장점
- 파이프라이닝 지원 가능 // 장점
- 사용하지 않는 시간 동안 TCP 연결 자원 낭비 // 단점
- 비지속 연결 HTTP
- 필요할 때만 TCP 연결 - 자원(소켓 자료구조) 낭비 회피 // 장점
- 병렬 TCP 연결 지원 가능 - 제한적 // 장점 - 단점
- TCP 연결 지연시간 발생 // 단점
- 하이브리드 HTTP 가능
'CS > 네트워크' 카테고리의 다른 글
[컴퓨터네트워크] Chapter2.3 이메일과 SMTP (0) | 2023.10.25 |
---|---|
[컴퓨터네트워크] Chapter2.2 웹과 HTTP(2): 메시지, 쿠키, 캐시 (0) | 2023.10.25 |
[컴퓨터네트워크] Chapter2.1 응용계층원리 (0) | 2023.10.11 |
[컴퓨터네트워크] Chapter1.5 네트워크 사이버 공격(Network Attacks) (0) | 2023.10.11 |
[컴퓨터네트워크] Chapter1.4 프로토콜 계층 구조 (0) | 2023.10.10 |