网络层

网络层

一、指引

指引

负责在不同网络之间尽力转发数据包,基于数据包的IP地址转发,不负责丢失重传,如果前面处理不过来,则后来的数据包就会被丢弃。也不管你的数据包有什么顺序,反正来了就规划路线,然后转发出去。可靠传输由传输层来实现。

网络层工作

动态规划就是动态路由,指定就是静态路由

数据包在互联网传送过程
互连网络与虚拟互连网络

所以只要网络连接没有问题,就可以将复杂的互联网看成一个虚拟的网络,从而简化分析问题的复杂度。

二、PT搭建网络验证网络层功能

搭建两个局域网

使用路由去将两个局域网通过广域网连接

image-20200524160045027.png

规划IP地址

image-20200524160918523.png
image-20200524161505683.png

路由器端口配置

no shutdown 表示打开这个端口,shutdown是关闭

router 1:由于是发送方,所以要设置时钟频率,就是发送速度

Would you like to enter the initial configuration dialog? [yes/no]: n

Router>enable

Router#config terminal

Router(config)#interface fastEthernet 0/0

Router(config-if)#no shutdown

Router(config-if)#ip address 10.0.0.1 255.0.0.0

Router(config-if)#exit

Router(config)#interface serial 2/0

Router(config-if)#no shutdown

Router(config-if)#clock rate 64000

Router(config-if)#ip address 11.0.0.1 255.0.0.0

router 2 :接收方,不需要配置时钟频率

Would you like to enter the initial configuration dialog? [yes/no]: n

Router>enable 进入特权模式

Router#config terminal 进入配置终端

Router(config)#interface serial 3/0

Router(config-if)#ip address 11.0.0.2 255.0.0.0

Router(config-if)#no shutdown

Router(config-if)#exit

Router(config-if)#interface fastEthernet 0/0

Router(config-if)#ip address 12.0.0.1 255.255.0.0

Router(config-if)#no shutdown

测试网络是否连通

image-20200524164742365.png

局域网和广域网都通了,但是左边的主机Ping 右边主机是不通的,因为路由器不知道下一跳要把数据包给谁,需要管理员进行配置路由表,或者它自己学习,这就是静态路由和动态路由。

查看路由表

Router#show ip route

配置静态路由

Router(config)#ip route 12.0.0.0 255.255.0.0 11.0.0.2

表示如果去12.0.0.0网段,下一跳就给到11.0.0.2

再Ping一次

C:>ping 12.0.0.2

Pinging 12.0.0.2 with 32 bytes of data:

Reply from 12.0.0.2: bytes=32 time=2ms TTL=126

Reply from 12.0.0.2: bytes=32 time=2ms TTL=126

Reply from 12.0.0.2: bytes=32 time<1ms TTL=126

Reply from 12.0.0.2: bytes=32 time=12ms TTL=126

Ping statistics for 12.0.0.2:

​ Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),

Approximate round trip times in milli-seconds:

​ Minimum = 0ms, Maximum = 12ms, Average = 4ms

这次就通了

三、发送数据的过程

image-20200524175644876.png
image-20200524175115751.png

数据链路层会比对目标IP地址的网段,看是否是同一网段的,然后分两种情况进行数据的发送。不过他们的数据报都是一样的,因为网络层封装的时候只看IP地址,然后传给数据链路层。

数据链路层一看,原来是同一网段的,那就发送一个ARP广播,询问网段中的所有计算机,看谁的IP地址和这个目标地址的IP地址相同,则目标计算机会返回他的MAC地址,然后封装MAC帧进行传输。

数据链路层一看,。竟然不是同一网段的,那就发送一个ARP广播,拿着网关去询问网段中的所有设备,看谁的IP地址和这个目标地址的IP地址相同,则目标计算机会返回他的MAC地址,然后封装MAC帧进行传输。这个目标MAC地址就是路由器的MAC地址,每个计算机配网关就是路由器的IP地址。

四、网络层协议

ARP协议

地址解析协议,即ARP(Address Resolution Protocol),是根据IP地址获取物理地址的一个TCP/IP协议主机发送信息时将包含目标IP地址的ARP请求广播到局域网络上的所有主机,并接收返回消息,以此确定目标的物理地址;收到返回消息后将该IP地址和物理地址存入本机ARP缓存中并保留一定时间,下次请求时直接查询ARP缓存以节约资源。地址解析协议是建立在网络中各个主机互相信任的基础上的,局域网络上的主机可以自主发送ARP应答消息,其他主机收到应答报文时不会检测该报文的真实性就会将其记入本机ARP缓存;由此攻击者就可以向某一主机发送伪ARP应答报文,使其发送的信息无法到达预期的主机或到达错误的主机,这就构成了一个ARP欺骗ARP命令可用于查询本机ARP缓存中IP地址和MAC地址的对应关系、添加或删除静态对应关系等。相关协议有RARP代理ARPNDP用于在IPv6中代替地址解析协议。

ARP协议包是没有IP地址的,那是IP协议的作用,选定路径

ARP广播只会在通信前发送一次,之后传给这个IP地址的时候就不会再发了,直接使用本机ARP缓存中记录的MAC地址。

ARP数据包

image-20200524221550221.png
查看本机ARP缓存
image-20200524195126933.png
ARP欺骗
image-20200524200139834.png

P2P终结者和网络执法官就是利用了ARP欺骗,ARP欺骗是一个数据链路层的故障,因为是MAC地址错误。

如果发现处于同个网段的两个计算机无法通信,或者其他外面的计算机无法访问本网段的服务器,那么就可以排查一下是不是ARP欺骗。通过两个计算机的arp -a指令比对一下是否相同,如果不同通过arp -s 目标IP地址 新MAC地址进行MAC地址的修改。

防止ARP欺骗
执行bat脚本arp -s命令
image-20200524202919909.png

如果同一个网段的计算机和网关之间都知道了对方的MAC地址,则不会再使用ARP协议了,也就没机会ARP欺骗了。就是将对方的MAC地址设置为静态的,可以写一个.bat脚本,在计算机启动的时候就执行这个脚本,arp -s 目标IP地址 MAC地址,然后就能够将目标计算机的MAC地址设置为静态的了,-s就是表示static ,静态。

防火墙
image-20200524202826781.png

ICMP协议

互联网控制消息协议(英语:Internet Control Message Protocol,缩写:ICMP)是互联网协议族的核心协议之一。它用于网际协议(IP)中发送控制消息,提供可能发生在通信环境中的各种问题反馈。通过这些信息,使管理者可以对所发生的问题作出诊断,然后采取适当的措施解决。

ICMP [1]依靠IP来完成它的任务,它是IP的主要部分。它与传输协议(如TCPUDP)显著不同:它一般不用于在两点间传输数据。它通常不由网络程序直接使用,除了 pingtraceroute 这两个特别的例子。 IPv4中的ICMP被称作ICMPv4,IPv6中的ICMP则被称作ICMPv6

ping指令就是使用ICMP协议,测试网络是否畅通

image-20200524203715407.png
image-20200524203808698.png

ping IP或域名 -t表示一直Ping

image-20200524204034186.png
使用PT演示Ping命令返回的两种错误
image-20200524210351361.png
有去无回

让PC2PingPC4

image-20200524210652765.png

由于返回的信息回不来所以请求超时了,如果网络拥堵也会超时,因为回不来。

到不了

让PC4去ping PC2

image-20200524210458723.png

路由表不知道怎么走就返回目标地址无法到达

pathping命令
image-20200524211107266.png
image-20200524211614511.png
tracert指令

可以跟踪,但是不计算丢包

windows

image-20200524212149923.png

路由器上

image-20200524212324115.png

IGMP协议

网路群组管理协议(英语:Internet Group Management Protocol,缩写:IGMP)是用于管理网路协议多播组成员的一种通信协议。IP主机和相邻的路由器利用IGMP来创建多播组的组成员。像ICMP用于单播连接一样,IGMP也是IP多播说明的一个完整部分。 IGMP为互联网协议的一种,属于开放系统链接(OSI) 模块的第三层协议,IP主机用它将主机的多点发送成员人数报告给临近的多点发送路由器。

点播

就是两个计算机直接建立一份会话连接,可以想看哪里看哪里,有进度条。

广播

源计算机发送一个全F地址的广播信息,所有的计算机都会处理这个广播包。比如一个学校的全体学生都看同一个老师上课,如果使用点对点,那么就会发送很多份,占用带宽,所以使用广播就能节省带宽。

组播==多播

可能有些学生想要听数学老师的课,有些学生想要听英语老师的课,那么使用广播就不行了,可以使用一个多播地址,然后想上数学课的学生绑定数学老师的组播地址,这就将学生进行了分组,这就像是电视机调频道一样,想看哪个老师的,就调到那个组播地址。没有进度条,播到哪播什么都控制不了。多播不会建立会话

image-20200524214553872.png

五、IP数据包

image-20200524221415954.png

抓包分析

这个图直观展示了IP数据包的首部

image-20200524225111815.png
分片

当IP数据包大于1500字节(因为网络层最大支持65535字节,而数据链路层最大支持1500字节),那么在数据链路层就会进行分片,然后再分别传输,到了目标地址,它会将这些片给合成完整的数据帧,如果等了好久还是没收齐这些片,那么之前收集的片也会丢掉,这个包就传输失败了。泪滴攻击就是利用这个分片的原理来攻击你的计算机。

泪滴攻击(TearDrop)指的是向目标机器发送损坏的IP包,诸如重叠的包或过大的包载荷。借由这些手段,该攻击可以通过TCP/IP协议栈中分片重组代码中的bug来瘫痪各种不同的操作系统

版本
image-20200524225301501.png
首部长度

占2字节,如果可选字段没有的话值就为20字节,所以数据部分不分片的最大长度为1480字节
image-20200524225334824.png
区分服务
image-20200524225649229.png

网络上的数据有优先级之分,所以根据区分服务的参数区分优先级

标识和标志

标识:占2字节,是用于在数据包分片的时候使得目标计算机知道哪些片是属于同一个数据包的

image-20200524225156412.png

标志:占3位,表示分片的一些信息

这个3位字段用于控制和识别分片,它们是:

  • 位0:保留,必须为0;
  • 位1:禁止分片(Don’t Fragment,DF),当DF=0时才允许分片;
  • 位2:更多分片(More Fragment,MF),MF=1代表后面还有分片,MF=0 代表已经是最后一个分片。

如果DF标志被设置为1,但路由要求必须分片报文,此报文会被丢弃。这个标志可被用于发往没有能力组装分片的主机。

当一个报文被分片,除了最后一片外的所有分片都设置MF为1。最后一个片段具有非零片段偏移字段,将其与未分片数据包区分开,未分片的偏移字段为0。

image-20200524225134869.png
片偏移

占13位。片偏移:较长的分组在分片后,某片在原分组中的相对位置。也就是说,相对用户数据字段的起点,该片从何处开始。片偏移以8个字节为偏移单位。这就是说,每个分片的长度一定是8字节(64位)的整数倍。

image-20200524230050369.png

分片示例

image-20200524231418054.png
image-20200524231506790.png

结束的包

image-20200524231753873.png

是一个ICMP协议的包

存活时间(Time to Live ,TTL)

存活时间(英语:Time To Live,简写TTL)是电脑网络技术的一个术语,指一个数据包在经过一个路由器时,可传递的最长距离(跃点数)。每当数据包经过一个路由器时,其存活次数就会被减一。当其存活次数为0时,路由器便会取消该数据包转发,IP网络的话,会向原数据包的发出者发送一个ICMP TTL数据包以告知跃点数超限。其设计目的是防止数据包因不正确的路由表等原因造成的无限循环而无法送达及耗尽网络资源。

和物理地址一样,每过一次路由器都会进行一次修改,物理地址是一个网段两个计算机之间可以直接通信,只有过了一个新路由器,到了新网段需要调整物理地址。

协议号
image-20200525075259366.png
  • ICMP协议号 0x01
    image-20200525075412896.png
  • IGMP协议号 0x02

  • TCP 0x06
    image-20200525080115450.png
  • UDP 0x11
    image-20200525080054330.png
  • IPv6 41

  • OSPF 89

首部检验和

这个16位检验和字段只对首部查错,不包括数据部分。在每一跳,路由器都要重新计算出的首部检验和并与此字段进行比对,如果不一致,此报文将会被丢弃。重新计算的必要性是因为每一跳的一些首部字段(如TTL、Flag、Offset等)都有可能发生变化,不检查数据部分是为了减少工作量。数据区的错误留待上层协议处理——用户数据报协议(UDP)和传输控制协议(TCP)都有检验和字段。此处的检验计算方法不使用CRC。

image-20200525080530217.png
image-20200525081109865.png
选项

附加的首部字段可能跟在目的地址之后,但这并不被经常使用,从1到40个字节不等。请注意首部长度字段必须包括足够的32位字来放下所有的选项(包括任何必须的填充以使首部长度能够被32位整除)。当选项列表的结尾不是首部的结尾时,EOL(选项列表结束,0x00)选项被插入列表末尾。下表列出了可能

六、IP分片和重装

分片

当设备收到IP报文时,分析其目的地址并决定要在哪个链路上发送它。MTU决定了数据载荷的最大长度,如IP报文长度比MTU大,则IP数据包必须进行分片。每一片的长度都小于等于MTU减去IP首部长度。接下来每一片均被放到独立的IP报文中,并进行如下修改:

  • 总长字段被修改为此分片的长度;
  • 更多分片(MF)标志被设置,除了最后一片;
  • 分片偏移量字段被调整为合适的值;
  • 首部检验和被重新计算。

例如,对于一个长20字节的首部和一个MTU为1,500的以太网,分片偏移量将会是:0、(1480/8)=185、(2960/8)=370、(4440/8)=555、(5920/8)=740、等等。

如果报文经过路径的MTU减小了,那么分片可能会被再次分片。

比如,一个4,500字节的数据载荷被封装进了一个没有选项的IP报文(即总长为4,520字节),并在MTU为2,500字节的链路上传输,那么它会被破成如下两个分片:

# 总长 更多分片(MF)? DF 分片偏移量
首部 数据
1 2500 0 0
20 2480
2 2040 0 310
20 2020

现在,假设下一跳的MTU为1,500字节,那么每一个分片都会被再次分成两片(由于数据片段只有在目的主机才重新被组成数据报,因此再次分片是针对每个在网络中传输的数据帧):

# 总长 更多分片(MF)? DF 分片偏移量
首部 数据
1 1500 0 0
20 1480
2 1020 0 185
20 1000
3 1500 0 310
20 1480
4 560 0 495
20 540

第3和4片是从原始第2片再次分片而来,所以除了分片后的最后一个分片外MF为都为1。

七、使用抓包工具排除网络故障

有时网络故障是因为局域网内有台计算机不断在发ARP广播包,通过抓包可以看到发送者的IP地址,进而解决故障。如果这个IP地址是伪造的,则只能通过二分法来拔网线确定故障位置。

八、IP协议

路由器通过两种路由,静态路由和动态路由来进行数据的转发,由管理员指定的称为静态路由,自己学习的称为动态路由。所有能够使路由器学习路由表的协议都是IP协议。

网络畅通的条件:数据包有去有回

九、PT搭建路由通信实验

image-20200525094602201.png

一定要一开始先规划好IP地址,不然后面就乱了

注意:广域网线在串口2端定义时钟频率

image-20200525092245961.png

这里有个小钟表,表示需要定义时钟频率

定义时钟频率

不能乱写,有规范的

Router(config-if)#clock rate ?

Speed (bits per second

1200

2400

4800

9600

19200

38400

56000

64000

72000

125000

128000

148000

250000

500000

800000

1000000

1300000

2000000

4000000

<300-4000000> Choose clockrate from list above

Router(config-if)#clock rate 64000

Router(config-if)#ip address 172.16.0.1 255.255.255.0

Router(config-if)#no shutdown

此时路由器不知道到其他网段应该怎么走 ,PC0此时PingPC1会这样

C:>ping 192.168.1.2

Pinging 192.168.1.2 with 32 bytes of data:

Reply from 192.168.0.1: Destination host unreachable.

Reply from 192.168.0.1: Destination host unreachable.

Reply from 192.168.0.1: Destination host unreachable.

Reply from 192.168.0.1: Destination host unreachable.

Ping statistics for 192.168.1.2:

​ Packets: Sent = 4, Received = 0, Lost = 4 (100% loss),

网关回答说无法到达目的地

配置路由表:静态路由

网关的路由表配置了之后再Ping就是超时了,因为数据包已经从这个网段中发出去了,但是没回来,就超时了。

配置完成后出现了一个奇怪的问题,PC0去PingRouter0可以Ping的通,但是PingPC1却超时了。

image-20200525101838069.png

猜测是Router0和PC1之间出现了问题。PC1PingRouter0也没有问题。

image-20200525101932356.png

猜测是PC1的网关没设置或者设置错了,结果发现网关真的错了,配成了198.168.1.1,改正后就Ping的通了

image-20200525101953968.png
image-20200525102017701.png
静态路由

需要管理员告诉路由器没有直连的网络下一跳需要给谁,想要到达路由相邻的网络(就是路由器的端口所位于的网段,就是路由器相邻的网段,同一网段的通信不需要其他路由器转发,所以不用路由表)之外的网络的话就需要路由表中指定

image-20200525105256638.png

静态路由不适合在网络规模比较大的情况下使用,要写很多条路由表,而且如果网络线路发生了变化就不通了。这个时候出现了动态路由。

动态路由
RIP协议

路由信息协议(英语:Routing Information Protocol,缩写:RIP)是一种内部网关协议(IGP),为最早出现的距离向量路由协议。属于网络层,其主要应用于规模较小的、可靠性要求较低的网络,可以通过不断的交换信息让路由器动态的适应网络连接的变化,这些信息包括每个路由器可以到达哪些网络,这些网络有多远等。

虽然RIP仍然经常的被使用,但是由于收敛慢和支持的广播网络规模有限等缺点(最大支持15跳,再多就认为不可到达),许多人认为它将会而且正在被诸如OSPFIS-IS这样的路由协议所取代。当然,我们也看到EIGRP,一种和RIP属于同一基本协议类但更具适应性的路由协议,也有被使用。

路由器周期性的向周围的路由器广播路由表,还会说它到某个网段经过的路由器的个数,也就是需要几跳才能到达目标网段。然后,如果某个路由器想要到某一个网段就会根据它周围路由器的路由表,选择一个跳数最少的进行传输信号。

PT配置动态路由

image-20200525152230987.png

Router#config t

Router(config)#router rip//执行这个命令就开启了动态路由

Router(config-router)#network 192.168.0.0//配置向外界路由器发送所能到达的网段,把和他直接相连的网段都给放上去

Router(config-router)#network 192.168.1.0

Router(config-router)#network 192.168.2.0

Router(config-router)#network 192.168.7.0

配置完成之后

image-20200525131609786.png

这些路由器自动根据RIP协议去获得动态路由

现在PC0和PC2就能Ping通了

image-20200525132037955.png

此时追踪跃点,路线可知

image-20200525150818854.png

路由器选择了最优这条线路

image-20200525150851580.png

如果最优线路此时发生了问题,比如网线给人剪断了

image-20200525151106222.png
image-20200525151150841.png

它会自动走次优的线路,所以说动态路由是可以应对网络变化的

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 213,616评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,020评论 3 387
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 159,078评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,040评论 1 285
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,154评论 6 385
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,265评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,298评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,072评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,491评论 1 306
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,795评论 2 328
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,970评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,654评论 4 337
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,272评论 3 318
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,985评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,223评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,815评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,852评论 2 351