计算机网络-应用层协议1(HTTP)

it2023-09-05  86

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服务器给缓存器发送响应信息: 缓存器接收到响应信息后,根据响应信息决定是否使用本地对象副本。
最新回复(0)