해당 챕터의 목표는 다음과 같다.
- application layer protocol의 conceptual, implementation 관점 공부
- transport-layer service model들
- client-server paradigm
- peer-to-peer paradigm
- popular application-layer protocol들이나 infrastructure들을 지원하는 protocol들 공부
- HTTP, SMTP, IMAP
- DNS
- Video streaming systems, CDNs
- Socket API
socket
을 통해 message를 송수신한다.Application layer protocol은 다음을 정의한다
massage 타입 (request, response)
message syntax (어떤 message에는 field들이 있고 어떻게 구분되는가)
message semantics (각 field는 어떤 의미인가)
process들은 언제, 어떻게 message를 주고 받는가 (규칙과 절차)
opent protocols
Proprietary(소유권 있는) protocols
Data integrity(completeness)
Timing
Throughput
Security
TCP service
UDP service
POST
- web page는 종종 form input을 포함한다.
- 이때 user의 input은 HTTP POST request message의 body entity를 통해서 client에서 server로 전송된다.
GET
- 대부분이 GET method
- user data를 URL field에 넣어서 보낸다. (URL에서 ?뒤에)
- 서버로 data를 보내는 GET method
HEAD
- 오직 헤더만 request한다.
- GET과 같은 특정 URL로 request를 보내며, header만 return됨
PUT
- 새로운 file을 server에 업로드
- 지정된 URL에 존재하는 파일을 POST HTTP request message의 content에 있는 내용으로 완전히 수정한다.
HTTP GET/response interaction은 stateless이다.
Web "transaction"을 완료하기 위한 HTTP의 다단계 교환에 대한 개념이 없다.
a stateful protocol를 예시로 들자면, client는 x의 state를 두번 변경하거나 전혀 변경하면 안된다.
Cookie는 Web site들과 client browser는 transaction들 사이에서 몇몇 state를 관리하기 위해 사용된다.
과거의 event에 따라 다르게 행동하기 위해서 사용됨.
client는 Set-Cookie 헤더의 정보를 디스크에 저장하고, 동일한 서버에 대한 요청을 할 때 사용한다.
4가지 components
1) HTTP response message의 cookie header line (Set-Cookie)
2) next HTTP response의 request message의 cookie header line
3) cookie file은 user's host가 아닌 user's browser에 의해서 유지된다.
4) Website의 back-end database (Cookie entry)
아래는 Cookie를 사용해서 state를 관리하는 예시
(그림 수정 @joftware)
Cookie는 authorization(log-in), Shopping carts, recommendations, user session state(Web e-mail) 등에서 사용될 수 있다.
여기서 그럼 질문이 하나 나올 수 있는데, Cookie는 어디서 보관하냐는 것이다.
Cookie and privacy
즉 Web Cache는 Proxy로써 client와 server의 역할을 모두 한다.
- original requesting을 날린 client에겐 server
- origin server에게는 client
- Caching Scenario
- access link rate가 1.54Mbps
- institutional router에서 server까지 RTT: 2sec
- web object size: 100Kbits
- browser들에서 origin server까지의 평균 request rate: 15/sec
- browser로의 average data rate: 1.50Mbps
- 위 상황에서 성능:
- access link utilization = 0.97 (1.50/1.54)
- LAN utilization: 0.0015
- end-end delay: Internet delay + access link delay + LAN delay
= 2 sec + minutes(queueing) + usecs
Cache hit ratio가 0.4라고 가정할 때, Web Cache의 성능
- 40%의 request는 cache에서 serve되며, delay가 거의 없음
- 60%의 request만 origin server로 요청되며,
average data rate는 1.50 * 0.6으로 0.58이 됨!- average end-end delay:
0.6 * (delay from origin servers) + 0.4 * (delay from cache)
= 0.6 * (2.01) + 0.4 * (~msecs) = ~1.2secs훨씬 싸고 효율적이다!