3、前置知识点一 《网络分层》
3.1 分层概览
3.1.1 网路传输流程
- 网络传输过程存在一个封包、解包的流程,具体流程如下(TCP/IP-5层结构);封包过程从顶层-》底层,解包刚好相反
- 封包步骤一:应用层通过一定的方式(加密等)进行数据封装,放入需要的一些参数,比如对应的协议
- 封包步骤二:传输层会包括应用层封装好的数据,添加对应的port以及对应的传输层协议
- 封包步骤三:网络层会包括传输层、应用层相关数据,添加上网络层的srcIP、dstIP数据
- 封包步骤四:数据链路层会包括网络层、传输层、应用层封装好的数据,然后添加上srcMAC、dstMAC数据
- 完成封包动作后,数据会经由网卡驱动转换为对应的电信号由物理网卡通过传输设备进行传输
- 同理,接收方接到对应的数据包后,会层层解包,最终获取到对应的传输数据
- 针对上面流程细想一下会产生一些疑问,如下:
- 1、封包步骤四里面怎么获取dstMAC地址?
- 2、不同网段的寻址流程是怎样的?即发送方一步一步的找到接收方?
- 3、接收方解包后发现目标地址不是自己怎么版?丢弃
OR
继续转发? - 4、接受方处理完数据后又是怎么响应回去的?
3.2 物理网络通讯原理
3.2.1 同网段通讯流程
-
从上图可以看出两台电脑在
同一局域网
,现在要了解的同网段互通原理 -
由上面的网络分层大概了解了数据包传输的过程,当前第一个要解决的问题就是,怎么获取dstMac?
-
dst mac即目标地址的物理mac地址,获取mac地址的方式,是通过arp协议; arp协议可以这样理解:以目标ip为线索,找到目的ip所在机器的mac地址; 获取目标mac地址的方式一般情况下有两种: a、本地的arp高速缓存,里面直接根据ip进行匹配,匹配到直接使用; b、通过arp协议进行广播,发送arp请求包,同一网段内都会收到,对应ip的机器响应返回自身的mac地址
-
目标mac地址获取后,即完成了整个的封包流程,下面就是通过物理层设备进行信号发送
-
补充说明: 交换机本身会记录mac地址和交换机端口的映射关系。比如:mac=a,端口为1。 那当它接收到数据包,并发现mac=a时,它会直接将数据扔向端口1。
-
综上所述,同网段传续流程已说明
3.2.2 不同网段通讯流程
-
第一步肯定还是准备数据包,进行封包操作,但是封包操作中设计dstMAC的寻址,不同网段是怎么实现呢
-
src ip 192.168.0.2 dst ip 110.242.68.3 src mac 已知 dst mac ?????
-
由于源地址和目标地址不在同一网段,因此无法直接获取目标ip的mac地址
-
此时地址会先查看本机路由表,如下:
-
[root@localhost ~]# route -n Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 0.0.0.0 192.168.159.2 0.0.0.0 UG 100 0 0 ens33 192.168.159.0 0.0.0.0 255.255.255.0 U 100 0 0 ens33
-
不同网段匹配不到对应的路由规则,最终匹配到网关上面即:192.168.159.2,此时会获取到网关的mac地址
-
src ip 192.168.0.2 dst ip 110.242.68.3 src mac 已知 dst mac gateway-lan-mac
-
然后通过物理层进行数据发送,网关接收到数据进行解包操作
-
解包后发现mac地址就是自己的mac地址,会继续进行网络层解包操作,发现ip不是自身ip,自己本身又是网关,因此继续进行下一跳地址的查找,此时同样会先进行110.242.68.3对应的mac地址寻找
-
寻找逻辑如上,不通网段无法获直接取到对应mac地址,进行路由匹配找到对应的wan口mac地址,封包如下
-
#注意 解包匹配后,会在重新进行封包操作 src ip 192.168.0.1 dst ip 110.242.68.3 src mac 已知(对应0.1的mac地址) dst mac gateway-wan-mac
-
以此往复,通过层层跳转,最终找到110.242.68.3对应的机器,进行层层解包,获取到发送过来的应用层数据进行处理;
3.2.3 响应流程分析
-
nat网络地址转换技术
-
SNAT
处理,全称是:source network address translator
源网络地址转换 -
每经过一次转换,都会在对应路由器的转换地址表里面添加上对应的转换记录,大致如下:
-
src ip = 192.168.0.2:1234 src ip = 221.15.159.209:1234 <====> dst ip = 110.242.68.3:80 dst ip = 110.242.68.3:80
-
接收方生成响应数据后,进行封包操作后数据传输,封包流程同上面的不同网段的发起流程,最终接收方获取到的封包数据大致如下
-
src ip = 110.242.68.3 dst ip = 21.15.159.209 src mac = 本机mac dst mac = 21.15.159.209对应mac地址
-
数据包传输,解包流程如下
-
1、解析数据链路层mac地址,和自己本机mac进行匹配,不匹配直接丢弃了; 2、mac地址匹配通过后,进行网络层解包操作,进行ip地址匹配,匹配不通过,进行下一跳的寻址操作; 3、匹配通过,对路由器里面的转换记录表进行匹配,获取到转换前地址进行转发即可
-
最终由发起方收到响应数据包,进行层层解包,获取到应用层封装的数据;