网络通信过程 小结(图解)

 

 

上图说明:蓝色大框框和红色大框框代表两个不同子网,框框上面是子网主机地址和掩码,蓝色框框内和红色大框框内都有三个主机,红蓝子网中间经过三个路由器:蓝色、黄色、红色,每个路由器都有两个网口,网口地址图片有标记。

示例:

1、假设蓝色子网中的192.168.1.2需要和192.168.1.3通信,根据TCP/IP协议规定,网络数据需要逐层由上而下封包发送,封装过程:应用层头部+数据->传输层首部+(应用层头部+数据)->网络层头部+(传输层首部+(应用层头部+数据))->数据链路层头部+(网络层头部+(传输层首部+(应用层头部+数据)))->比特流,看似封装过程复杂,其实是将上层数据前面加本层头部封装后再传递给下层,最终到达底层,以比特流的形式在物理层传输。

,下面讲解各个层首部包含的主要内容:

应用层首部:协议名称(如 http ftp smtp pop3 telnet)、版本等

传输层:协议名称(如 tcp udp)、版本、源端口,目标端口

网络层首部: 协议名称(如IP),版本、源IP地址,目标IP地址

数据链路层首部:协议名称(如IEEE802.3,Ethernet 以太网协议),版本、源mac地址,目标mac地址

物理层首部:协议名称、版本号等。

回到上面的问题,蓝色子网192.168.1.0/24内的主机192.168.1.2需要和同一子网的192.168.1.3通信,按照上面分析的各层首部信息,需要知道网络层的源(目标)IP地址,源(目标)端口以及数据链路层的源(目标)mac地址,其中源IP地址目标IP地址已知,192.168.1.2和192.168.1.3,源端口一般是程序动态分配,目标端口也是根据传输层协议可以得出,如http协议的目标端口是80端口,源mac地址也是可以得到的,那么就差目标mac地址不知道,在192.168.1.2发送数据包给目标地址之前,会有一个路由过程,即通过路由表判断目标ip是否处在同一局域网内,判断过程是目标ip和路由表内子网掩码按位与计算,如果得出的结果和本网络地址相同,就可以确定目标ip处在同一网络内,假定目标IP处在同一网络内,那么通信之前需要获取对方的mac地址,一般先查看本地arp缓存,arp缓存记录了本网络内ip地址和mac地址的关系,如果没有查到关系,那么192.168.1.2发送一个arp广播包到局域网内的所有主机,arp包结构内容大概如下:源ip:192.168.1.2 目标mac 83:ab:94:93:31:84 目标ip:192.168.1.3 目标mac: 00:00:00:00:00:00.注意由于目标mc地址未知,所以arp包中的目标mac置为0,当局域网内所有主机收到arp包后,拆包发现目标ip和本机不相同后会缓存源ip和源mac地址到映射表,然后丢弃包,如果目标ip同本机相同,会将arp包中目标mac地址改为本机mac后,通过交换机发送给192.168.1.2,

192.168.1.2此时获取到了目标mac地址,就可以将数据包发送给目标主机。

2、假设192.168.2需要和10.2.124.2通信,先从路由表查找可知对方ip不在本子网内,那么将数据包发送给网关192.168.1.1,但是发送到网关时,需要先获取网关mac地址,先从erp缓存中找网关的mac地址,如果没找到,向网络所有主机广播一个erp包,网关获取到这个包后,返回网关的mac地址给192.168.1.2,然后192.168.1.2将此次arp结果缓存到arp映射表,然后将需要发送的数据包目标mac地址改为192.168.1.1的mac地址,目标ip地址还是10.2.124.2,当192.168.1.1网关接收到这个包后,拆开网络首部发现mac地址是自己,表示这个包需要自己投递,通过检查目标ip(10.2.124.2)和网关的路由表计算得出该目标ip不在本网络内,那么发送到默认网关48.5.89.1,同时,修改包中网络首部目标mac为默认网关的mac地址,源mac地址改完192.168.1.1的mac地址,并发送到蓝色路由器的另一个网口,转发到这个网卡后,这个网卡再拆包得到网络包首部的目标ip地址和目标mac地址,发现目标mac地址和自己mac地址一致,表示该包需要自己继续投递(如果不一致丢弃),继续判断目标ip和本机路由表是否在同一网段,发现不是,就投递给蓝色路由器的默认网关黄色路由器的48.5.89.2网口,循环往复,最后路由到了红色路由器的75.178.9.2此时,最开始的数据包的网络首部源mac地址是上一个路由器网口的mac地址,目标mac地址是红色的75.178.9.2网口地址,目标ip还是10.2.124.2,

红色路由器的这个网卡对目标ip和本机路由表计算,得出该目标ip和红色路由器的另一个网卡10.2.124.1是同一个网段,然后获取到10.2.124.1mac地址,并把该数据包网络头部修改后,将数据包发送出去,此时数据包到了红色路由器的10.2.124.1端口,改路由器再通过erp广播包的形式获取到10.2.124.2的mac地址,再将数据包的网络首部目标mac改成10.2.124.2,再通过交换机发送到目标,至此跨网络的通信数据已经成功到达目的地。

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值