TCP/IP(四)网络层

您所在的位置:网站首页 tcpip数据链路层协议栈 TCP/IP(四)网络层

TCP/IP(四)网络层

2024-02-11 14:03| 来源: 网络整理| 查看: 265

  IP地址和MAC地址相同点是它们都唯一,不同的特点主要有:    一是:对于网络上的某一设备,如一台计算机或一台路由器,其IP地址是基于网络拓扑设计出的,同一台设备或计算机上,改动IP地址是很容易的(但必须唯一),而MAC则是生产厂商烧录好的,

         一般不能改动。我们可以根据需要给一台主机指定任意的IP地址,如我们可以给局域网上的某台计算机分配IP地址为192.168.0.112 ,也可以将它改成192.168.0.200。

      而任一网络设备(如网卡,路由器)一旦生产出来以后,其MAC地址不可由本地连接内的配置进行修改。如果一个计算机的网卡坏了,在更换网卡之后,该计算机的MAC地址就变了。    二是:长度不同。IP地址为32位,MAC地址为48位。    三是:分配依据不同。IP地址的分配是基于网络拓扑,MAC地址的分配是基于制造商。    四是:寻址协议层不同。IP地址应用于OSI第三层,即网络层,而MAC地址应用在OSI第二层,即数据链路层。 数据链路层协议可以使数据从一个节点传递到相同链路的另一个节点上(通过MAC地址),

         而网络层协议使数据可以从一个网络传递到另一个网络上(ARP根据目的IP地址,找到中间节点的MAC地址,通过中间节点传送,从而最终到达目的网络)。

  4)两者关系

    这两者的关系是什么呢?在网络中我们通过主机的ip地址,先找到他的网络地址,到达了网络地址后,然后通过该网络中的老大(路由器)来分析一下这个ip地址是你网路中的哪个主机,

    这时,老大(路由器)就通过该目标ip地址改到对应主机的mac地址,既然知道了mac地址,就能找到该计算机了。就好比什么呢。路由器是每次分配给你的ip地址不一样,但是你的mac地址肯定不会变,

    所以就根据ip地址找到你的mac地址。但是怎么找到的呢?就要通过网络层中的ARP(地址解析协议)协议了。

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

    

  RARP:逆地址解析协议(现在不单独讲这个了,所以我在图中画在红色圆圈内部,因为RARP已经被DHCP协议给包含了,DHCP协议在后面会讲解到),所以我们下面讲的就4个协议。

三、ARP协议

  百度介绍:

      

  地址解析协议:通过ip地址来解析主机的mac地址,是怎么个过程呢,拿局域网来说,一个局域网中有很多主机,主机A想和局域网中的主机B通话,但是只知道对方的ip地址,所以他就通过发广播,

给局域网中所有的主机,问这个ip地址是谁,主机B收到了这个信息,通过网络适配器(网卡)就发现自己是这个ip地址,然后就把自己的mac地址发给源主机,这样就知道了mac地址,就能够通信了。

  类似的,在跨网络中就不是直接发广播了,先通过ip地址找到对应的网络地址,如何找到的对应的网络地址呢,通过路由器,每个路由器都有三层。网络层、链路层、物理层,也就是说最高能够识别网络层中的东西来,

那么路由器也就有ARP协议了,每个路由器都能识别出目标ip地址在哪个路由器上,这其中涉及到了很多算法,我们这里不做更多的解释,简单来说,路由器能根据目标ip地址找到下一跳路由器的mac地址,然后一步一步跳下去,

直到找到目标ip地址的网络地址的路由器,然后通过该路由器来找到目标ip地址的mac地址,这样就能够找到目标主机了。这就是ARP协议。

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

四、IP协议 4.1、IP协议概述

  百度定义:

    

  其实IP的责任就是把数据从源地址传送到目的地。它不负责保证传送可靠性,流控制,包顺序和其它对于主机到主机协议来说很普通的服务。

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

  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)可选部分:为了使整个数据包为整数个字节而设置的。   

五、ICMP协议

   

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

这个协议比较简单,它有两部分组成:ICMP差错报告报文、ICMP询问报文  。这个挺有用的,比如我们经常用来测试网络连接畅通的ping命令等

5.1、ICMP差错报告报文

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

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

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

  超时:

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

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

5.2、ICMP询问报文

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

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

六、IGMP协议 6.1、概述

  

6.2、多播  

  IGMP协议用于多播,解释一下多播是什么把。

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

  多播:在一个局域网中,有三个多播组,A、B、C,A在放java视频,B在放C++视频,C在放娱乐视频,如果你想看Java视频,那么你就调到A这个多播组中学习java视频,学习累了,

      你就可以换到C这个多播组中看看娱乐节目,这就是多播的意思,相对广播来说,自己需要什么就调什么,而不是跟广播一样,被动接受,他播到哪,就只能看到哪,多播能自由控制速度。

  单播:50个人想看视频,就得发送50个数据包。多播的话就发一个,然后通过路由器转发50分给不同的人。

     单播:       多播: 

6.3、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地址找到对应网段。

 

  

喜欢就“推荐”哦!



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3