课程笔记
课程链接:计算机网络_中国大学MOOC(慕课) (icourse163.org)
目录
World Wide Web:Tim Berners-Lee
网页(Web Page):包含多个对象(objects)
网页互相链接
对象的寻址(addressing):URL:统一资源定位器 RFC1738
Scheme://host:port/path
协议://主机:端口号/路径
一、http协议概述:
采用超文本传输协议:HyperText Transfer Protocol
C/S结构:
客户——Browser:请求、接收、展示Web对象
服务器——Web Server:响应客户的请求,发送对象
HTTP版本:1.0 RFC1945 , 1.1 RFC2068
使用TCP传输协议:
服务器在80端口等待客户的请求
浏览器发起到服务器的TCP连接(创建套接字Socket)
服务器接受来自浏览器的TCP连接
浏览器(HTTP客户端)与Web服务器(HTTP服务器)交换HTTP消息
关闭TCP连接
无状态协议:服务器不维护任何有关客户端过去所发请求的信息
二、HTTP连接
非持久性连接(Nonpersistent HTTP):每个TCP连接最多允许传输一个对象
HTTP 1.0版本使用非持久性连接
持久性连接(Persistent HTTP):每个TCP连接允许传输多个对象
HTTP 1.1版本默认使用持久性连接
1)响应时间与建模
RTT(Round Trip Time):从客户端发送一个很小的数据包到服务器并返回所经历的时间
响应时间(Response time):
发起、建立TCP连接:1个RTT
发送HTTP请求消息到HTTP响应时间消息的前几个字节到达:1个RTT
响应消息中包含的文件/对象传输时间
Total=2RTT+文件发送时间
2)非持久连接的问题
每个对象需要2个RTT
操作系统需要为每个TCP连接开销资源(overhead)
浏览器会怎么做?
打开多个并行的TCP连接以获取网页所需对象
给服务器造成什么影响
3)持久性连接
发送响应后,服务器保持TCP连接的打开
后组的HTTP消息可以通过这个连接发送
4)无流水(pipelining)的持久性连接
客户端只有收到前一个响应后才发送新的请求
每个被引用的对象耗时1个RTT
5)带有流水机制的持久性连接
HTTP 1.1的默认选项
客户端只要遇到一个引用对象就尽快发出请求
理想情况下,收到所有的引用对象只需耗时越2个RTT
三、HTTP消息格式
请求消息,响应消息
请求消息
ASCII:人直接可读
第一行:请求行
下面几行:头部行
请求消息的通用格式
POST方法:
网页经常需要填写表格(form)
在请求消息的消息体(empty body)中上传客户端的输入
URL方法:
使用GET方法
输入信息通过request行的URL字段上传
方法的类型:
HTTP响应消息
四、Web缓存/代理服务器技术
功能:在不访问服务器的前提下满足客户端的HTTP请求
作用:缩短客户请求的响应时间,减少机构/组织的流量,在大范围(Internet)实现有效的内容分发
实现:在客户和服务器之间架设代理服务器
Web缓存/代理服务器:
用户设定浏览器通过缓存进行Web访问
浏览器向缓存/代理服务器发送所有的HTTP请求
如果请求对象在缓存中,缓存返回对象,否则,缓存服务器向原始服务器发送HTTP请求,获取对象,然后返回给客户端并保存该对象
缓存既充当客户端,也充当服务器
一般由ISP(Internet服务提供商)架设
条件性GET方法
目标:如果缓存有最新的版本,则不需要发送请求对象
缓存:在HTTP请求消息中声明所持有版本的日期,if-modified-since:<date>
服务器:如果缓存的版本是最新的,则响应消息不包含对象
HTTP/1.0 304 Not Modified