修车员 发表于 2018-9-23 20:29:07

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

首先我们谈到HTTP协议时,最多的最常见的是应用到浏览器的访问过程,在《图解HTTP》协议中 更多的只是涉及到HTTP的请求响应过程,再多点就加个代理服务器,那么当你在你的浏览器输入www.baidu.com到底发生了什么呢?
https://p3-sign.toutiaoimg.com/pgc-image/1537705696318a2a465f5d4~tplv-tt-large.image?x-expires=1988181959&x-signature=tNZ62iunPfetkdNHTTU7LVq5Erg%3D
接下来我将从网络基础的角度对这一题目举行说明。
说到这里关于网络通信的东西就更纷繁复杂了,以下是涉及的网络通信的主要协议栈。
https://p3-sign.toutiaoimg.com/pgc-image/15377051388360f6e10ecf3~tplv-tt-large.image?x-expires=1988181959&x-signature=h5gL7BhDq0X7v4L7UdDGqBpJEYw%3DF1.协议栈
<hr>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,网络协议与报文相关的真好用)
https://p3-sign.toutiaoimg.com/pgc-image/15377051778633d1fe47c57~tplv-tt-large.image?x-expires=1988181959&x-signature=%2BUmSbqTzzO%2FCAJdk3VbwY2OYdvA%3DF2.WireShark抓取
请求与响应部分:
https://p3-sign.toutiaoimg.com/pgc-image/1537705204279a858d77793~tplv-tt-large.image?x-expires=1988181959&x-signature=cULtZwgM0w1SV9hqi0WywdN8fq8%3DF3.请求响应报文
不过一般设备商的机顶盒,网关一般是面向运营商的定制版本,所以HTTP过程也是必须符合电信规范要求的,首部字段等部分都是规定死的
更细节的说的话,就是从各个层来说了。在客户端的传输层,会将HTTP会话请求分成报文段,添加源和目的端口。在客户端的网络层,主要任务是通过路由表确定如何到达服务器,客户端的链路层主要是查找IP对应MAC,然后发送ARP请求目的地址。
就像我在上篇所介绍的,网络交流的过程是IP之间的通信沟通。对于通信来说,也可以很简单的理解为发——收。专业一点的说法就是调制解调的过程。

免责声明:如果侵犯了您的权益,请联系光谷社区站长,我们会及时删除侵权内容,谢谢合作!

戴大俠 发表于 2018-9-23 21:28:02

Sniffer更牛逼
页: [1]
查看完整版本: HTTP协议系列——网页搜索的全过程