TCP/IP协议簇之网络层

TCP/IP协议簇系列目录

OSI七层模型及各层功能概述

TCP/IP协议簇概述

TCP/IP协议簇之物理层

TCP/IP协议簇之数据链路层

TCP/IP协议簇之网络层

TCP/IP协议簇之传输层

TCP/IP协议簇之应用层

TCP/IP协议簇之HTTP协议

---------------------------------------------------------------------------------------------------------------------------

一、网络层概述

       网络层是TCP/IP五层参考模型的第三层,介于传输层和数据链路层之间,它在数据链路层提供的两个相邻端点之间的数据帧的传送功能上,进一步管理网络中的数据通信,将数据设法从源端经过若干个中间节点传送到目的端,从而向运输层提供最基本的端到端的数据传送服务。主要内容有:虚电路分组交换和数据报分组交换、路由选择算法、阻塞控制方法、X.25协议、综合业务数据网(ISDN)、异步传输模式(ATM)及网际互连原理与实现。

       网络层目的:负责在不同网络之间转发数据包,不负责丢失重传,也不负责顺序。它提供的服务使传输层不需要了解网络中的数据传输和交换技术。

二、网络层的基础知识

2.1、ip地址概念

       IP是Internet Protocol(网际互连协议)的缩写,是TCP/IP体系中的网络层协议。设计IP的目的是提高网络的可扩展性:一是解决互联网问题,实现大规模、异构网络的互联互通;二是分割顶层网络应用和底层网络技术之间的耦合关系,以利于两者的独立发展。根据端到端的设计原则,IP只为主机提供一种无连接、不可靠的、尽力而为的数据报传输服务。 ​

2.2、ip地址的分类及演变史

       A类地址:网络号有8位,第一位固定为0,127种,主机号有24位,那么就能给该类地址划分16777215个ip地址,比如你需要组建一个有1千多万台主机的网络,那么你就要去分配一个A类地址,给你一个网络号,然后其中1千多万的ip地址就由你自己分配,最多也就只能分配127个这样的网络。

  B类地址:网络号、主机号16位,就能有65535个网络号和65535个主机号了。

  C类地址:网络号有24位,也就能够分配1000多万个网络,但是主机号只有8位,也就是只能够自己分配254台主机最多

  D类地址:用于多播

  E类地址:留着以后用

       这就是我们老早以前所使用的ip地址,这样看起来很合理,但会暴露出一个问题就是,C类地址只能分配254台主机,现在中小型网络那么多,都超过了254台电脑,如果A公司有1000台电脑,就肯定要去分配B类地址,就造成了几万个的ip地址浪费了。这显然不是很合理。

       分类编址 = <网络号>+<子网号>+<主机号>

  这是ip地址分类的第二大步,中间加了一个子网号,这样就加大了对上面的A类和B类地址的使用率。也就减少了A类和B类地址的浪费,但是也有问题就是C类地址不管怎么划分,他所容纳的主机太小了,随着网路的扩增,人人度使用电脑,那么A类和B类迟早度会用光,所以就用到了我们现在的IP地址。

       无分类编址 = <网路前缀>+<主机号>

       这个就是我们现在用的ip地址的算法。

  网络前缀:255.0.0.0         ip地址:192.168.1.1  那么该ip地址的前8位就属于网络号。

  网络前缀:255.224.0.0     ip地址:192.255.1.1 因为255是8个1,224是111 00000 ,所以前11位表示网络号,也就是这个ip地址是处于192.224.0.0这个网络中,在这个网络中,能包含2的21次方个主机。

  这个网络前缀我们也称做子网掩码

  例如:已知ip地址141.14.72.24,所在网络的子网掩码是255.255.192.0,试求其网络地址?

    子网掩码:255.255.192.0      11111111,11111111,  11000000, 00000000

    ip地址:141.14.72.24            10001101,00001110,01001000,00011000

  所以根据子网掩码知道ip地址的前18位为网络号,网络地址就为:10001101.00001110.01000000.00000000 转换为10进制141.14.64.0,能够存纳14位1也就是16383台主机。

2.3、mac地址和ip地址的区别与联系

1)mac地址概述

        MAC地址,直译为媒体存取控制位址,也称为局域网地址,MAC位址,以太网地址(Ethernet Address)或物理地址。它是一个用来确认网络设备位置的位址。在OSI模型中,第三层网络层负责IP地址,第二层数据链路层则负责MAC位址。MAC地址用于在网络中唯一标示一个网卡,一台设备若有一或多个网卡,则每个网卡都需要并会有一个唯一的MAC地址。

        MAC地址也叫物理地址、硬件地址,由网络设备制造商生产时烧录在网卡(Network lnterface Card)的EPROM(一种闪存芯片,通常可以通过程序擦写)。IP地址与MAC地址在计算机里都是以二进制表示的,IP地址是32位的,而MAC地址则是48位的。

2)mac地址和ip地址的区别

       一.地址长度的不同:MAC地址的长度为48位, IP地址为32位。

       二.所在寻址协议层上的区别:MAC地址应用在OSI第二层,即数据链路层。数据链路层协议可以使数据从一个节点传递到相同链路的另一个节点;IP地址应用于OSI第三层,即网络层。网络层协议使数据可以从一个网络传递到另一个网络上。

       三.分配依据不同:MAC地址的分配是由网络设备制造商生产时写在硬件内部;IP地址的分配是基于网络拓朴。

2.4、发送数据的过程

                                                                        计算机A到计算机E数据传递过程

                                                                                   数据在各层的表示形式

        在网络中我们通过主机的ip地址,先找到他的网络地址,到达了网络地址后,然后通过该网络中的路由器来分析一下这个ip地址是该网路中的哪台主机,这时,路由器就通过该目标ip地址改到对应主机的mac地址,既然知道了mac地址,就能找到该计算机了。怎么找到的呢?就要通过网络层中的ARP(地址解析协议)协议了。

  知道了基础的知识后,现在了解下网络层的几个协议:

三、ARP协议

3.1、ARP协议概述

       地址解析协议:即ARP,是根据IP地址获取物理地址的一个TCP/IP协议。主机发送信息时将包含目标IP地址的ARP请求广播到局域网络上的所有主机,并接收返回消息,以此确定目标的物理地址;收到返回消息后将该IP地址和物理地址存入本机ARP缓存中并保留一定时间,下次请求时直接查询ARP缓存以节约资源。地址解析协议是建立在网络中各个主机互相信任的基础上的,局域网络上的主机可以自主发送ARP应答消息,其他主机收到应答报文时不会检测该报文的真实性就会将其记入本机ARP缓存;

       举个例子,拿局域网来说,一个局域网中有很多主机,主机A想和局域网中的主机B通话,但是只知道对方的ip地址,所以他就通过发广播,给局域网中所有的主机,问这个ip地址是谁,主机B收到了这个信息,通过网络适配器(网卡)就发现自己是这个ip地址,然后就把自己的mac地址发给源主机,这样就知道了mac地址,就能够通信了。

  类似的,在跨网络中就不是直接发广播了,先通过ip地址找到对应的网络地址,如何找到的对应的网络地址呢,通过路由器,每个路由器都有三层。网络层、链路层、物理层,也就是说最高能够识别网络层中的东西来,那么路由器也就有ARP协议了,每个路由器都能识别出目标ip地址在哪个路由器上,这其中涉及到了很多算法,我们这里不做更多的解释,简单来说,路由器能根据目标ip地址找到下一跳路由器的mac地址,然后一步一步跳下去,直到找到目标ip地址的网络地址的路由器,然后通过该路由器来找到目标ip地址的mac地址,这样就能够找到目标主机了,这就是ARP协议。

  发送方是主机,要把IP数据报发送到本网络上的另一个主机。这时用 ARP 找到目的主机的硬件地址。 
  发送方是主机,要把 IP 数据报发送到另一个网络上的一个主机。这时用 ARP 找到本网络上的一个路由器的硬件地址。剩下的工作由这个路由器来完成。 

3.2、ARP欺骗(网络执法官和ARP防火墙)

       ARP欺骗,又称ARP攻击,是针对以太网地址解析协议(ARP)的一种攻击技术,通过欺骗局域网内访问者PC的网关MAC地址,使访问者PC错以为攻击者更改后的MAC地址是网关的MAC,导致网络不通。此种攻击可让攻击者获取局域网上的数据包甚至可篡改数据包,且可让网上上特定计算机或所有计算机无法正常连线。ARP欺骗的运作原理是由攻击者发送假的ARP数据包到网上,尤其是送到网关上。其目的是要让送至特定的IP地址的流量被错误送到攻击者所取代的地方。因此攻击者可将这些流量另行转送到真正的网关或是篡改后再转送。攻击者亦可将ARP数据包导到不存在的MAC地址以达到阻断服务攻击的效果。

注:ARP欺骗发生在数据链路层

四、IP协议

4.1、IP协议概述

       IP(Internet Protocol)协议,又称网际协议,它负责Internet上网络之间的通信,并规定了将数据从一个网络传输到另一个网络应遵循的规则,是TCP/IP协议的核心。正如人类进行有效交流需要使用同一种语言一样,计算机之间的通信也要使用同一种“语言”,而IP协议正是这种语言。IP协议的任务:就是把数据从源地址传送到目的地。它不负责保证传送可靠性,流控制,包顺序和其它对于主机到主机协议来说很普通的服务。

4.2、通过IP数据包格式认识IP协议

                                                                                            IP协议数据报格式

1)固定部分:20个字节,一行是4个字节,有5行

    1.1)第一行  

      版本:占4位,IP协议的版本,通信双方的IP协议版本要一致,普遍用IPv4,以后可能会用IPv6.

      首部长度:占4位,可表示的最大十进制为15,单位是32位字(4个字节),表示首部最长为60个字节,也就是说除去固定部分的20个字节,可选字段和填充最多能是40个字节。

      区分服务:占8位,1个字节。有些要传输的数据要立马传达到对面,比如视频,语音这样的,不能跟邮件慢慢吞吞的达到对方一样,需要立马送达,这就是为什么需要这个区分服务了

      总长度:占16位,2个字节。占首部+数据部分 的总长度是多少。数据帧最长不能超过1500个字节,数据包就不能一次性发太大,如果发的太大就要选择分片处理了。

    1.2)第二行  

      标识:占16位,2个字节,一个计数器,每产生一个数据包,计数器就加1,当数据包被分片时,所有分片后的数据包的标识一样,这样相同的标识的数据包片就能够重新组合到一起。

      标志:占3位,第一位暂时没意义,第二位DF:不能分片的意思,为1时,不能分片,为0就可以分片  第三位MF 还有分片的意思,为0代表这是若干数据包中的最后一片。

      片偏移:占13位,在较长的分组在分片后,某片在原分组中的相对位置,几个例子,1111,1111,1111,1111 这16位,分成4个数据包分片来发,第一个数据包分片的片偏移为1,第二个为5,第三个为9,第四个为13,就是这个意思,片偏移以8个字节为偏移单位,也就是说,每个分片的长度一定是8字节的整数倍,上面是以位来举例说明问题,实际上单位是8个字节为单位。

    1.3)第三行  

      生存时间:也就是ping命令中显示的TTL字段,跳数限制,每经过一个路由器,就减1,当跳到0后,就丢弃该数据包。window系统的起始TTL为32、Linux64、xp:128

      协议:占8位,数据包中数据部分使用的是什么协议,方便目的主机的IP层知道讲数据部分上交给哪个处理。(也就是下一章要将的TCP还是UDP协议)

      首部检验和:占16位。这个字段只检验数据报的首部,但不包括数据部分。这是因为数据报每经过一个路由器,路由器都要重新计算一下首部检验和(一些字段,如生存时间、标志、片偏移等都可能发生变化)。不检验数据部分可减少计算的工作量。

    1.4)第四行

      源地址:占32为,也就是源IP地址

    1.5)第五行

      目标地址:占32位,也是IP地址

  2)可选部分:为了使整个数据包为整数个字节而设置的。   

4.3、静态路由和动态路由

静态路由:一种路由的方式,路由项由手动配置,而非动态决定。与动态路由不同,静态路由是固定的,不会改变,即使网络状况已经改变或是重新被组态。一般来说,静态路由是由网络管理员逐项加入路由表。

动态路由:动态路由是指路由器能够自动地建立自己的路由表,并且能够根据实际情况的变化适时地进行调整。

五、ICMP协议(Ping)

       ICMP协议是一种面向无连接的协议,用于传输出错报告控制信息。它是一个非常重要的协议,它对于网络安全具有极其重要的意义。它是TCP/IP协议族的一个子协议,属于网络层协议,主要用于在主机与路由器之间传递控制信息,包括报告错误、交换受限控制和状态信息等。当遇到IP数据无法访问目标、IP路由器无法按当前的传输速率转发数据包等情况时,会自动发送ICMP消息。ICMP报文在IP帧结构的首部协议类型字段(Protocol 8bit)的值=1。这个协议比较简单,它有两部分组成:ICMP差错报告报文、ICMP询问报文  。这个挺有用的,比如我们经常用来测试网络连接畅通的ping命令等

5.1、ICMP差错报告报文

  检测在传送数据的过程中,发生的错误,如果发生了错误,会通过该协议返回给源主机一个带有错误原因的数据包

  终点不可达:发送数据后,路由器或主机不能完成交付数据报时,就会往源主机发送终点不可达报文

  源点抑制:当路由器或主机由于网络拥塞而丢弃数据报时,返回一个源点抑制报文

  超时:

    参数问题,在ip数据包中的首部有的字段不正确时,丢弃该报,返回参数问题报文

    改变路由(重定向):路由器把改变路由报文发送给主机,让主机下次直接经过改变后的路由器。

5.2、ICMP询问报文

  回送请求和回答:主机向特定目标发出询问,收到此报文必须返回一个ICMP回送回答报文。用于测试目的站是否可达。

  时间戳请求和回答:请某个路由器或主机回答当前的日期和时间,用于进行时钟的同步和测量时间。

六、IGMP协议

      互联网组管理协议(IGMP,Internet Group Management Protocol)是因特网协议家族中的一个组播协议,TCP/IP协议族的一个子协议,用于IP主机向任一个直接相邻的路由器报告他们的组成员情况。允许Internet主机参加多播,也是IP主机用作向相邻多目路由器报告多目组成员的协议。多目路由器是支持组播的路由器,向本地网络发送IGMP查询。主机通过发送IGMP报告来应答查询。组播路由器负责将组播包转发到所有网络中组播成员。

6.1、多播  

  IGMP协议用于多播。

       单播(点到点):50个人想看视频,就得发送50个数据包。

  广播:老师在台上讲课,你们能随时看到老师的电脑屏幕,每个人度能接受到老师屏幕上所有的数据包。

  多播:在一个局域网中,有三个多播组,A、B、C,A在放java视频,B在放C++视频,C在放娱乐视频,如果你想看Java视频,那么你就调到A这个多播组中学习java视频,学习累了,你就可以换到C这个多播组中看看娱乐节目,这就是多播。多播自己需要什么就调什么,而不是跟广播一样,被动接受,播到哪,就只能看到哪,多播能自由控制速度。

6.2、IGMP协议工作流程

       当一台主机加入到一个新的组时,它发送一个IGMP消息到组地址以宣告它的成员身份,多播路由器和交换机就可以从中学习到组的成员。利用从IGMP中获取到的信息,路由器和交换机在每个接口上维护一个多播组成员的列表。

七、数据在局域网和广域网中传递

注意:每个路由器度有一个路由表,并且主机也有记录ip地址和对应mac地址的功能。并不是每次通信度需要发广播询问。

7.1、分析从主机A找到主机B的过程

  1)A先在自己的网络中发送广播,通过ARP协议。问所有的主机,谁知道10.0.0.3这个ip地址的主机是谁,同时把自己的主机ip地址和mac地址一起发送,主机B发现自己是10.0.03这个ip地址,就把自己的mac地址发回去。

  2)主机A发现有人回应,就知道在自己本网络中,然后就找到了目标主机,开始通讯。

7.2、分析从主机A找到主机E的过程

  1)主机A先发广播看自己本网络没有该主机,没有,然后就给ip地址为10.0.0.1这个路由器F1发信号获得路由器的mac地址,然后给他发信号叫该路由器F1帮我们查找ip地址为12.0.0.3的主机。这个路由器的ip地址就网关,所以每台计算机上度要有三个东西,ip地址,子网掩码,网关。 

  2)路由器因为知道所有的网络在哪里,通过子网掩码和ip地址,就能够算出该ip地址在哪一个网段中,路由器就一跳一跳的经过路由器,知道找到对应网段的路由器F2

  3)找到F2后,F2就以同样的方式通过ip地址找到对应的mac地址,就这样找到了。

  上述过程省略了路由器如何寻找这一步,其中有很多中方式,很多种算法,我们就知道我们给ip地址和子网掩码给路由器,路由器就知道下一跳给谁,知道找到对应网段。

7.3、分析从主机A到主机E数据的形式

       传输层:讲各个数据段划分序号

  网络层:加上ip地址

  数据链路层:加上mac地址和CRC检测的FCS

  物理层:转化为比特流传输

  集线器:只认识物理层,用来转发比特流

  交换机:能认识数据链路层,所以交换机有mac地址表,能够记录各种mac地址,下一次就能选择性的转发数据了

  路由器,能认识网络层,有路由表,所以能够通过ip地址找到对应网段。

 

借鉴博文:https://www.cnblogs.com/zhangyinhua/p/7609242.html#_lab2_1_2

                  https://www.cnblogs.com/mingyanwa/p/11952964.html

                  https://blog.csdn.net/yang_lan1/article/details/92403861

                  https://www.jianshu.com/p/3ccc15d2b189

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值