数据在网络上的传输过程
1 数据包的单次传输过程
从应用层到数据链路层不断封装。
(1)当输入url后,应用层的浏览器负责解析url. 使用socket连接服务器,开始三次握手,先封装成一个TCP的header:
(2)TCP将数据发给IP层,IP层将其封装成IP packet。
在网络层封装完毕后,需要在网络层决定发送到哪。
根据本机管理的路由表和目的ip确定下一跳ip。数据链路层发送数据的时候,需要的是mac地址。因此需要将下一跳的ip换成mac地址(根据ARP表)。得到mac地址后,交给数据链路层封装成帧。
(3)数据链路层负责在广播域中广播以太帧,如果某节点的mac匹配则接收,不匹配则直接丢掉。当设备匹配到路由器A时,路由器会对以太帧进行解包分用,并传入网络层查询下一跳ip,及其对应的mac地址,然后再封装成以太帧继续进行发送,直到找到目标ip。
小结:
应用层:解析url,创建Socket
传输层:封装TCP Segment,开始三次握手过程
网络层:封装IP Packet, 查询路由表得到下一跳ip,查询ARP表,得到下一跳的mac地址
数据链路层:封装以太网Frame,广播域中广播frame
2 数据包的总体传输过程:
–> 域名解析(DNS)
–> 发起TCP的3次握手
–> 建立TCP连接后发起http请求
–> 服务器响应http请求,浏览器得到html代码
–> 浏览器解析html代码,并请求html代码中的资源(如js、css、图片等)
–> 浏览器对页面进行渲染呈现给用户(根据响应中的Content-Type确定响应内容格式)。
参考博客:输入url,回车后都发生了什么