본 내용은 한양대학교 이석복 교수님의 강의를 참고하여 정리하였습니다. 교재는 Pearson/Addison Wesley에서 출판한 Computer networking : a top-down approach입니다.
HTTP (Hyper Text Transfer Protocol)
- 인터넷에서 데이터를 주고 받을 수 있는 프로토콜
- Hyper Text : 사용자가 한 문서에서 다른 문서로 접근할 수 있는 텍스트
- TCP 기반
* TCP connection 생성
- Stateless
* 서버는 이전 clients의 요청에 대한 정보를 기록하지 않음
* 단지 요청이 오면 보내기만 함
- 동작
* 간단한 동작
* Client는 Hyper Text를 요청
* Server는 Hyper Text를 보냄
HTTP connection 종류
- TCP 연결의 지속적(persistent) 사용 여부에 따라 분류
1) Non-persistent HTTP
- TCP를 통해 메시지를 주고 받은 뒤에 TCP 연결을 끊음
- 비효율적
- 예시
* 상황 : 사용자가 www.someschool.edu/someDepartment/home.index를 입력하여 텍스트와 jpeg 10개를 포함하는 자료를 받으려고 한다.
* 과정
1. Client는 Server의 80번 포트를 통해 www.someschool.edu와 TCP 연결 요청
2. Server는 TCP 연결을 수락하고 Client에게 알림
3. Client는 someDepartment/home.index를 원한다는 HTTP 요청 메시지를 보냄
4. Server는 someDepartment/home.index를 보내는 HTTP 응답 메시지를 보냄
5. Client과 Server는 TCP 연결을 끊음
6. Client는 받은 HTML 파일을 parsing하고 필요한 jpeg 파일을 받기 위해서 1~5번 반복
2) Persistent HTTP
- TCP를 통해서 메시지를 주고 받은 뒤에 TCP 연결 유지
- 효율적. 그 이유는, 매번 자료를 요청할 때 TCP 연결을 위한 시간을 사용하지 않기 때문에
- 예시
* 상황 : Client가 요청한 object를 모두 받을 때까지 걸리는 시간은?
+ Control message(e.g. HTTP request) : K bit long
+ Base HTML object : L bits
+ N reference object(jpeg) : L bit long
+ Link bandwidth : R bps
+ Propagation delay : d seconds
* 방법 : Transmission delay와 Propagation delay를 이용
+ TCP 연결하는데 걸린 시간 : 2 * (K/R + d)
+ HTML 요청과 응답에 걸린 시간 : (K/R + d) + (L/R + d)
+ 이미지 요청과 응답에 걸린 시간 : 10 * {(K/R + d) + (L/R + d)}
+ 총 걸린 시간 : 13K/R + 11L/R + 24d
* 더 효율적인 방법으로 바꾸기
+ Parsing을 통해 10개의 이미지를 한 번에 묶어서 요청하는 것은 어떨까?
* 방법
+ TCP 연결하는데 걸린 시간 : 2 * (K/R + d)
+ HTML 요청과 응답에 걸린 시간 : (K/R + d) + (L/R + d)
+ 이미지 요청과 응답에 걸린 시간 : (10K/R + d) + (10L/R + d)
+ 총 걸린 시간 : 13K/R + 11L/R + 6d
HTTP message
1) HTTP request message
- 구성 : Request line + Header + Body
GET https://www.zerocho.com HTTP/1.1 (공백) 본문 |
- Request line : 데이터 처리 방식(HTTP 메소드) + 주소 + HTTP 버전
- Header : 요청 정보
+ User-Agent : 사용자 웹 브라우저 종류 및 버전 정보
+ Accept : 웹 서버로부터 수신되는 데이터 중 웹 브라우저가 처리할 수 있는 데이터 타입
+ Cookie : 사용자 정보를 기억하기 위한 값
+ Referer : 현재 페이지 접속 전에 어느 사이트를 경유 했는지 알려주는 URL
+ Host : 사용자가 요청한 도메인 정보
- Body : HTTP의 페이로드
2) HTTP response message
- 구성 : Status line + Header + Body
HTTP/1.1 200 OK |
- Status line : HTTP 버전 + 상태 코드 + Reason-phrase
* 상태 코드
+ 200 : OK
+ 404 : Not Found
- Header : 응답 정보
+ Date
+ Server
+ Content-type
+ etc
Cookies
- 부여된 특정 번호
- HTTP의 Stateless를 보완하기 위한 방법
- 예시
* 상황 : 본인이 아마존에서 상품을 구매
+ 본인은 아마존 URL을 입력
+ 웹 브라우저는 HTTP request를 만들면서 컴퓨터에 cookie file에서 아마존 URL에 대한 cookie를 탐색
+ 없으면, HTTP request msg를 보냄
+ 아마존 server는 client가 새로 접속해서 ID를 생성하고 본인이 했던 작업(책 주문)을 database에 저장
+ 아마존 server는 본인에게 HTTP response를 수행하면서 cookie 번호 1234를 보냄
+ 본인 컴퓨터는 cookie를 저장
+ 본인이 아마존에 다시 접속할 때, cookie를 가지고 요청
+ 아마존 서버는 cookie를 보고 database에 저장된 사용자의 정보를 가져와서 자동 로그인을 하거나, 상품을 추천하는 등의 서비스를 수행
참조
'Software Courses > Network' 카테고리의 다른 글
Application : DNS (0) | 2020.12.30 |
---|---|
Application : Proxy server (0) | 2020.12.30 |
Application layer : 개요 (0) | 2020.12.29 |
네트워크 구성요소 : Network Core (0) | 2020.12.28 |
네트워크 구성요소 : Network Edge (0) | 2020.12.28 |