一个网络数据传输流程的例子

一个网络数据传输流程的例子

以使用某app软件为例,来分析它的具体数据传输流程。

  • DNS

首先,当我们第一次登陆该app时候,需要进行数据初始化,此时,我们需要连接到服务器,我们需要查询DNS服务器来获取域名所对应的IP,下图为DNS请求报文。

一个网络数据传输流程的例子

一个网络数据传输流程的例子

图1 DNS请求报文

该报文要通过本地的局域网网关才能将请求报文转发出去,因此我们查找本地路由表,将数据发送往网关。

一个网络数据传输流程的例子

图2 本地路由表

本地网关为192.168.1.121,因此,我们需要将报文发往121。

  • ARP

通过查询arp缓存,发现没有存储121对应的MAC地址。因此,我们通过arp地址解析协议来获取其MAC地址。本地用户发送arp请求,广播至整个局域网,当网关主机的arp层收到广播报文后,识别出发送端在寻问其IP所在MAC地址,于是发送一个ARP应答,其包含IP地址及对应的硬件地址。

一个网络数据传输流程的例子

图3 ARP请求报文

一个网络数据传输流程的例子

图4 ARP响应报文

在获取到网关的MAC地址后,用户将报文传送至网关,接下来网关再重复类似的操作将报文传送至下一跳路由,直至DNS服务器。在获取到DNS响应报文后,得到该域名所对应的IP地址。通过通过同样的方式,我们可以和IP所在服务器建立连接。

  • 建立连接

在获取到对端的IP地址后,可以发送TCP报文与之建立连接,连接要经过三次握手。如果为两次握手的话,如果采用两次的话,会出现下面这种情况:比如是A机要连到B机,结果发送的连接信息由于某种原因没有到达B机;于是,A机又发了一次,结果这次B收到了,于是就发信息回来,两机就连接。数据传送完后断开。结果这时候,原先没有到达的数据又传到了B机,于是B机发信息给A,此时B会误认为和A进行了连接,这个时候B机就在等待A传送数据。

一个网络数据传输流程的例子

一个网络数据传输流程的例子

图5 三次握手连接

  • 数据传输

HTTP请求与响应(略)

  • 拆链

数据传送完毕后,需要进行拆链,以断开TCP连接,一般而言,我们需要进行四次握手,才完成拆链的操作,如下图。

一个网络数据传输流程的例子

一个网络数据传输流程的例子

图6 四次握手拆链