* 주 목표 : HTTP 이해, DNS 이해
○ HTTP (HyperText Transfer Protocol)
정말 간단하게 생각하면 Client의 Http request, 그에 대한 Server의 HTTP response.가 끝인 simple한 프로토콜.
Protocol = 통신 규약. 약속
1. HTTP는 TCP 사용 : Socket을 만들어서 Client - Server. port는 80 사용.
2. HTTP is stateless : state가 없음. server는 just request. protocol이 state를 관리하는건 complex하다.
○ HTTP 통신 2 Types
1. Non - Persistent HTTP : 1request - 1response. TCP 연결 한 번에 최대 하나의 객체 전송.
a. TCP connection open
b. 1object sent
c. TCP connection close
d. repeat n times
2. Persistent(지속적) HTTP : n request - 1 response
a. TCP connection open
b. multiple objects sent to single TCP connection
c. TCP connection close
○ 통신 delay 종류
1. processing delay : 라우터 내에서 패킷이 진행하는 과정. 매우 짧으며, 라우터 내 HW 성능에 따라 변동
2. queueing delay : 라우터로 패킷 큐로 관리할 때, 전송을 위해 output link의 큐에서 기다리면서 발생하는 지연. 라우터의 congestion(혼란)정도가 결정. 예측 힘들다
3. Transmission delay : 큐를 빠져나가 라우터의 output linke를 통해 빠져나가기 전에 발생하는 딜레이. 즉, 전송하려는 패킷을 output link로 밀어내는데 걸리는 시간. link의 bandwidth(대역폭, 최대 전송 가능 양)에 따라 결정.
4. Propagation delay : 실제 link를 타고 데이터가 전송될 때 발생하는 delay. 거리와 link에 따라 결정된다(distance / propagation speed). 다른 delay에 비해 매우 짧게 걸린다.
○ Sample 문제 : what is end-to-end delay using persistent HTTP?
Control msg (e.g. TCP handshake, HTTP request) = K bit long
Base HTML object = L bits
N reference objects, each L bit long
Link bandwidth(대역폭) = R bps
Propagation(전파) delay = d seconds
(processing, queueing delay 생략)
Non-persistent는 TCP 연결 후, http (request -> http response) * N번에 통신이 되니 2 * K/R + d + N(K/R + L/R + d)의 딜레이거 걸린다.
Persistent는 N개를 한번에 보내니 2 * K/R + d + N(K/R + L/R) + 2d로 전파 딜레이 단축
○ Cookie
HTTP는 stateless. 하지만 가끔 data를 남기고 싶어지면 cookie를 사용.
Client에 cookie로 쿠키 번호를 남기고, Server가 Backend DB에 cookie table을 만들어, request를 받을 때 cookie table을 토대로 서비스 제공
○ Web cache = Proxy Server
server의 첫 요청시 복사본을 저장해서 이후 동일 요청을 빠르게 해결하는 방법. > origin server와 proxy server 간 정보가 같은지 확인을 한다.
사용이유 : 결국은 cost. 트래픽에는 비용이 따르니.
* Web Cache에 있는지 체크
Client가 msg에 "If-medified-since.<data>" 같은 특수 필드를 주면, proxy server는 request 확인해서 date가 맞츠면 200 OK하고 return, 없으면 304 Not modified, origin에게 받아와야 한다
○ DNS (Domain Name System)
호스트의 도메인 이름을 호스트의 네트워크 주소로 바꾸거나 그 반대 변환을 수행한다.
domain name -> xxx.xxx.xxx.xxx:portnum
○ 특징
1. DNS는 UDP를 사용한다. TCP로 하기에는 너무 cost가 높다.
2. DNS는 Application Layer Protocol, app이다.
3. DNS Client - DNS Server 간 연결
4. Distributed DB다.(분산된 DB). Centralized(중앙집권)하지 않은 이유는 너무 거대하기 때문
○ Name resolution
1. iterated query (반복적)
2. rescursive query (재귀적)
○ DNS 찾는 과정
'강의 > 컴퓨터네트워크' 카테고리의 다른 글
Link Layer (1) | 2023.12.29 |
---|---|
Network Layer (0) | 2023.12.28 |
컴퓨터 네트워크 - Transport Layer (2) | 2023.08.29 |
컴퓨터네트워크 - Application Layer (0) | 2023.06.28 |
Transport Layer - 요약 (0) | 2023.05.03 |