精华内容
下载资源
问答
  • 网络层协议
    万次阅读
    2019-05-11 14:20:51

    在这里插入图片描述
    网络层有四个协议:ARP协议,IP协议,ICMP协议,IGMP协议。

    ARP协议为IP协议提供服务,IP协议为ICMP协议提供服务,ICMP协议为IGMP协

    议提供服务。

    ARP协议:将IP地址通过广播,目标Mac地址是FF-FF-FF…解析目标IP地址的Mac

    地址。(局域网中)通过arp -a可以查看Mac地址。

    网络执法官软件通过动态更改主机Mac地址,实现arp欺骗,使两台主机不能通讯

    arp -s ip地址 Mac地址 静态绑定Mac地址,可以阻止arp欺骗,点本地连接,支

    持,修复,可以清除静态Mac地址。

    在这里插入图片描述

    使用ICMP协议的命令:

    ping (packet Internet grope) 因特网包嗅探器。

    ping 时间:查看延迟

    	TTL(生存时间):  linux 64  Windows 128 Unix 256 每经一个路由器减1,所以通过TTL
    	
    	可以粗略的判断对方的操作系统
    

    ping -t 一直ping

    ping -l 字节大小 ping多大数据包

    pathping 跟踪数据包路径, 计算丢包情况。

    tracert 到站点经过的路由

    更多相关内容
  • 网络层协议 ——— IP协议

    万次阅读 多人点赞 2022-07-17 21:26:37
    IP协议全称为“网际互连协议(Internet Protocol)”,IP协议是TCP/IP体系中的网络层协议。 双方在进行网络通信时,发送的数据并不是直接从一方的传输层直接发送到了另一方的传输层,而是需要传输层将数据继续向下...

    IP协议

    IP协议全称为“网际互连协议(Internet Protocol)”,IP协议是TCP/IP体系中的网络层协议。

    基本概念

    网络层解决的问题

    TCP作为传输层控制协议,其保证的是数据传输的可靠性和传输效率,但TCP提供的仅仅是数据传输的策略,而真正负责数据在网络中传输的则传输层之下的网络层和链路层。

    • 双方在进行网络通信时,发送的数据并不是直接从一方的传输层直接发送到了另一方的传输层,而是需要传输层将数据继续向下进行交付,在网络层和链路层经过数据封装后再通过网络发送到对方主机,对方主机收到数据后也同样需要在链路层和网络层进行数据解包,此时对方的传输层才拿到了发送过来的数据,然后再继续将该数据向上进行交付。

    网络通信的过程,就像两个人在送互相送数据,这两个人分别在两栋楼的四楼,如果一个人要将数据交给对方,那么这个人就必须先从四楼走到一楼,然后再在路上经过路径选择到达对方楼下,最后再上到四楼将数据交给对方。
    在这里插入图片描述
    其中,送数据的这个人从四楼下来的过程就是数据封装的过程,这个人在路上经过路径选择到达对方楼下的过程就是数据路由的过程,而这个人再上到四楼将数据交给对方的过程就是数据解包的过程。

    • 而网络层要解决的问题就是,将数据从一台主机送到另一台主机,也就是数据的路由。

    保证数据可靠的从一台主机送到另一台主机的前提

    当双方在进行基于TCP的网络通信时,要保证将数据可靠的从一台主机送到另一台主机,前提是发送方要有将数据送到对方主机的能力,要是发送方连将数据发送给对方的能力都没有,那就更不用谈可靠的将数据送给对方主机了。

    • 需要注意的是,发送方有将数据送到对方主机的能力,并不意味着发送方每次发送的数据都能够成功的发送到对方,但如果发送方连将数据发送给对方的能力都没有,那发送方基本就不可能将数据发送给对方。
    • 一旦发送方有了将数据发送给对方的能力,就算发送方某次发送的数据没有成功到达对方,此时上层TCP由于没有收到对应数据的应答,此时上层TCP会要求进行数据重发,直到数据成功发送到对方主机为止。

    也就是说,在网络层有能力将数据送到对方主机的情况下,虽然网络层不能保证每次都能将数据成功送到对方主机,但在TCP提供的可靠性策略的保证下,最终网络层就一定能够将数据可靠的发送到对方主机。

    说明一下:

    • 网络层解决的问题是,将数据从一台主机送到另一台主机,因此网络层解决的是主机到主机的问题。
    • 一方传输层从上方进程拿到数据后,该数据贯穿网络协议栈进行封装和解包,最终到达对方传输层,此时对方传输层也会将数据向上交给对应的进程,因此传输层解决的是进程到进程的问题。

    路径选择

    数据进行的网络传输一般都是跨网络的,而路由器就是连接多个网络的硬件设备,因此数据在进行跨网络传输时一定需要经过多个路由器。
    在这里插入图片描述
    数据路由就像我们旅游一样,当确定了要到达的目标主机后,就需要寻找最短的路径到达该目的地。

    • 目的地的确定是非常重要的,因为目的地直接决定了数据路由时的路径选择,这也是跨网络找到目标主机的根本。
    • 只有数据经过了较为正确的路径选择,最终才可能慢慢趋近于目标网络或目标主机。

    确定数据路由的目的地后,数据就可以在网络中进行路由了,但数据在路由时无法自行进行路径选择,因为这个数据本身是“不认识路”的,因此数据在路由的过程中需要不断“找路人问路”,而这里所谓的“路人”就是网络当中的一台台路由器。

    网络当中的路由器是“认识路的”,它们将自己的“认路经验”都记录到路由表当中,因此路由器可以通过查路由表找到去特定点的最短路径。因此数据在路由时,会不断通过路由器来进行路径选择,以此来一步步靠近目标网络或目标主机。
    在这里插入图片描述

    主机和路由器

    • 主机:配有IP地址,但是不进行路由控制的设备。但实际现在几乎不存在不进行路由控制的设备了,就连你的笔记本也会进行路由控制。
    • 路由器:既配有IP地址,又能进行路由控制。实际现在主流的路由器已经不仅仅具有路由的功能了,它甚至具备某些应用层的功能。
    • 节点:主机和路由器的统称。

    IP协议格式

    IP协议格式如下:
    在这里插入图片描述

    • 4位版本号(version):指定IP协议的版本(IPv4/IPv6),对于IPv4来说,就是4。
    • 4位首部长度(header length):表示IP报头的长度,以4字节为单位。
    • 8位服务类型(Type Of Service):3位优先权字段(已经弃用),4位TOS字段,和1位保留字段(必须置为0)。4位TOS分别表示:最小延时,最大吞吐量,最高可靠性,最小成本。这四者相互冲突,只能选择一个。比如对于ssh/telnet这样的应用程序,最小延时比较重要,而对于ftp这样的程序,最大吞吐量比较重要。
    • 16位总长度(total length):IP报文(IP报头+有效载荷)的总长度,用于将各个IP报文进行分离。
    • 16位标识(id):唯一的标识主机发送的报文,如果数据在IP层进行了分片,那么每一个分片对应的id都是相同的。
    • 3位标志字段:第一位保留,表示暂时没有规定该字段的意义。第二位表示禁止分片,表示如果报文长度超过MTU,IP模块就会丢弃该报文。第三位表示“更多分片”,如果报文没有进行分片,则该字段设置为0,如果报文进行了分片,则除了最后一个分片报文设置为0以外,其余分片报文均设置为1。
    • 13位片偏移(framegament offset):分片相对于原始数据开始处的偏移,表示当前分片在原数据中的偏移位置,实际偏移的字节数是这个值 × 8 \times 8 ×8得到的。因此除了最后一个报文之外,其他报文的长度必须是8的整数倍,否则报文就不连续了。
    • 8位生存时间(Time To Live,TTL):数据报到达目的地的最大报文跳数,一般是64,每经过一个路由,TTL -= 1,一直减到0还没到达,那么就丢弃了,这个字段主要是用来防止出现路由循环。
    • 8位协议:表示上层协议的类型。
    • 16位首部检验和:使用CRC进行校验,来鉴别数据报的首部是否损坏,但不检验数据部分。
    • 32位源IP地址和32位目的IP地址:表示发送端和接收端所对应的IP地址。
    • 选项字段:不定长,最多40字节。

    IP报头在内核当中本质就是一个位段类型,给数据封装IP报头时,实际上就是用该位段类型定义一个变量,然后填充IP报头当中的各个属性字段,最后将这个IP报头拷贝到数据的首部,至此便完成了IP报头的封装。

    IP如何将报头与有效载荷进行分离?

    IP分离报头与有效载荷的方法与TCP是一模一样的,当IP从底层获取到一个报文后,虽然IP不知道报头的具体长度,但IP报文的前20个字节是IP的基本报头,并且这20字节当中涵盖4位首部长度。

    因此IP是这样分离报头与有效载荷的:

    • 当IP从底层获取到一个报文后,首先读取报文的前20个字节,并从中提取出4位的首部长度,此时便获得了IP报头的大小 s i z e size size
    • 如果 s i z e size size的值大于20字节,则需要继续从报文当中读取 s i z e − 20 size-20 size20字节的数据,这部分数据就是IP报头当中的选项字段。
    • 读取完IP的基本报头和选项字段后,剩下的就是有效载荷了。

    IP就是通过这种“定长报头+自描述字段”的方式进行报头和有效载荷的分离的。但需要注意的是,IP报头当中的4位首部长度描述的基本单位与TCP报头当中的4位首部长度一样,都是以4字节为单位进行描述的,这也恰好是报文的宽度。

    4位二进制的取值范围是0000 ~ 1111,因此IP报头的最大长度为 15 × 4 = 60 15\times 4=60 15×4=60字节,因为基本报头的长度是20字节,所以IP报头中选项字段的长度最多是40字节。如果IP报头当中不携带选项字段,那么IP报头的长度就是20字节,此时报头当中的4位首部长度字段所填的值就是 20 ÷ 4 = 5 20\div 4=5 20÷4=5,即0101。

    IP如何决定将有效载荷交付给上层的哪一个协议?

    基于IP协议的传输层协议不止一种,因此当IP从底层获取到一个报文并对其进行解包后,IP需要知道应该将分离后得到的有效载荷交付给上层的哪一个协议。

    在IP报头当中有一个字段叫做8位协议,该字段表示的就是上层协议的类型,IP就是根据该字段判定应该将分离出来的有效载荷交付给上层的哪一个协议的。该字段是发送方的IP层从上层传输层获取到数据后填充的,比如是上层TCP交给IP层的数据,那么该数据在封装IP报头时的8位协议填充的就是TCP对应的编号。

    32位源IP地址和32位目的IP地址

    IP报头当中的32位源IP地址和32位目的IP地址,分别代表的就是该报文的发送端和接收端对应的IP地址。

    数据在网络传输过程中会遇到一个个的路由器,这些路由器会帮助网络当中的数据进行路由转发,使得网络中的数据慢慢趋近于目标主机。路由器在帮助数据进行路由转发时,会提取出该数据的IP报头当中的目的IP地址,并以此作为数据路由转发的重要依据。

    当接收端收到了发送端发来的数据后,接收端可能也想要给发送端发送数据,因此发送端在发送数据时除了需要指明该数据的目的IP地址,还需要指明该数据的源IP地址,也就是发送端的IP地址。即便接收端收到数据后没有数据想要发送给发送端,但至少接收端需要向发送端发送一个响应报文,表明发送端发送的数据已经被接收端可靠的收到了,因此发送出去的数据除了需要指明该数据的目的IP地址,还需要指明该数据的源IP地址。

    理解socket编程:

    • 在进行socket编程的时候,当一端想要发送数据给另一端时,必须要指明对端的IP地址和端口号,也就是发送数据的目的IP地址和目的端口号。
    • 其中这里的IP地址就是给网络层的IP用的,用于数据在网络传输过程中的路由转发,而这里的端口号就是给传输层的TCP或UDP用的,用于指明该数据应该交给上层的哪一个进程。
    • 发送数据时我们不需要指明发送数据的源IP地址和源端口号,因为传输层和网络层都是在操作系统内核当中实现的,数据在进行封装时操作系统会自行填充上对应的源IP地址和源端口号。

    8位生存时间

    报文在网络传输过程中,可能因为某些原因导致报文无法到达目标主机,比如报文在路由时出现了环路路由的情况,或者目标主机已经异常离线了,此时这个报文就成了一个废弃的游离报文。

    为了避免网络当中出现大量的游离报文,于是在IP的报头当中就出现了一个字段,叫做8位生存时间(Time To Live,TTL)。8位生存时间代表的是报文到达目的地的最大报文跳数,每当报文经过一次路由,这里的生存时间就会减一,当生存时间减为0时该报文就会被自动丢弃,此时这个报文就会在网络中消散。

    分片与组装

    数据链路层解决的问题

    IP能够将数据跨网络从一台主机送到另一台主机,而数据在进行跨网络传送时,需要经过一个个的路由器进行路由转发,最终才能到达目标主机。

    比如要将数据从主机B跨网络传送到主机C,那么主机B需要先将数据交给路由器F,路由器F再将数据交给路由器G,…,最终由路由器D将数据交给主机C。
    在这里插入图片描述
    因此IP进行数据跨网络传送的前提是,需要先将数据从一个节点传送到和自己相连的下一个节点,这个问题实际就是由IP之下的数据链路层解决的,其中数据链路层最典型的代表协议就是MAC帧。

    而两个节点直接相连也就意味着这两个节点是在同一个局域网当中的,因此要讨论两个相邻节点的数据传送时,实际讨论的就是局域网通信的问题。

    最大传输单元 MTU

    MAC帧作为数据链路层的协议,它会将IP传下来的数据封装成数据帧,然后发送到网络当中。但MAC帧携带的有效载荷的最大长度是有限制的,也就是说IP交给MAC帧的报文不能超过某个值,这个值就叫做最大传输单元(Maximum Transmission Unit,MTU),这个值的大小一般是1500字节。

    在Linux下使用ifconfig命令可以查看对应的MTU。
    在这里插入图片描述
    由于MAC帧无法发送大于1500字节的数据,因此IP层向下交付的数据的长度不能超过1500字节,这里所说的数据包括IP的报头和IP的有效载荷。

    分片与组装

    如果IP层要传送的数据超过了1500字节,那么就需要先在IP层对该数据进行分片,然后再将分片后的数据交给下层MAC帧进行发送。
    在这里插入图片描述
    如果发送数据时在IP层进行了分片,那么当这些分片数据到达对端主机的IP层后就需要先进行组装,然后再将组装好的数据交付给上层传输层。
    在这里插入图片描述
    注意:

    • 数据的分片不是经常需要做的,实际在网络通信过程中不分片才是常态,因为数据分片会存在一些潜在的问题,比如分片可能会增加丢包的概率。
    • 数据的分片和组装发生在IP层,不仅源端主机可能会对数据进行分片,数据在路由过程中的路由器也可能对数据进行分片。因为不同网络的MTU是不一样的,如果传输路径上的某个网络的MTU比源端网络的MTU小,那么路由器就可能对IP数据报再次进行分片。
    • 分片数据的组装只会发生在目的端的IP层。
    • 在分片的数据中,每一个分片在IP层都会被添加上对应的IP报头,而传输层添加的报头只会出现在第一个分片中,因此网络中传输的数据包可能没有传输层的报头。

    数据的分片和组装都是由IP层完成的

    数据的分片和组装都是在IP层完成的,上层的传输层和下层的链路层并不关心。

    传输层只负责为数据传送提供可靠性保证,比如当数据传送失败后,传输层的TCP协议可以组织进行数据重传。

    • 当TCP将待发送的数据交给IP后,TCP并不关心该数据是否会在IP层进行分片,即TCP并不关心数据具体的发送过程。
    • 当TCP从IP获取到数据后,TCP也不关心该数据是否在IP层经过了组装。

    而链路层的MAC帧只负责,将数据从一个节点传送到和自己相连的下一个节点。

    • 当IP将待发送的数据交给MAC帧后,MAC帧并不知道该数据是IP经过分片后的某个分片数据,还是一个没有经过分片的数据,MAC帧只知道它一次最多只能发送MTU大小的数据,如果IP交给MAC帧大于MTU字节的数据,那MAC帧就无法进行发送。
    • 当MAC帧从网络中获取到数据后,MAC帧也不关心这个数据是否需要进行组装,MAC帧只需要将该数据的MAC帧报头去掉后直接上交给上层IP就行了,而至于该数据的组装问题则是IP需要解决的。

    因此,数据的分片和组装完全是由IP协议自己完成的,传输层和链路层不必关心也不需要关心。

    分片的过程

    假设IP层要发送4500字节的数据,由于该数据超过了MAC帧规定的MTU,因此IP需要先将该数据进行分片,然后再将一个个的分片交给MAC帧进行发送。

    IP报头如果不携带选项字段,那么其大小就是20字节,假设IP层添加的IP报头的长度就是20字节,并按下列方式将数据分片后形成了四个分片报文:

    分片报文总字节数IP报头字节数数据字节数
    11500201480
    21500201480
    31500201480
    4802060

    需要注意的是,分片后的每一个分片数据都需要封装上对应的IP报头,因此4500字节的数据至少需要分为四个分片报文进行发送。

    分片报文到达对方的IP层后需要被重新组装起来,因此IP层在对数据进行分片时需要记录分片的信息,而IP报头当中的16位标识、3位标志和13位片偏移实际就是与数据分片相关的字段。

    • 16位标识:唯一标识主机发送的报文,如果数据在IP层进行了分片,那么每一个分片报文的16位标识是相同的。
    • 3位标志:第一位保留,表示暂时没有规定该字段的意义。第二位表示禁止分片,表示如果报文长度超过MTU,IP模块就会丢弃该报文。第三位表示“更多分片”,如果报文没有进行分片,则该字段设置为0,如果报文进行了分片,则除了最后一个分片报文设置为0以外,其余分片报文均设置为1。
    • 13位片偏移:分片相对于原始数据开始处的偏移,表示当前分片在原数据中的偏移位置,实际偏移的字节数是这个值 × 8 \times 8 ×8得到的。因此除了最后一个报文之外,其他报文的长度必须是8的整数倍,否则报文就不连续了。

    因此上述四个分片报文对应的16位标识都是一样的,假设四个分片报文的16位标识都是123,则这四个报文对应的16位标识、3位标志中的“更多分片”和13位片偏移分别如下:

    分片报文总字节数IP报头字节数数据字节数16位标识“更多分片”13位片偏移
    1150020148012310
    215002014801231185
    315002014801231370
    48020601230555

    需要注意的是,13位片偏移当中记录的字节数是当前分片在原数据开始处的偏移字节数的值 ÷ 8 \div 8 ÷8得到的,比如分片报文2在原始数据开始处的偏移字节数是1480,其对应的13位片偏移的值就是 1480 ÷ 8 = 185 1480\div 8=185 1480÷8=185
    在这里插入图片描述

    组装的过程

    MAC帧交给IP层的数据可能来自世界各地,这些数据可能是经过分片后发送的,也可能是没有经过分片直接发送的,因此IP必须要通过某种方式来区分收到的各个数据。

    • IP报头当中有32位源IP地址,源IP地址记录了发送端所对应的IP地址,因此通过IP报头当中的32位源IP地址就可以区分来自不同主机的数据。
    • IP报头当中有16位标识,未分片的数据各自的16位标识都是不同的,而由同一个数据分片得到的各个分片报文所对应的16位标识都是相同的,因此通过IP报头当中16位标识就可以判断哪些报文是没有经过分片的独立报文,哪些报文是经过分片后的分片报文。

    因此IP可以通过IP报头当中的32位源IP地址和16位标识,将经过分片的数据各自聚合在一起,聚合在一起后就可以开始进行组装了。

    对于各个分片报文来说:

    • 第一个分片报文中的13位片偏移的值一定为0。
    • 最后一个分片报文中的“更多分片”标志位一定为0。
    • 对于每一个分片报文来说,当前报文的13位片偏移加上当前报文的数据字节数 ÷ \div ÷ 8所得到的值,就是下一个分片报文的所对应的13位片偏移。

    根据分片报文的这三个特点就能够将分片报文合理的组装起来。

    • 先找到分片报文中13位片偏移为0的分片报文,然后提取出其IP报头当中的16位总长度字段,通过计算即可得出下一个分片报文所对应的13位片偏移,按照此方式依次将各个分片报文拼接起来。
    • 直到拼接到一个“更多分片”标志位为0的分片报文,此时表明分片报文组装完毕。

    分片报文丢包的问题

    分片后的报文在网络传输过程中也可能会出现丢包问题,但接收端有能力判断是否收到了全部分片报文,比如假设某组分片报文对应的16位标识值为x:

    • 如果分片报文中的第一个分片报文丢包了,那么接收端收到的分片报文中就找不到对应16位标识为x,并且13位片偏移为0的分片报文。
    • 如果分片报文中的最后一个分片报文丢包了,那么接收端收到的分片报文中就找不到对应16为标识为x,并且“更多分片”标志位为0的分片报文。
    • 如果分片报文中的其它分片报文丢包了,那么接收端在进行分片报文的组装时就会找不到对应13位片偏移为特定值的分片报文。

    需要注意的是,未分片报文的“更多分片”标志位为0,最后一个分片报文的“更多分片”标志位也为0,但当接收端只收到分片报文中的最后一个分片报文时,接收端不会将其识别成一个未分片的报文,因为未分片的报文所对应的13位片偏移的值也应该是0,而最后一个分片报文所对应的13位片偏移的值不为0。

    因此只有当一个报文的13位片偏移为0,并且该报文的“更多分片”标志位也为0时,该报文才会被识别成一个没有被分片的独立报文,否则该报文就会被识别成一个分片报文。

    为什么不建议进行分片?

    虽然传输层并不关心IP层的分片问题,但分片对传输层也是有影响的。

    • 如果一个数据在网络传输过程中没有经过分片,那么只要接收端收到了这一个报文,我们就可以认为该数据被对方可靠的收到了。
    • 而如果一个数据在网络传输过程中进行了分片,那么只有当接收端收到了全部的分片报文并将其成功组装起来,这时我们才认为该数据被对方可靠的收到了。但如果众多的分片报文当中有一个报文出现了丢包,就会导致接收端就无法将报文成功组装起来,这时接收端会将收到的分片报文全部丢弃,此时传输层TCP会因为收不到对方应答而进行超时重传。
    • 假设在网络传输时丢包的概率是万分之一,如果将数据拆分为一百份进行发送,那么此时丢包的概率就上升到了百分之一。因为只要有一个分片报文丢包了也就等同于这个报文整体丢失了,因此分片会增加传输层重传数据的概率。

    需要注意的是,只要分片报文当中的某一个出现了丢包,此时传输层都需要将数据整体进行重传,因为传输层并不知道底层IP对数据进行了分片,当传输层发送出去的数据得不到应答时传输层就只能将数据整体进行重传,因此数据在发送时不建议进行分片。

    如何尽可能避免分片?

    实际数据分片的根本原因在于传输层一次向下交付的数据太多了,导致IP无法直接将数据向下交给MAC帧,如果传输层控制好一次交给IP的数据量不要太大,那么数据在IP层自然也就不需要进行分片。

    • 因此TCP作为传输控制协议,它需要控制一次向下交付数据不能超过某一阈值,这个阈值就叫做MSS(Maximum Segment Size,最大报文段长度)。
    • 通信双方在建立TCP连接时,除了需要协商自身窗口大小等概念之外,还会协商后续通信时每一个报文段所能承载的最大报文段长度MSS。

    MAC帧的有效载荷最大为MTU,TCP的有效载荷最大为MSS,由于TCP和IP常规情况下报头的长度都是20字节,因此一般情况下 MSS = MTU - 20 - 20,而MTU的值一般是1500字节,因此MSS的值一般就是1460字节。

    所以一般建议TCP将发送的数据控制在1460字节以内,此时就能够降低数据分片的可能性。之所以说是降低数据分片的可能性,是因为每个网络的链路层对应的MTU可能是不同的,如果数据在传输过程中进入到了一个MTU较小的网络,那么该数据仍然可能需要在路由器中进行分片。

    网段划分

    IP地址的构成

    IP地址由网络号和主机号两部分构成:

    • 网络号:保证相互连接的两个网段具有不同的标识。
    • 主机号:同一网段内,主机之间具有相同的网络号,但是必须有不同的主机号。

    可以在IP地址的后面加一个 /,并在 / 后面加上一个数字,这就表示从头数到第几位为止属于网络标识。

    例如,下图中路由器连接了两个网段。对于网络标识来讲,同一网段内主机的网络标识是相同的,不同网段内主机的网络标识是不同的。而对于主机标识来讲,同一网段内主机的主机标识是不同的,不同网段内主机的主机标识是可以相同的。
    在这里插入图片描述

    • 不同的子网其实就是把网络号相同的主机放到一起。
    • 如果在子网中新增一台主机,则这台主机的网络号和这个子网的网络号一致,但是主机号必须不能和子网中的其他主机重复。

    DHCP协议

    实际手动管理IP地址是一个非常麻烦的事情,当子网中新增主机时需要给其分配一个IP地址,当子网当中有主机断开网络时又需要将其IP地址进行回收,便于分配给后续新增的主机使用。

    • 因此对于IP地址的分配和回收一般不会手动进行,而是采用DHCP(Dynamic Host Configuration Protocol,动态主机配置协议)技术。
    • DHCP通常被应用在大型的局域网环境中,其主要作用就是集中地址管理、分配IP地址,使网络环境中的主机动态获得IP地址、Gateway地址、DNS服务器地址等信息,并能够提升地址的使用率。
    • DHCP是一个基于UDP的应用层协议,一般的路由器都带有DHCP功能,因此路由器也可以看作一个DHCP服务器。

    当我们连接WiFi时需要输入密码,本质就是因为路由器需要验证你的账号和密码,如果验证通过,那么路由器就会给你动态分配了一个IP地址,然后你就可以基于这个IP地址进行各种上网动作了。

    先找目标网络,再找目标主机

    当IP要将数据跨网络从一台主机发送到另一台主机时,其实不是直接将数据发送到了目标主机,而是先将数据发送到目标主机所在的网络,然后再将数据发送到目标主机。

    因此数据在路由时的第一目的并不是找到目标主机,而是找到目标网络所在的网络,然后再在目标网络当中找到目标主机。

    数据路由时之所以不一开始就以找目标主机为目的,因为这样效率太低了。

    • 找主机的过程本质是排除的过程,如果一开始就以找目标主机为目的,那么在查找的过程中一次只能排除一个主机。
    • 而如果一开始先以找目标网络为目的,那么在查找过程中就能一次排除大量和目标主机不在同一网段的主机,这样就可以大大提高检索的效率。

    因此,为了提高数据路由的效率,我们对网络进行了网段划分。

    网段划分

    过去曾经提出一种划分网络号和主机号的方案,就是把所有IP地址分为五类,如下图所示:
    在这里插入图片描述
    因此,各类IP地址的取值范围如下:

    • A类:0.0.0.0到127.255.255.255。
    • B类:128.0.0.0到191.255.255.255。
    • C类:192.0.0.0到223.255.255.255。
    • D类:224.0.0.0到239.255.255.255。
    • E类:240.0.0.0到247.255.255.255。

    当要判断一个IP地址是属于哪一类时,只需要遍历IP地址的前五个比特位,第几个比特位最先出现0值,那么这个IP地址对应就属于A、B、C、D、E类地址。

    子网划分

    但随着网络的飞速发展,这种划分方案的局限性很快就显现出来了。

    • 比如一些学校、公司、实验室等组织想要申请自己的局域网,由于A类地址的网络号只占7个比特位,因此A类地址可申请的网络只有 2 7 2^7 27个,于是大多数组织都选择申请B类地址。
    • 由于B类地址的主机号占16个比特位,因此理论上一个B类网络当中允许有65536台主机。
    • 但实际网络架设中,一般不会存在一个局域网当中有这么多主机的情况,也就意味着大量的IP地址实际都被浪费掉了。

    为了避免这种情况,于是又提出了新的划分方案,称为CIDR(Classless Interdomain Routing):

    • 在原有的五类网络的基础上继续进行子网划分,这也就意味着需要借用主机号当中的若干位来充当网络号,此时为了区分IP地址中的网络号和主机号,于是引入了子网掩码(subnet mask)的概念。
    • 每一个子网都有自己的子网掩码,子网掩码实际就是一个32位的正整数,通常用一串“0”来结尾。
    • 将IP地址与当前网络的子网掩码进行“按位与”操作,就能够得到当前所在网络的网络号。

    此时一个网络就被更细粒度的划分成了一个个更小的子网,通过不断的子网划分,子网中IP地址对应的主机号就越来越短,因此子网当中可用IP地址的个数也就越来越少,这也就避免了IP地址被大量浪费的情况。

    • 比如在某一子网中将IP地址的前24位作为网络号,那么该网络对应的子网掩码的32个比特位中的前24位就为1,剩下的8个比特位为0,将其用点分十机制表示就是255.255.255.0。
    • 假设该子网当中有一台主机对应的IP地址是192.168.128.10,那么将这个IP地址与该网络对应的子网掩码进行“按位与”操作后得到的就是192.168.128.0,这就是这个子网对应的网络号。
    • 实际在用子网掩码与子网当中主机的IP地址进行“按位与”操作时,本质就是保留了主机IP地址中前24个比特位的原貌,将剩下的8个比特位的值清0了而已,也就是将主机号清0了,所以“按位与”后的结果就是该网络对应的网络号。

    需要注意的是,子网划分不是只能进行一次,我们可以在划分出来的子网的基础上继续进行子网划分。

    因此一个数据在路由的时候,随着数据不断路由进入更小的子网,其网络号的位数是在不断变化的,准确来说其网络号的位数是在不断增加的,这也就意味着IP地址当中的主机号的位数在不断减少。最终当数据路由到达目标主机所在的网络时,就可以在该网络当中找到对应的目标主机并将数据交给该主机,此时该数据的路由也就结束了。

    特殊的IP地址

    并不是所有的IP地址都能够作为主机的IP地址,有些IP地址本身就是具有特殊用途的。

    • 将IP地址中的主机地址全部设为0,就成为了网络号,代表这个局域网。
    • 将IP地址中的主机地址全部设为1,就成为了广播地址,用于给同一个链路中相互连接的所有主机发送数据包。
    • 127.*的IP地址用于本机环回(loop back)测试,通常是127.0.0.1。

    也就是说,IP地址中主机号为全0的代表的是当前局域网的网络号,IP地址中主机号为全1的代表的是广播地址,这两个IP地址都是不能作为主机的IP地址的。因此在某个局域网中最多能存在的主机个数是 2 主机号位数 − 2 2^{主机号位数}-2 2主机号位数2

    本机环回基本原理

    本机环回会将数据贯穿网络协议栈,但最终并不会将数据发送到网络当中,相当于本机环回时不会将数据写到网卡上面。

    本机环回的目的就是将数据自顶向下贯穿协议栈,进行一次数据封装的过程的过程,然后再自底向上贯穿协议栈,进行一次数据的解包和分用,用于测试本地的网络功能是否正常。

    本机环回的基本原理:

    • 当数据到达IP层需要继续向下交付时,如果是环回程序,那么IP输出函数会将该数据放入到IP输入队列当中,然后再由IP输入函数读取上去。
    • 而IP输入函数将数据读取上去的本应该是链路层交付上来的数据,因此该数据后续就会被当作从网络中读取上来的数据看待,各层协议会对该数据依次进行解包和分用。
    • 如果不是环回程序的话,那么接下来就会判断该数据对应的目的IP地址是否为广播或多播地址,或者目的IP地址是否与本主机的IP地址相同,如果是则也会将该数据放入到IP输入队列当中,等待IP输入函数将其读走。
    • 只有判断程序不是环回程序,并且也不是广播或多播,或发给本主机的数据后,才会用ARP获取该数据目的主机的以太网地址并进行后续数据发送的操作。

    loopback设备:
    在这里插入图片描述

    IP地址的数量限制

    IP地址数量不足问题

    我们知道,IP地址(IPv4)是一个4字节32位的正整数,因此一共有 2 32 2^{32} 232个IP地址,也就是将近43亿个IP地址。但TCP/IP协议规定,每个主机都需要有一个IP地址。

    • 现在全世界人口已经有70多亿了,就算有一半的人没有智能手机,算下来也有30多亿台智能手机需要IP地址。
    • 随着科技的发展,我们使用的电脑、智能手表、智能冰箱、智能洗衣机等设备如果要入网也是需要IP地址的。
    • 另外,IP地址并不是按照主机台数来配置的,因此一个主机可能需要多个IP地址,更别谈还有很多组网的路由设备也需要IP地址,以及一些特殊的IP地址不能使用的问题。

    所以43亿个IP地址其实早就不够用了,因此才提出了CIDR的方案对已经划分好的五类网络继续进行子网划分,其目的就是为了减少IP地址的浪费,根本原因就是IP地址本来就不够了,所以不能够再浪费了。

    CIDR虽然在一定程度上缓解了IP地址不够用的问题,因为CIDR提高了IP地址的利用率,减少了浪费,但IP地址的绝对上限并没有增加。

    如何解决IP地址不足问题

    解决IP地址不足有以下几种方式:

    • 动态分配IP地址:只给接入网络的设备分配IP地址,因此同一个MAC地址的设备,每次接入互联网中,得到的IP地址不一定是相同的,避免了IP地址强绑定于某一台设备。
    • NAT技术:能够让不同局域网当中同时存在两个相同的IP地址,NAT技术不仅能解决IP地址不足的问题,而且还能够有效地避免来自网络外部的攻击,隐藏并保护网络内部的计算机。
    • IPv6:IPv6用16字节128位来表示一个IP地址,能够大大缓解IP地址不足的问题。但IPv6并不是IPv4的简单升级版,它们是互不相干的两个协议,彼此并不兼容,因此目前IPv6还没有普及。

    私网IP地址和公网IP地址

    私网IP地址的种类

    如果一个组织内部组建局域网,IP地址只用于局域网内的通信,而不直接连到Internet上,理论上使用任意的IP地址都可以,但是RFC 1918规定了用于组建局域网的私有IP地址。

    • 10.*,前8位是网络号,共16,777,216个地址。
    • 172.16.*到172.31.*,前12位是网络号,共1,048,576个地址。
    • 192.168.*,前16位是网络号,共65,536个地址。

    包含在这个范围中的,都称为私网IP,其余的则称为公网IP(或全局IP)。

    我们连接云服务器时,连接的这个IP地址就是云服务器的公网IP地址。
    在这里插入图片描述
    我们可以通过ifconfig命令来查看我们这台机器的私网IP,其中网络接口lo(loop)代表的是本地环回,而eth0代表的就是我这台机器的网络接口,可以看到我的私网IP地址是172.21.0.15。
    在这里插入图片描述
    需要注意的是,这里连接云服务器时的IP地址49.232.66.206,是云服务器的公网IP,由于我使用的是腾讯云,因此这里的172.21.0.15是我这个云服务器在腾讯内部的私网IP,可以看到这个IP正好在第二种私网IP范围内。

    此外,打开Windows当中的cmd窗口,通过ipconfig命令可以看到大量以192.168开头的私网IP。
    在这里插入图片描述

    我们为什么要给运营商交钱?

    我们享受的是互联网公司提供服务,但为什么需要向运营商交钱呢?

    • 实际网络通信的基础设施都是运营商搭建的,我们访问服务器的数据并不是直接发送到了对应的服务器,而是需要经过运营商建设的各种基站以及各种路由器,最终数据才能到达对应的服务器。
    • 因为运营商为我们提供了通信的基础设施,所以我们交网费实际就相当于购买入网许可一样。
    • 没有运营商提供的这些基础设施,就不会诞生所谓的互联网公司,因为互联网公司是诞生在网络通信基础之上的。

    也就是说,用户上网的数据首先必须经过运营商的相关网络设备,然后才能发送到互联网公司对应的服务器。因此所谓的网段划分、子网划分等工作实际都是运营商做的。

    数据是如何发送到服务器的

    路由器是连接两个或多个网络的硬件设备,在路由器上有两种网络接口,分别是LAN口和WAN口:

    • LAN口(Local Area Network):表示连接本地网络的端口,主要与家庭网络中的交换机、集线器或PC相连。
    • WAN口(Wide Area Network):表示连接广域网的端口,一般指互联网。

    我们将LAN口的IP地址叫做LAN口IP,也叫做子网IP,将WAN口的IP地址叫做WAN口IPO,也叫做外网IP。

    我们使用的电脑、家用路由器、运营商路由器、广域网以及我们要访问的服务器之间的关系大致如下:
    在这里插入图片描述

    • 不同的路由器,子网IP其实都是一样的(通常都是192.168.1.1),子网内的主机IP地址不能重复,但是子网之间的IP地址就可以重复了。
    • 每一个家用路由器,其实又作为运营商路由器的子网中的一个节点,这样的运营商路由器可能会有很多级,最外层的运营商路由器的WAN口IP就是一个公网IP了。
    • 如果希望我们自己实现的服务器程序,能够在公网上被访问到,就需要把程序部署在一台具有外网IP的服务器上,这样的服务器可以在阿里云/腾讯云上进行购买。

    由于私网IP不能出现在公网当中,因此子网内的主机在和外网进行通信时,路由器会不断将数据包IP首部中的源IP地址替换成路由器的WAN口IP,这样逐级替换,最终数据包中的源IP地址成为一个公网IP,这种技术成为NAT(Network Address Translation,网络地址转换)。

    为什么私网IP不能出现在公网当中?

    • 不同的局域网中主机的IP地址可能是相同的,所以私网IP无法唯一标识一台主机,因此不能让私网IP出现在公网上,因为IP地址要能唯一标识公网上的一台主机。
    • 但由于IP地址不足的原因,我们不能让主机直接使用公网IP而让主机使用私网IP,因为私网IP可以重复也就意味着我们可以在不同的局域网使用相同的IP地址,缓解了IP的不足。
    • 此外,我们不能直接使用公网IP还有一个原因就是,因为我们的数据包必须要经过运营商的路由器,如果我们发送的数据直接到了公网,那也就意味着我们再也不用交网费了,这是不现实的。

    两个局域网当中的主机不能不跨公网进行通信

    • 两个局域网当中的主机理论上是不能不跨公网进行通信的,因为一个主机要将数据发送给另一台主机的前提是得先知道另一台主机的IP地址。
    • 即便现在这个主机知道了另一台主机的IP地址,但有可能这两台主机的IP地址是一样的,因为它们的IP地址都是私网IP地址。
    • 当这一台主机发送数据时将目的IP地址填成和自己相同的IP地址,操作系统就会认为这个数据就是要发给自己的,而不会向外进行发送了。

    所以数据要从一个局域网发送到另一个局域网,如果不经过公网是基本上不可能的。我们在和别人聊天的时候,也不是直接将数据从一个局域网直接发送到了另一个局域网,而是先将数据经过公网发送到了服务器,然后再由服务器将数据经过公网转发到了另一个局域网。

    但实际确实存在一些技术能够使数据包在发送过程中不进行公网IP的替换,而将数据正确送到目标主机,这种技术叫做内网穿透,也叫做NAT穿透。

    路由

    数据“问路”的过程

    数据在路由的过程中,实际就是一跳一跳(Hop by Hop)“问路”的过程。所谓“一跳”就是数据链路层中的一个区间,具体在以太网中指从源MAC地址到目的MAC地址之间的帧传输区间。
    在这里插入图片描述
    IP数据包的传输过程中会遇到很多路由器,这些路由器会帮助数据包进行路由转发,每当数据包遇到一个路由器后,对应路由器都会查看该数据的目的IP地址,并告知该数据下一跳应该往哪跳。

    路由器的查找结果可能有以下三种:

    • 路由器经过路由表查询后,得知该数据下一跳应该跳到哪一个子网。
    • 路由器经过路由表查询后,没有发现匹配的子网,此时路由器会将该数据转发给默认路由。
    • 路由器经过路由表查询后,得知该数据的目标网络就是当前所在的网络,此时路由器就会将该数据转给当前网络中对应的主机。

    路由表查询的具体过程

    每个路由器内部会维护一个路由表,我们可以通过route命令查看云服务器上对应的路由表。
    在这里插入图片描述

    • Destination代表的是目的网络地址。
    • Gateway代表的是下一跳地址。
    • Genmask代表的是子网掩码。
    • Flags中,U标志表示此条目有效(可以禁用某些条目)G标志表示此条目的下一跳地址是某个路由器的地址,没有G标志的条目表示目的网络地址是与本机接口直接相连的网络,不必经路由器转发。
    • Iface代表的是发送接口。

    当IP数据包到达路由器时,路由器就会用该数据的目的IP地址,依次与路由表中的子网掩码 Genmask进行“按位与”操作,然后将结果与子网掩码对应的目的网络地址Destination进行比对,如果匹配则说明该数据包下一跳就应该跳去这个子网,此时就会将该数据包通过对应的发送接口Iface发出。

    如果将该数据包的目的IP地址与子网掩码进行“按位与”后,没有找到匹配的目的网络地址,此时路由器就会将这个数据包发送到默认路由,也就是路由表中目标网络地址中的default。可以看到默认路由对应的FlagsUG,实际就是将该数据转给了另一台路由器,让该数据在另一台路由器继续进行路由。

    数据包不断经过路由器路由后,最终就能到达目标主机所在的目标网络,此时就不再根据该数据包目的IP地址当中的网络号进行路由了,而是根据目的IP地址当中的主机号进行路由,最终根据该数据包对应的主机号就能将数据发送给目标主机了。

    路由表生成算法

    路由可分为静态路由和动态路由:

    • 静态路由:是指由网络管理员手工配置路由信息。
    • 动态路由:是指路由器能够通过算法自动建立自己的路由表,并且能够根据实际情况进行调整。

    路由表相关生成算法:距离向量算法、LS算法、Dijkstra算法等。

    展开全文
  • 网络层协议协议介绍

    千次阅读 2022-04-23 00:10:47
    网络层协议协议介绍 文章目录网络层协议协议介绍一、网络层的功能二、IP数据包的格式三、ICMP协议(internet控制报文协议)3.1icmp协议3.2ICMP协议的封装3.3 Ping命令的用法四、ARP协议介绍4.1什么是ARP协议4.2ARP协议...

    网络层协议协议介绍

    一、网络层的功能

    1、定义了基于IP协议的逻辑地址

    2、连接不同的媒介类型

    3、选择数据通过网络的最佳路径

    二、IP数据包的格式

    2.1 协议字段
    在这里插入图片描述

    版本:指IP协议版本,我们目前使用的就是IPv4,表示为0100

    首部长度:IP数据包的包头长度

    优先级与服务类型:该字段用于表示数据包的优先级和服务类型。通过数据包中划分一定的优先级,用于实现,QoS(服务质量)的要求。注:定义IP数据包是否优先传送。比方说双11,淘宝肯定优先推送热销产品,例如衣服,而冷门的东西如铁铲,就会降低优先级,主要因为当天访问量太大。

    总长度:定义IP数据包的总长度,最长为65535字节,包括包头和数据。

    标识符:该字段用于表示IP数据包的标识符。当IP对上层数据进行分片时,它将给所有的分片分配一组编号,然后将这些编号放入标识符字段中,保证分片不会被错误地重组。标识符字段用于标志一个数据包,以便接收节点可以重组被分片的数据包。

    标志:和标识符一起传递,指示不可以被分片或者最后一个分片是否发出

    段偏移量:在一个分片序列中如何将各分片连接起来,按什么顺序连接起来

    TTL:可以防止一个数据包在网络中无限循环的转发下去,每经过一个路由器-1,当TTL的值为0时,该数据包将被丢弃

    协议号:封装上层哪个协议,ICMP:1 TCP:6 UDP:17

    首部校验和:这个字段只检验数据的首部,不包括数据部分。这是因为数据报每经过一次路由器,都要重新计算一下首部校验和

    源地址:源IP地址,表示发送端的IP地址

    目标地址:目标IP地址,表示收端的IP地址

    可选项:选项字段根据实际情况课变长,可以和IP一起使用的选项有多个。例如可以输入创建该数据包的时间等。

    三、ICMP协议(internet控制报文协议)

    3.1icmp协议

    CMP是一个“错误侦测与回馈机制”

    通过IP数据包封装的

    用来发送错误和控制消息

    3.2ICMP协议的封装

    ICMP协议属于网络层协议

    ICMP数据的封装

    2

    3.3 Ping命令的用法

    -t 在Windows 操作系统中,默认情况下发送4个ping包,如果在命令后面加上参数“-t”,系统将会一直不停ping下去

    -a 显示主机名

    -l 一般情况下,ping包的大小为32字节,有时为了检测大数据包的通过情况,可以使用参数改变ping包的大小,在linux系统下为-s

    -n指定发送包的个数 -c

    -s指定源IP去ping -i

    四、ARP协议介绍

    4.1什么是ARP协议

    将一个已知的IP地址解析成MAC地址

    4.2ARP协议的作用

    数据传输从网络层到数据链路层的封装过程中,由于数据链路层只能识别MAC地址,就需要ARP协议将IP地址解析为MAC地址,从而保障数据的正常传输

    4.3ARP工作原理

    1、PC1想发送数据给PC2,会先检查自己的ARP缓存表。

    2、如果发现要查找的MAC地址不在表中,就会发送一个ARP请求广播,用于发现目的地的MAC地址。ARP请求消息中包括PC1的IP地址和MAC地址以及PC2的IP地址和目的MA地址

    3、交换机收到广播后做泛洪处理,除PC1外所有主机收到ARP请求消息,PC2以及单播方式发送ARP应答,并在自己的ARP表中缓存PC1的IP地址和MAC地址的对应关系,而其他主机则丢弃这个ARP请求消息。

    4、PC1在自己的ARP表中添加PC2的IP地址和MAC地址的对应关系,以单播方式与PC2通信。

    存PC1的IP地址和MAC地址的对应关系,而其他主机则丢弃这个ARP请求消息。

    4、PC1在自己的ARP表中添加PC2的IP地址和MAC地址的对应关系,以单播方式与PC2通信。

    展开全文
  • 网络层协议介绍

    千次阅读 2022-03-09 11:25:30
    文章目录一、网络层的功能二、IP数据包格式三、ICMP协议(Internet控制报文协议)1、ICMP的作用和功能2、ICMP协议的封装3、ping命令和tracert命令的使用四、ARP协议1、什么是ARP协议?2、ARP工作原理3、ARP攻击原理 一...

    一、网络层的功能

    • 定义了基于IP协议的逻辑地址
    • 连接不同的媒介类型
    • 选择数据通过网络的最佳路径

    二、IP数据包格式

    在这里插入图片描述

    1.版本号(4bit):指IP协议版本。并且通信双方使用的版本必须一致,目前我们使用的IPv4,表示0100
    2.首部长度(4):IP数据包的包头长度
    3.优先级与服务类型(8):该字段用于表示数据包的优先级和服务类型。通过在数据包中划分一定的优先级,用于实现Qos(服务质量)的要求。
    注:定义IP数据包是否优先传送
    4.总长度(16):定义IP数据包的总长度,最长为65535字节,包括包头和数据。
    5.标识符(16):该字段用于表示IP数据包的标识符。当IP对上层数据进行分片时,它将给所有的分片分配一组标号,然后将这些编号放入标识符字段中,保证分片不会被错误地重组。标识符字段用于标志一个数据包,以便接收节点可以重组被分片的数据包。
    6.标志(3):和标识符一起传递,指传输数据是否需要分片。
    7.段偏移量(13):在一个分片序列中如何将各分片连接起来,按什么顺序连接起来。
    8.TTL生命周期(8):可以防止一个数据包在网络中无限循环的转发下去,每经过一个路由器-1, 当TTL的值位0时,该数据包将被丢弃。
    9.协议号(8):封装的上层那个协议,ICMP:1 TCP:6 UDP:17
    10.首部校验和(16):这个字段只检验数据报的首部,不包括数据部分。这是因为数据报没经过 一次路由器,都要重新计算一下首部校验和(因为一些字段如生存时间、标志、片偏移等可能发生的变化)。
    11.源地址(32):源IP地址,表示发送端的IP地址
    12.目标地址(32):目标IP地址,表示接收端的IP地址
    13.可选项:选项字段根据实际情况可变长,可以和IP一起使用的选项有多个。例如:可以输入创建该数据包的时间等。在选项之后,就是上层数据。
    14.数据

    三、ICMP协议(Internet控制报文协议)

    1、ICMP的作用和功能

    • ICMP是一个“错误侦测与回馈机制”
    • 通过IP数据包封装的
    • 用来发送错误与控制信息

    ICMP协议功能:作为网络管理员,必须知道网络设备之间的连接状况,因此就需要有一种机制来侦测或通知网络设备之间可能发生的各种各样的情况,这就是ICMP协议的作用。ICMP协议(Internet Control Message Protocol)的全称是“Internet控制消息协议”,主要用于在IP网络中发送控制消息,提供可能发生通信环境中的各种问题的反馈。通过这些反馈信息,管理员就可以对所发生的问题作出判断,然后采取适当的措施去解决。

    ICMP报文有两种类型:差错报告报文查询报文

    2、ICMP协议的封装

    • ICMP协议属于网络层协议
    • ICMP数据的封装过程
      在这里插入图片描述

    3、ping命令和tracert命令的使用

    (1)ping命令

    ping命令是用来检查网络连通性的
    解析:当我们ping一台主机时,本地计算机发出的就是一个典型的ICMP数据包,用来测试两台主机是否能够顺利连通。ping命令能够检测两台设备之间的双向连通性,即数据包能够到达对端,并且能够返回。

    (2)ping命令不通的几种情况

    1.当主机有一个默认网关时,如果他ping其他网段的地址,到不了的话,显示的是request timeout(此时他把icmp包发给网关,至于后面的事他就不管,如果没有包回应,就显示request timeout)。
    2.当一个主机没有默认网关时或者配置了网关但是和网关不通时,如果他ping其他网段的的地址显 示的是Destination host unreachable(此时他发送arp请求包请求网关的mac地址)。
    3.当一个路由器ping他路由表中没有的地址时,显示的是request timeout(此时不发任何包)。
    4.当路由器ping一个路由表中存在地址时,如果没有回应,则显示的也是request timeout(此时发送arp请求包,请求目标ip的mac地址)。

    (3)ping命令的用法
    -t:在Windows操作系统中,默认情况下发送4个ping包,如果在ping命令后面加上参数"-t",系统将会一直不停地ping下去
    -a:显示主机名
    -l:一般情况下,ping包的大小为32字节,有时为了检测大数据包的通过情况,可以使用参数改变ping包的大小(#在linux系统下为-s)
    -n:指定发送包的个数
    -s:指定源IP去ping

    (4)tracert命令

    tracert命令作用是追踪
    在命令行中输入"tracert"并在后面加入一个IP地址,可以查询从本机到该IP地址所在的电脑要经过的路由器及其IP地址。

    四、ARP协议

    1、什么是ARP协议?

    • Address Resolution Protocol,地址解析协议
    • 将一个已知的IP地址解析成MAC地址

    2、ARP工作原理

    • PC1发送数据给PC2,查看缓存没有PC2的MAC地址
    • PC1发送ARP请求消息(广播)
    • 所有主机收到ARP请求消息
      • PC2回复ARP应答(单播)
      • 其他主机丢弃
    • PC1将PC2的MAC地址保存到缓存中,发送数据

    解析:PC1发送数据给PC2,查看ARP缓存表中有没有缓存PC2的MAC地址。如果PC1缓存中没有找到PC2的MAC地址,ARP以帧的方式进行广播,帧中包括原主机的IP地址和MAC地址,然后本地所有主机都会接收到PC1的ARP请求,并且检查是否与自己的IP地址相匹配。如果不匹配,则丢弃数据。PC2确定ARP请求中得到的IP地址和自己的IP地址匹配,则将PC1的IP地址和MAC地址记录在自己的ARP缓存表中。PC2会将包含MAC地址的ARP做一个回复消息,直接发送给PC1(数据链路层的单播)。当PC1收到PC2的信息之后,会将PC2的IP地址和MAC地址添加到自己的ARP缓存表中。本机缓存表是有生命周期的,默认是120s。120s内没有操作的话,后面会重复上述操作。

    3、ARP攻击原理

    在这里插入图片描述
    ARP攻击发送的是ARP应答,但是ARP应答中的MAC地址为虚假地址,所以在其他主机想要进行通信时,会将目的MAC地址设置成此虚假MAC地址导致无法正常通信。
    例如:如果希望被攻击主机无法访问互联网,就需要对网关发送或被攻击主机发送虚假ARP应答。当网关接收到虚假的ARP应答更新ARP条目后,如果网关再发送数据给PC1时,就会发送到虚假的MAC地址导致通信故障。

    4、ARP欺骗原理

    在这里插入图片描述

    ARP欺骗的原理和ARP攻击基本相同,但是效果不一样。ARP攻击最终的结果是导致网络中断,而ARP欺骗的最终结果是使得流量通过自身达到监控或控制的目的。

    总结

    1.IP数据包格式重点理解各字段的含义

    2.ICMP用来发送错误和控制信息

    3.ARP协议用来实现IP到MAC地址的解析

    4.ARP协议通过广播查询目标主机MAC地址

    5.ARP攻击是通过伪造ARP应答进行欺骗攻击

    展开全文
  • 网络层协议——ICMP协议

    千次阅读 2022-01-26 17:29:41
    1、ICMP协议是TCP/IP协议栈中的网络层的一个协议,ICMP是(Internet Control Message Protocol) Internet控制报文协议,用于在IP主机、路由器之间传递控制消息。控制消息是指网络通不通、主机是否可达、路由是否可用...
  • 网络层协议详解(主要是IP协议、ICMP协议和ARP协议) 一、网络层的功能 定义了基于IP协议的逻辑地址; 连接不同的媒介类型; 选择数据通过网络的最佳路径。 二、IP数据包格式 第一层 版本:该字段包含的是IP的版本...
  • 网络层协议总结

    千次阅读 2020-04-04 16:52:00
    网络层,说简单点,就是在复杂的网络环境中确定一个合适的路径。 有四个协议:ARP协议,IP协议,ICMP协议,IGMP协议。 IP协议 1、概念(协议内容即设定ip地址,实现数据传输) IP协议是TCP/IP协议簇中的核心协议,...
  • 网络层协议和传输层协议

    千次阅读 2017-04-27 10:42:30
    应用层协议: 1、远程登录协议(Telnet) 2、文件传输协议(FTP) 3、超文本传输协议(HTTP) 4、域名服务协议(DNS) 5、简单邮件传输协议(SMTP) 6、邮局协议(POP3)   其中,从网络上...
  • RIP 协议到底是网络层协议,还是应用层的协议? Rip protocol !我一直没想明白这个纠结的问题~ 1 条评论 分享 按时间排序按票数排序 5 个回答 赞同0 反对,不会显示你的姓名 止雨 资深...
  • 常见的网络层协议

    千次阅读 2019-11-05 02:35:07
    常见的网络层协议 2019年10月13日 1:16 常见的网络层协议 ICMP是TCP/IP协议簇的核心协议之一,它用于在IP网络设备之间发送控制报文,传递差错、 控制、查询等信息。 请注意:ICMP只是确定了网络层以下的连通性,至于...
  • ISO15765-2 CAN 网络层协议介绍

    万次阅读 2019-01-31 14:57:03
    ISO15765是基于CAN网络的诊断协议,其中ISO15765-2描述的是网络层协议。什么是网络层协议?其实简单来说就是提供数据传输的方法。网络层一般提供2种数据传输方法,1是单包数据传输,2是多包数据传输。网络层选择传输...
  • 网络层的主要功能,网络层协议,网络层设备。
  • 网络层和传输层各种协议

    千次阅读 2021-08-18 20:55:18
    网络层 ICMP协议 作用:用来测试网络连通性并给予一定的反馈 定义:Internet控制报文协议,是错误侦测与回馈机制 组成:ping tracert 协议号 PC命令: TCP——6 UDP——17 ping -t持续不断的ping,查看有...
  • 原文链接:网络层次划分及网络协议 1 OSI七模型、TCP/IP四模型、TCP/IP五模型 不管是OSI七模型还是TCP/IP的四、五模型,每一中都要自己的专属协议,完成自己相应的工作以及与上下层级之间进行沟通。 ...
  • 层协议(5层) 物理层、数据链路层、网络层、传输层、应用层 五层结构的概述 应用层:通过应用进程间的交互来完成特定网络应用 数据:报文 协议:HTTP, SMTP(邮件), FTP(文件传送) 运输层:向两个主机进程之间的...
  • 应用层协议: 1、远程登录协议(Telnet) 2、文件传输协议(FTP) 3、超文本传输协议(HTTP) 4、域名服务协议(DNS) 5、简单邮件传输协议(SMTP) 6、邮局协议(POP3)   其中,从网络上...
  • 五层网络协议,各层功能,各层协议

    万次阅读 多人点赞 2018-05-11 11:21:01
    一、OSI七层模型OSI七层协议模型主要是:应用层(Application)、表示层(Presentation)、会话层(Session)、传输层(Transport)、网络层(Network)、数据链路层(Data Link)、物理层(Physical)。三、五层...
  • 计算机网络层协议及其作用

    千次阅读 2018-09-29 22:50:11
    层协议  1. 数据链路层  1.1 作用   (1) 实现网卡接口的网络驱动,以处理数据在以太网线等物理媒介上的传输   (2) 网络驱动程序隐藏了不同物理网络的不同电气特性,为上层协议提供一个统一的接口   1.2 ...
  • 网络层协议结构分析图

    千次阅读 2022-04-13 23:39:21
    文章目录前言一、网络层协议结构图详解二、TCP和UDP的区别1.TCP(打电话)1.连接稳定2.客户端,服务端3. 传输完成,释放连接,效率低,4. 三次连接四次挥手1.三次连接2.四次挥手2.UDP(发短信)1.连接不稳定2....
  • 网络7层协议简述

    万次阅读 多人点赞 2019-09-16 11:15:47
    互联网的本质是一系列的网络协议,这个协议就叫做OSI协议。按照功能不同分工不同,认为的分为七。实际上这七是并不存在的,也就是说没有这些概念,而我们今天提到的七概念,只是人为的划分而已。目的只是为了...
  • 层网络协议详细解释

    千次阅读 2021-05-15 16:15:20
    1.七层网络协议 应用:为应用程序提供服务并规定应用程序中通信相关的细节;包括的协议如下: ①:超文本传输协议HTTP:这是一种最基本的客户机/服务器的访问协议;浏览器向服务器发送请求, 而服务器回应相应的...
  • 计算机网络功能及常用协议

    千次阅读 2022-04-06 16:46:22
    3.网络层:将网络层协议数据单元(分组)从源端传到目的端,为分组交换网上的不同主机提供通信服务。对分组进行路由选择,并实现流量控制、阻塞控制、差错控制和国际互联等功能。传输单位是数据报。 常用协议: ...
  • TCP/IP 协议族可以分为 4 层,分别是应用层、传输层、网络层和数据链路层。 1)应用层:应用服务之间的通信协议规范,如 FTP、DNS 和 HTTP 都在这层。 2)传输层:传输层对应用层传输两台计算机之间的数据。传输层...
  • 网络协议划分: 物理层:以太网 · 调制解调器 · 电力线通信(PLC) · SONET/SDH · G.709 · 光导纤维 · 同轴电缆 · 双绞线等。 数据链路层:Wi-Fi(IEEE 802.11) · WiMAX...网络层协议:IP (IPv4 · IPv6) · IC
  • 本实验通过执行traceroute程序,探究IP协议,实现对IP数据报发送和接收流程的追踪,研究分析 IP 首部各字段中的内容,了解 IP 分片的细节;分析了 Ethernet 协议以及 ARP协议
  • 常见的网络协议

    千次阅读 2022-03-16 21:46:42
    OSI七层模型:应用层 会话层 接收层 传输层 网络层 数据链路层 物理层 2.TCP/IP四层模型 应用层: HTTP:超文本传输协议(html,图片,视频,音频) FTP:文件传输协议 SMTP:简单邮件传输协议 POP3:邮局协议...
  • 网络层协议模型

    千次阅读 2022-03-14 15:16:42
    OSI参考模型 物理层:解决硬件之间通信的问题,常见的物理媒介有光纤、电缆、中继器等。它主要定义物理设备标准,...物理层协议:rs-232c(RS-232C标准(协议)的全称是EIA-RS-232C标准,定义是“数据终端设备(DT...
  • 网络层协议

    千次阅读 2022-04-02 23:06:35
    网络互联模型 请求过程 网络分层

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 683,360
精华内容 273,344
关键字:

网络层协议

友情链接: yiv.zip