深入浅出HTTP

1、 概念:http是面向事物的应用层协议。
注释:事物指的是一系列的信息(包括文本,声音,图像等各种多媒体文件) 交换,注意:这一系列的信息交换是一个不可分割的整体,要么所有的信息交换都完成,要么一次交换都不执行。
2、 万维网(浏览器)的工作流程:
深入浅出HTTP_第1张图片
用户在浏览器的地址栏输入了:http://www.tsinghua.edu.cn/yxsz/index.htm
按了回车键之后浏览器所发生的几个事件(假设这里用http/1.0):
(1) 浏览器分析连接指向页面的URL;
(2) 浏览器向DNS请求解析www.tsinghua.edu.cn的IP地址。
(3) 域名系统DNS解析出清华大学服务器的IP地址166.111.4.100.
(4)浏览器与服务器建立TCP链接(在服务器端IP地址是166.111.4.100,端口号是80)
(5)浏览器发出取文件命令:GET /yxsz/index.htm(文件路径)
(6)服务器www.tsinghua.edu.cn给出响应,把文件index.htm发送给浏览器。
(7)释放TCP链接。
3、http的特点:
(1)支持客户机/服务器模型。
(2)简单快速。
(3)无连接:http使用了面向链接的TCP作为传输层协议,保证了数据的可靠性。所以http自己就不必考虑数据在传输过程中被丢弃后又怎样被重传。但是http本身是无连接的。意思就是虽然http使用了TCP链接,但通信的双方在建立http报文之前不需要先建立http链接。
(4)无状态:意思就是同一个客户第二次访问同一个服务器上的页面时,服务器的响应与第一次被访问时的相同。因为服务器失忆了,并不记得曾经访问这个客户,也不记得为该客户服务过多少次。这样设计的目的是简化了服务器的设计,使得服务器支持大量并发的http请求。
4、http的长连接和短连接(实际TCP的长连接和短连接):
深入浅出HTTP_第2张图片
在HTTP/1.0中,默认使用的是短连接。使用短连接的HTTP协议,会在响应头有加入这行代码:Connection:close
也就是说,浏览器每请求服务器一次,就建立一次连接(实际是TCP的三次握手),但任务结束就断开连接(实际是TCP的四次挥手)。
缺点:
(1) 每请求一个文档就要有两倍的RTT(往返时间)。(一个RTT建立连接,一个RTT请求服务器资源)。
(2) 如果有一个客户不断的访问服务,则服务器不断为每一次新建立的链接都要分配缓存和变量。这样服务器的负担会很重。
但从 HTTP/1.1起,默认使用长连接,用以保持连接特性。使用长连接的HTTP协议,会在响应头有加入这行代码:Connection:keep-alive
在使用长连接的情况下,当一个网页打开完成后,客户端和服务器之间用于传输HTTP数据的 TCP连接不会立马关闭,如果客户端再次访问这个服务器上的网页,会继续使用这一条已经建立的连接。
注意:长连接不会永久保持连接,它有一个保持时间,可以在不同的服务器软件(如Apache)中设定这个时间。实现长连接要客户端和服务端都支持长连接。
长连接有两种工作方式:
非流水线:当前客户的请求收到服务器的响应之后,客户才能发出新的请求。服务器在给客户一个响应之后,其tcp就处于空闲状态,浪费了服务器资源。
流水线:客户可以一个接一个报文发送给服务器,服务器收到报文之后,也连续发给客户响应报文,使得tcp连接中的空闲时间减少,提高了下载文档的效率。
HTTP协议的长连接和短连接,实质上是TCP协议的长连接和短连接。

5、代理服务器:
概念:为了减少客户访问服务器的时间,在客户和服务器之间增加了代理服务器(实质上是万维网高速缓存),代理服务器的把最近的一些请求和响应暂存在本地磁盘中,当有新的请求到达时,代理服务器如果已经存放了所请求的对象,代理服务器就把这个对象放入http响应报文中返回给客户。如果代理服务器没有存放所请求的对象,那么代理服务器就会给源点服务器发送一个http请求(也就是客户给自己发送http的请求),代理服务器收到源点服务器的响应后,代理服务器会把响应的对象拷贝一份自己保存,然后再响应客户。(这样做的目的是如果下次客户再请求同样的对象时,代理服务器就可以直响应客户了)

深入浅出HTTP_第3张图片
6、http的报文结构:
http请求报文:
深入浅出HTTP_第4张图片
http请求分为四部分:请求行(请求方法(get/pos)、请求URL(不包含主机名和端口号,只包含资源和参数),协议版本(http/1.0, http/1.1))、消息请求抱头(分为很多行,每一行都是name和value,每一个name、value占一行)、空行、正文(可以没有内容)
深入浅出HTTP_第5张图片
http响应报文:
响应报文的特点:每一个请求发送后,都能收到一个响应报文。响应报文的第一行就是状态行,状态行包含了三项内容:http版本,状态码,以及解释状态码的短语。
http相应同样分为四部分:状态行(三部分:http版本、状态码、如404、状态码的描述,如:not find),消息响应抱头,空行、正文(html5/h5/css/js/imag)。

深入浅出HTTP_第6张图片
深入浅出HTTP_第7张图片
深入浅出HTTP_第8张图片

你可能感兴趣的:(实用,方便类)