HTTP的曲折:网络请求到层层封装和终端拆分

从输入url到页面展现的过程
输入url后,会先进行域名解析。优先查找本地host文件有无对应的ip地址,没有的话去本地dns服务器查找,还不行的话,本地dns服务器会去找根dns服务器要一个域服务器的地址进行查询,域服务器将要查询的域名的解析服务器地址返回给本地dns,本地dns去这里查询就ok了。
浏览器拿到服务器的ip地址后,会向它发送http请求。http请求经由一层层的处理、封装、发出之后,最终经由网络到达服务器,建立tcp/ip连接,服务器接收到请求并开始处理。
服务器构建响应,再经由一层层的处理、封装、发出后,到达客户端,浏览器处理请求。
浏览器开始渲染页面,解析html,构建render树,根据render树的节点和css的对应关系,进行布局,绘制页面。
这4个步骤包含了一个http请求的完整生命周期,文章着重介绍第2步和第3步,也就是请求是如何在两个物理端点之间进行通信的。数据的发出和接收必然会经历一些处理、解析的过程,这些过程在系统的不同层次进行。
个http请求从源端发出到在终端接收的处理过程都是要经过以下四层。其中每一层都有各自的协议。
上图中只举例出了最常见的协议,实际上每一层都有细分的协议:
应用层:应用程序负责将数据以相应规则(协议)进行包装,发给传输层
http:超文本传输协议
ftp:文件传输协议
smtp:简单邮件传送协议
snmp:简单网络管理协议
传输层:负责将应用层传过来的数据进行分组,为确保终端接收数据的顺序和完整性,会对每个分组进行标记,交给网络层
tcp:传输控制协议
udp:用户数据协议
网络层:负责将传输层发来的数据分组发送到目标终端
icmp:internet互联网控制报文协议
igmp:internet组管理协议
ip:网际协议
链路层:为网络层发送和接收数据单元
arp:地址解析协议
rarp:逆地址解析协议
封装
源端发送http报文时,报文会以数据流的形式通过一条已经打开的tcp连接按序传输,tcp收到数据流后会将其分割成小的数据块,每个小块被添加的tcp首部与数据块共同组成了tcp分组,分组经由网络层发送,网络层遵循ip协议,当收到分组发送请求后,会将分组其放入ip数据报,填充报头,将数据报发经由链路层发送出去。
分用
终端接收到一个以太网数据帧时,数据自底层向上流动,去掉发送时各层协议加上的报文首部,每层协议都要检查报文首部的协议标识,从而确定上层协议,保证数据被正确处理,这个过程叫分用。
http
http属于应用层,用户触发交互所产生的行为数据和服务端对此的响应都由它封装成http报文,再交由下层协议进行处理。报文的作用是客户端与服务端沟通的载体,双方都要遵循统一规则对信息进行处理,这一规则称为http。
客户端与服务端的交互往往非常复杂,为了使双方都能高效、明确、安全地通信(例如传递意图与状态、承载数据、携带认证信息、控制连接行为与缓存),需要依赖报文中的结构来实现,下面先从结构开始看。
地址解析协议:arp
ip只能让数据在逻辑端点之间流动,但是ip之下还有网络接口层,这一层也有自己的地址(mac地址:用于在网络中唯一标识一个网卡),从ip地址到mac地址需要一个转换的过程,arp就是提供这一服务的。
arp协议实现了从ip地址到mac地址的映射。一开始,起点并不知道目标的mac地址,只有目标ip,要获取这个地址就涉及到了arp的请求和应答。同样,arp也有自己的分组,先看一下分组格式。
以太网数据帧
上面所有东西都准备好了,封装发送的其实是以太网数据帧。以太网目的地址、以太网源地址、帧类型这三者组成了帧首部。在首部之前还会插入前同步码和帧开始定界符,告知接收端做一些准备工作。帧检验序列 fcs被添加进尾部,用来检测帧是否出错。.
传输和接收
接收到上层传过来的数据报之后,根据mtu以及数据报大小来决定是否分割成小块,也就是ip数据报被分片的过程。
把数据报(块)封装成一帧,传给底层组件,底层组件将帧转换为比特流,并发送出去。
以太网上的设备接收到帧,检查帧里边的目标地址,如果与本机地址匹配,帧就会被处理,一层一层向上传递(分用过程)。
一个网络请求从源端一层层封装,再到终端一层层拆分,最后的所有过程基本梳理清楚,文章只是简单梳理了一下大概流程,并且只以http报文通过tcp协议经过ip传送这一过程为例,实际还有很多概念没有覆盖,比如链路层的尾部封装、ip的动态选路、逆地址解析协议rarp、udp协议相关的概念,建议大家可以阅读下面列出的参考资料,相信会有更多收获。lw

LED供电的四种常用拓扑
苹果最近这段时间跌跌不休 股价暴跌35%
区块链中的信任怎样做才可以加强
华润上华与KEC签约IGBT项目
电压电缆传感器安装指导
HTTP的曲折:网络请求到层层封装和终端拆分
华为C-V2X智能网联车路协同系统闪亮登场
区块链能为自由职业者带来什么帮助
如何使用检测模型进行唤醒词检测模型的部署
浅谈隔离变压器铁芯的作用功率和性质
电源设计时教你4种如何有效地测量电容寿命
vivoS1Pro全面评测 值不值得买
中国移动正式公布了截止2019年6月底的运营数据情况
使用Arduino制作一个太阳跟踪系统
极米H3S、大眼橙X11、当贝X3,投影仪哪个牌子的好?可以连接电脑吗?
制粒机PLC数据采集和远程监控解决方案
动力电池行业将呈现哪些新趋势
测评 快充移动电源哪个好?SuperMini实力领航
Opera将尽快发布补丁修复桌面浏览器漏洞
人工智能正在推动自动驾驶的创新步伐