写在前面
最爽的事莫过于清空购物车的那一刻了,那一刻如沐春风。那都有哪些网络协议给我们带来了春风呢?本文就一起来看下。
1:淘宝剁手党
当我们在浏览器录入https://www.taobao.com/ 并敲击回车时,发生了什么呢?我相信你可能在面试中也遇到过这个问题。首先,首先只有域名https://www.taobao.com/ 我们是找不到马爸爸的服务器的,所以此时就要引出我们的第一个协议DNS协议,通过该协议可以获取对应的IP地址,也就是140.249.111.139:
C:\Users\dell9020>ping www.taobao.com
Pinging www.taobao.com.danuoyi.tbcache.com [140.249.111.139] with 32 bytes of data:
Reply from 140.249.111.139: bytes=32 time=16ms TTL=52
Reply from 140.249.111.139: bytes=32 time=16ms TTL=52
140.249.111.139 的 Ping 统计信息:
数据包: 已发送 = 2,已接收 = 2,丢失 = 0 (0% 丢失),
往返行程的估计时间(以毫秒为单位):
最短 = 16ms,最长 = 16ms,平均 = 16ms
浏览器得到IP地址,也就找找到了主机在互联网世界上的唯一门牌号。接着就开始打包请求了。首先是打包应用层的信息,也就是如下http协议信息:
image.png
这里为了形象期间,我们将这些http协议的内容简化为
我要买什么,买多少,请求的数据包此时如下所示:
image.png
接着应用层会将数据交给传输层处理,此时TCP协议就开始工作了,增加TCP的头信息,主要是源端口以及目标端口等,数据包变为如下:
image.png
应用层接着将数据交给网络层,此时IP协议开始发挥作用了,IP协议会增加源IP地址和目标IP地址的信息,变为如下:
image.png
如你所想是不是,数据包直接就交给数据链路层了呢?不是的,因为此时还不知道网关的mac地址,在DHCP协议为计算机分配IP地址的时候也会默认配置网关地址为
192.168.1.1,这里我们假定网关地址就是这个,那么操作系统此时还需要基于ARP协议来广播局域网内所有的机器,问谁是192.168.1.1?你的mac是啥,快告诉我,这时网关机器收到这个请求后就会回复自己的mac了,操作系统获取到了mac地址后才会将数据包交给数据链路层来处理,数据链路层会增加源mac信息以及网关的mac信息,如下:
image.png
接着操作系统通过网卡将数据包发送出去,因为已经有了网关的mac地址,所以数据包可以成功到达网关,一般网关就是一个路由器,因为路由器会和临近的路由器通过OSPF和BGP协议进行沟通,从而构成一张路由表,所以路由器可以知道某个目标IP地址需要通过自己的哪个网口出去,接着到达下一个路由器,注意这个过程还需要通过ARP获取下一跳路由器的mac地址,从而能够到达下一跳的路由器,路由器可以判断该网络包是否是发给自己这个局域网环境的,如果不是则继续重复上述过程,如果是则会通过ARP协议广播消息,询问目标IP主机对应的mac地址,获取mac地址后就可以将该数据包发给目标机器了。目标机器拿到包后,就会对比mac,对上了,去除mac头,发给网络层,网络层发现ip也可以对上,于是去除ip头,交给传输层,传输层收到该数据包后,回复一个ack,该ack原路返回。之后tcp还会根据端口号的信息找到对应的应用层进程,并把数据交给应用程序处理。这样就完毕了!
清晰期间来看些图,目标机器收到数据包后的处理过程如下图:
image.png
整个路由的过程如下示例:
image.png
路由器大概是通过如下的方式来实现整个网络世界的互联互通的
(个人理解,有错误请评论指出):
image.png









网友评论