HTTP协议系列——网页搜索的全过程

首先我们谈到HTTP协议时,最多的最常见的是应用到浏览器的访问过程,在《图解HTTP》协议中 更多的只是涉及到HTTP的请求响应过程,再多点就加个代理服务器,那么当你在你的浏览器输入www.baidu.com到底发生了什么呢?

接下来我将从网络基础的角度对这一问题进行说明。

说到这里关于网络通信的东西就更纷繁复杂了,以下是涉及的网络通信的主要协议栈。

F1.协议栈

HTTP具体过程:你访问百度的全过程解析

第一步:

你输入的URL(www.baidu.com)是百度的域名,而互联网中进行信息传输的是IP封装的 报文或字节流。所以互联网并不认识你 的www.baidu.com,这时它就需要DNS(Domain Name System)域名解析系统,支持UDP和TCP的访问,端口号均是53,主要基于UDP,简单点说DNS就是用于TCP/IP的分布式的数据库,它提供主机名字和IP地址之间的转换及有关电子邮件的选路信息。这里提到的分布式是指在 I n t e r n e t 上的单个站点不能拥有所有的信息。每个站点(如大学中的系、校园、公司或公司中的部门)保留它自己的信息数据库,并运行一个服务器程序供 I n t e r n e t上的其他系统(客户程序)查询。 D N S提供了允许服务器和客户程序相互通信的协议。好了,当你输完URL,DNS协议已经将你的(www.baidu.com)解析为某个IP(因为百度的访问量实在太大,所以他们使用了服务器集群分流,所以当你和外地的老王在命令窗口Ping完显示的IP不同也不用担心。)

第二步:

当你已经解析到IP地址了,那么根据你的目的IP,你的计算机会通过网络(期间不知道经过多少交换机、路由器,可在个人PC的cmd窗口输入netstat -r 去查看路由表,不知道有多少次的封装报文、解析报文)为你的IP地址找到浏览器客户端到服务器的路径。主要通过传输层TCP的封装成数据包,在客户端的传输层,会将HTTP会话请求分成报文段,添加源和目的端口。TCP会给在这一步里面最重要的就是于WEB服务器建立TCP连接。

第三步:

与应用层 的HTTP进行会话(在应用层就是我们具体学习到的协议相关)此时会HTTP请求,这就需要回顾请求的全过程了,最主要的方法是GET。

重要的首部字段需要了解的比如HEADER里面涉及到的

user-agent:产生请求的浏览器类型

accept :客户端可识别的内容类型列表

host: 请求的主机,允许多个域名同个IP,即虚拟主机

Accept-Language:客户端可接收的自然语言

Accept-Encoding:客户端可接收的编码方式

Accept-Charset :可接收的应答字符集

connection :连接方式(close or keep alive)

Cookie : 存储客户端可扩展字段,向同一域名的服务端发送属于该域的cookie

第四步:

服务器的永久重定向响应(301)

是否带www

响应内容

Location

Connection

第五步:

浏览器跟踪重定向地址

再发一个HTTP get

第六步:

服务器处理请求

第七步

服务器返回个HTML响应

第八步:

释放TCP连接。connection 模式为close,则服务器主动关闭TCP 连接,客户端被动关闭连接,释放TCP 连接;若connection 模式为keepalive,则该连接会保持一段时间,在该时间内可以继续接收请求;

第九步:

客户端解析HTML内容

HTTP报文解析:

网络智能机顶盒开机认证全过程就是典型的HTTP协议

给大家展现一下具体报文:

(在这里又不得不安利一下,我日常使用的wireshark,网络协议与报文相关的真好用)

F2.WireShark抓取

请求与响应部分:

F3.请求响应报文

不过一般设备商的机顶盒,网关一般是面向运营商的定制版本,所以HTTP过程也是必须符合电信规范要求的,首部字段等部分都是规定死的

更细节的说的话,就是从各个层来说了。在客户端的传输层,会将HTTP会话请求分成报文段,添加源和目的端口。在

客户端的网络层,主要任务是通过路由表确定如何到达服务器,客户端的链路层主要是查找IP对应MAC,然后发送ARP请求目的地址。

就像我在上篇所介绍的,网络交流的过程是IP之间的通信沟通。对于通信来说,也可以很简单的理解为发——收。专业一点的说法就是调制解调的过程。