网络协议一

# 网络请求流程

  1. DNS或HTTPDNS查找域名对应的目标地址:IP。(应用层)

  2. 获取目标地址后,浏览器打包请求,使用HTTP或HTTPS协议。(应用层)

  3. 将应用层的数据包交给下一层传输层TCP或UDP协议,一般是TCP协议。TCP协议中浏览器监听的端口、服务器监听的端口这两个端口。

  4. 将传输层封装过后的包交给下一层网络层。IP协议。IP协议中有源IP地址(浏览器所在机器的IP和目标服务器的IP)。

    image-20220728110559435
  5. 此时操作系统要通过网关寻找到目标机器。(操作系统启动时会被DHCP协议分配IP以及默认的网关地址)操作系统通过ARP协议找到网关的MAC地址。获取网管的MAC地址之后此时数据包中又新增了MAC头数据。

    image-20220728110638607
  6. 然后操作系统将数据包传递给下一层MAC层。因为包中包含MAC数据,所以可以数据包直接到达了网关中。

  7. 网关中有路由表,通过路由表找到目标机器所在的网关,然后目标机器所在的网关通过IP包中的目标IP返回目标机器的MAC地址。

  8. 数据包到达目标机器后,目标机器的比对MAC地址正确后取下MAC地址,将数据包递交给网络层。网络层对比IP正确后取下IP头,然后将数据包递交给传输层(TCP层)。然后传输层返回一个回复消息,表示数据包接收到了。如果网络层对比IP不是自己的,说明这个包应该转发出去。

  9. 在TCP层中,通过数据包中的端口号找到监听这个端口的进程,然后将数据包递交给这个进程。

    image-20220728111942649
当网络包到达一个网关的时候,可以通过路由表得到下一个网关的 IP 地址,直接通过 IP 地址找就可以了,为什么还要通过本地的 MAC 地址呢?

IP头只记录源IP地址和目标IP地址,网关的IP地址取代源IP地址或者目标IP地址都不合适,在IP头里面在额外记录每个网关的IP地址也不合适。 网关的IP地址取代目标IP地址:网关是找到了,但是目标IP地址没了。 网关的IP地址取代源IP地址:目标服务器是到了,但是TCP层报平安的包传不回去了。 在IP头里面额外记录每个网关的IP地址: 如果经过的网关太多,网络包会变得越来越大。而网络包在网络中传输是有大小限制的。 所以一直改动网络包中MAC层的目标MAC地址是可行的。 IP地址代表我要去哪(目的地)。 MAC目标地址代表的是我下一站去哪(下一站)。
1
2
3

image-20220728141455074