文章目录
1. Web和HTTP
1.1 HTTP概况
(1)定义
Web的应用层协议是超文本传输协议(HTTP)。
- HTTP由一个客户程序和一个服务器程序实现。
- HTTP定义了报文的结构以及客户和服务器进行报文交换的方式。
Web页面
Web页面是由对象组成,一个对象只是一个文件。
- Web页面包含HTML基本文件和其他对象。
①HTML基本文件通过对象的URL地址引用页面中的其他对象。
②URL由主机名和路径名组成。
Web浏览器实现HTTP的客户端,Web服务器实现HTTP的服务端,用于存储Web对象。
(2)功能
HTTP定义了Web客户项Web服务器请求Web页面的方式。
- 选择TCP作为它的运输层协议
①客户向套接字发送HTTP请求报文,并从它的套接字接收HTTP响应报文。
②服务器从它的套接字接收HTTP请求报文,向套接字发送HTTP响应报文。 - HTTP是无响应协议
服务器向客户发送被请求文件,但不会存储任何关于客户的信息。(即及时在很短时间内,客户多次向服务器发出请求,服务器仍能回复客户端所请求文件)
1.2 持续连接和非持续连接
- 持续连接:所有请求和响应经相同TCP连接发送。
- 非持续连接:每个请求和响应经单独的TCP连接发送。
(1)非持续连接的HPPT
过程
- HTTP客户向服务器www.someSchool.edu发送一个TCP连接请求。
- HTTP服务器向客户发送TCP连接确认和响应。
- HTTP客户向服务器发送返回确认,并经套接字发送HTTP请求报文,报文包含路径名/someDepartment/abc.index。
- HTTP服务器从套接字接收到请求报文,从存储器中检索出对象,在HTTP响应报文中封装对象,并通过套接字向客户发送响应报文。
- 客户端接收到响应报文,TCP连接关闭。
(三次握手 + HTTP请求和响应报文的发送和接收)
特点
- 每个TCP连接在服务器发送一个对象后关闭。
(每个TCP连接只传输一个请求报文和一个响应报文) - 每个对象经受两倍的RTT交付时间。
1.2.1 往返时间
定义
往返时间(RTT):一个短报文从客户到服务器再返回客户端所花费的时间。
接收一个HTML文件的时间估算
- 客户和Web服务器之间发起一个TCP连接,这涉及三次握手过程:
①客户向服务器发送小的TCP报文段。
②服务器用小的TCP报文段做出确定和响应。
③客户向服务器返回确认 - 客户向Web服务器发送HTTP请求报文。
- 服务器从套接字接收到请求报文,并向客户发送HTTP响应报文。
其中①②占用了一个RTT时间,③、2、3占用一个RTT时间。
因此总的响应时间为:2*RTT + HTML文件传输时间。
问题:非持续连接HTTP的缺点
- 对Web服务器带来严重负担。
必须为每个对象建立和维护一个全新的连接。对于每个这样的连接,客户端和服务器都要分配TCP缓冲区和保持TCP变量。 - 每个对象经受两倍的RTT时间。
三次握手+HTTP请求响应。
(2)持续连接的HTTP
定义
- 服务器在发送响应后保持TCP连接打开。
- 在相同的客户和服务器之间,后续请求和响应报文能通过相同的连接进行传送。
- 如果一条连接经过一定时间间隔仍未被使用,HTTP服务器就得关闭连接。