面试必备——HTTP协议的理解

万维网的内核部分是由三个标准构成的:
(1)统一资源定位符(URL),负责标识万维网上的各种文档,并使每个文档在整个万维网的范围内具有唯一的标识符URL。
(2)超文本传输协议(HTTP),是一个应用层协议,使用TCP连接进行可靠的传输,HTTP是万维网客户程序和服务器程序之间交互所必须严格遵守的协议。
(3)超文本标记语言(HTML),是一种文档结构的标记语言,使用一些约定的标记对页面上的各种信息、格式进行描述。

超文本传输协议HTTP

HTTP协议定义了浏览器怎样向万维网服务器请求万维网文档,以及服务器怎样把文档传送给浏览器。从层次的角度看,HTTP是面向事务的应用层协议,规定了在浏览器与服务器之间的请求和响应的格式和规则,它是万维网上能够可靠地交换文件的重要基础。

HTTP的操作过程

每个万维网站点都有一个服务器进程,它不断地监听TCP的端口(默认80),当监听到连接请求后便与浏览器建立连接。TCP连接建立后,浏览器向服务器发送请求获取某一Web页面的HTTP请求。服务器受到HTTP请求后,将请求需要的Web信息通过HTTP响应给浏览器。浏览器再将信息解释展示给用户,最后释放TCP连接。
在这里插入图片描述
在浏览器和服务器之间的请求和响应的交互,必须按照规定的格式并遵守一定的规则,这些格式和规则就是HTTP。因此HTTP有两类报文:请求报文和响应报文。

当用户点击鼠标访问某网站后
(1)浏览器分析链接指向页面的URL(例如http://tsinghua.edu.cn/chn/index.htm);
(2)浏览器向DNS请求解析www.tsinghua.edu.cn的IP地址; (3)域名系统DNS解析出服务器IP地址;
(4)浏览器与该服务器建立TCP连接; (5)浏览器发出HTTP请求:GET/chn/index.htm;
(6)服务器通过HTTP响应把文件index.htm发给浏览器; (7)TCP连接释放; (8)浏览器解释文件并显示给用户。

HTTP协议的特点

HTTP是无状态的。同一个客户第二次访问同一个服务器上的页面时。服务器的响应与第一次被访问时的相同,因为服务器并不记得曾经访问过的这个客户,也不记得为该客户曾经服务过多少次。这个特性简化了服务器的设计,使服务器更容易支持大量并发的HTTP请求。在实际应用中,通常使用Cookie加数据库的方式跟踪用户的活动。Cookie是存储在用户主机中的文本文件,里面有一串“识别码”,用于Web服务识别用户。Web服务器根据Cookie就能从数据库中查询到该用户的活动记录,进而执行一些个性化的工作,如根据用户之前浏览过的商品向其推荐新产品等。
HTTP采用TCP作为运输层协议,保证了数据的可靠传输。HTTP不必考虑数据在传输过程中被丢弃后又怎样被重传。但是HTTP协议本身是无连接的,虽然HTTP使用了TCP连接,但通信的双方在交换HTTP报文之前不需要先建立HTTP连接。
HTTP既可以使用非持久连接也可以使用持久连接
对于非持久连接,每一个网页元素对象的传输都需要单独建立一个TCP连接。如图所示。第三次握手的报文段中捎带了客户对万维网文档的请求,请求一个万维网文档所需的时间是该文档的传输时间(与文档大小成正比)加上两倍往返时间RTT。
在这里插入图片描述
持久连接是万维网服务器在发送响应后仍然保持这条连接,使同一个客户和服务器可以继续在这条连接上传送后续的HTTP请求和响应报文。持久连接又分为非流水线和流水线两种方式。对于非流水线方式,客户在收到前一个响应后才能发出下一个请求。HTTP/1.1的默认模式是使用流水线的持久连接。这种情况下,客户每遇到一个对象引用就立即发出一个请求,因而客户可以一个接一个地连续发出对各个引用对象的请求。如果所有的请求和响应都是连续发送的,那么所有引用到的对象共计经历一个RTT延迟,而不是像非流水线版本那样,每个引用都必须有一个RTT延迟。

HTTP的报文结构

HTTP有两类报文:请求报文从客户向服务器发送的请求报文;响应报文从服务器到客户的应答。
在这里插入图片描述
在这里插入图片描述
HTTP两种报文都是由三个部分组成,即开始行、首部行、实体主体,从上图可以看出主要是开始行不同
开始行用于区别是请求报文还是响应报文。在请求报文中的开始行叫请求行,响应报文的开始行叫状态行。开始行的三个字段之间都以空格分割开,最后回车换行。请求报文的“请求行”有三个内容:方法、请求资源的URL以及HTTP版本。常用的方法如下:

GET:请求读取由URL所标志的信息;
HEAD:请求读取URL所标志的信息的首部;
POST:给服务器添加信息(如注释);
CONNECT:用于代理服务器。

首部行用于说明浏览器、服务器或报文主体的一些信息。在每个首部行都有首部字段名和它的值,每一行在结束的地方都要有回车和换行。在整个首部结束时,还有一空行将首部行和实体主体分开。
实体主体在请求报文中一般不使用这个字段,响应报文也可能没有。

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值