1.应用层一些重要知识
- 流行的因特网应用及其应用层协议和支撑的运输协议
- 区分网络应用和应用层协议
例:Web应用包括文档格式标准HTML、Web浏览器、Web服务器以及一个应用层协议。
2.Web和HTTP
2.1 HTTP概况
- HTTP(超文本传输协议)由两个程序实现:一个客户程序和一个服务器程序。
- Web页面由对象组成,对象包括一个文件、一个HTML文件、一个JPEG图形、一个Java小程序或一个视频片段,它们都可以通过一个URL地址寻址。
- Web浏览器实现了HTTP客户端;Web服务器实现了HTTP的服务器端。
- 服务器向客户发送被请求的文件,不会存储任何关于该客户的状态信息,所以HTTP是一个无状态协议。
- 套接字接口:进程与TCP连接之间的门。
2.2 非持续连接和持续连接
- 非持续连接:每个请求/响应对都是经一个单独的TCP连接发送。
- 持续连接:所有的请求及其响应时间经相同的TCP连接发送。
2.2.1采用非持续连接的HTTP
从服务器向客户传送一个Web页面的步骤:假设该页面含有一个HTML基本文件和10个JPEG图形,并且这11个对象位于同一个服务器上,该HTML文件的URL地址为http://www.someschool.edu/somedepartment/home.index。
- HTTP客户进程在80端口号发送一个到服务器www.someschool.edu的TCP连接请求。
- HTTP客户经它的套接字向该服务器发送一个HTTP请求报文。
- HTTP服务器进程经它的套接字接受该请求报文,从其存储器中检索出对象http://www.someschool.edu/somedepartment/home.index。,在一个HTTP响应报文中封装对象,并通过其套接字向客户端发送相应报文。
- HTTP服务器进程通知TCP断开该TCP连接。
- HTTP客户接收响应报文,TCP连接关闭。该报文指出封装的对象是一个HTML文件,提取出该文件后,得到对10个JPEG图形的引用。
- 对每个引用的JPEG对象重复前4个步骤。如果是并行TCP连接会比串行TCP连接更快。
往返时间(RTT):一个短分组从客户到服务器再返回客户所花费的时间。包括:分组传播时延、分组在中间路由器和交换机上的排队时延及分组处理时延。
请求接收一个HTML文件花费时间:2RTT+传输HTML文件的时间。
2.2.2 采用持续连接的HTTP
Web页面(HTML基本文件和10个JPEG图形)可以用单个TCP连接进行传送。一般一条连接经过一定时间间隔(超时间隔)未被使用,HTTP服务器就关闭该连接。
2.3 HTTP报文格式
2.3.1 HTTP请求报文
一个HTTP请求报文:
- HTTP请求报文第一行叫做请求行,后继行叫首部行。
- 请求行:方法字段、URL字段和HTTP版本字段。
- 首部行:HOST:www.someschool.edu行和Connection:close行指明对象所在主机和是否采用持续连接。User-agent:Moziila/5.0指明用户代理,即浏览器类型。Accept-language:fr行表示想得到该对象的法语版本。
一些请求行方法字段:
- GET:使用GET方法时,实体主体为空。
- POST:向服务器请求一个Web页面,Web页面内容依赖于用户在表单字段中输入的内容,这个内容就是实体主体。在GET方法的URL字段添加数据字段也可以达到相同的效果。
- HEAD:类似于GET方法,但并不返回请求对象。
- PUT:上传对象到指定的Web服务器。
- DELETE:删除Web服务器上的对象。
2.3.2 HTTP响应报文
一个HTTP响应报文(两图是同一响应报文):
- 响应报文有三个部分:1个初始状态行、6个首部行和实体主体。
- 初始状态行:协议版本、状态码和相应的状态信息。
- 首部行:Connection:close表示发送完报文后关闭该TCP连接;Date:产生发送响应报文的日期;Server:报文产生的服务器;Last-Modified:对象创建和最后修改的日期时间;Content-Length:被发送对象中的字节数;Content-Type:实体主体中的对象类型是HTML文本。
- 实体主体:要发送的对象数据。
一些状态码和相关短语:
- 200 OK 请求成功
- 302 Moved Permanently 请求的对象已经被永久转移了,新的URL定义在响应报文的Location:首部行中。
- 400 Bad Request 一个通用的差错代码,该请求服务器不理解。
- 404 Not Found 被请求的文档不在服务器上。
- 505 HTTP Version Not Supported 服务器不支持请求报文使用的HTTP协议版本。
2.4 用户与服务器的交互:cookie
- cookie的产生
为了限制用户对服务器的访问,将内容与用户相关联。它允许站点对用户进行跟踪。
- cookie的原理
四个组件:①在HTTP响应报文中的一个cookie首部行;②在HTTP请求报文中的一个cookie首部行;③在用户端系统保留有一个cookie文件,并由用户的浏览器进行管理;④位于Web站点的一个后端服务器。
图上描述的原理非常清晰,看看吧孩子,不要偷懒。
2.5 Web缓存
Web缓存又叫代理服务器。它是能够代表初始服务器响应HTTP请求的网络实体。
假设浏览器正在请求www.someschool.edu/jdi.gif,将会发生如下情况:
- 浏览器建立一个到Web缓存的TCP连接,并向Web缓存中的对象发送一个HTTP对象。
- Web进行检查,看本地是否存在对象副本。如果存在,Web缓存用HTTP响应报文返回该对象给浏览器。
- 如果不存在,它就打开一个与该对象的初始服务器的TCP连接,Web缓存发送一个HTTP请求到初始服务器。初始服务器收到后,将该对象用HTTP响应报文返回给Web缓存。
- 当Web缓存器收到该对象时,它在本地存储空间存储一份副本,并向客户的浏览器用HTTP响应报文发送该副本。
Web缓存广泛应用于内容分发网络(CDN)。
2.6 条件GET方法
- 一个代理缓存( proxy cache)表示请求浏览器,向某Web服务器发送一个请求报文:
- Web服务器向缓存器发送具有被请求对象的响应报文:
- 一个星期后,另一用户也经过该缓存器请求统一对象,由于过去了一个星期,不知道缓存器中的该对象是否被修改,缓存器需要发送一个条件GET给Web服务器执行最新检查:
- 值得注意的是,If-Modified-Since:Wed,7 Sep 2011 09:23:24正是一个星期前前一用户接收到响应报文的Last-Modified字段。说明该对象在这之后的时间未被修改,Web服务器给缓存器发送响应信息:
缓存器接收到响应信息后,根据响应信息决定是否使用本地对象副本。