网络层协议

Posted 正在迷途

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了网络层协议相关的知识,希望对你有一定的参考价值。

一、网络层

1.什么是网络层

网络层是​OSI参考模型​中的第三层,介于​传输层​​数据链路层​之间,它在数据链路层提供的两个相邻端点之间的数据帧的传送功能上,进一步管理网络中的​数据通信​,将数据设法从源端经过若干个中间​节点​传送到目的端,从而向传输层提供最基本的端到端的​数据传送​服务。

2.网络层功能

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

二、IP数据包

1.什么是数据包

TCP/IP协议定义了一个在​因特网上传输的包,称为IP数据包,由首部和数据两部分​组成。首部的前一部分是固定长度,共20字节,是所有IP数据报必须具有的。在首部的固定部分的后面是一些可选字段,其长度是可变的。首部中的源地址和目的地址都是IP协议地址。

2.IP数据包格式

  • 协定字段

  • 版本(Version):该字段包含的是IP的版本号,,4bit。目前IP的版本为4(即IPv4)。
  • 首部长度(Header Longth):该字段用于表示IP数据包头长度,4bit。IP数据包头最短为20字节,但其长度是可变的,具体长度取决于可选项字段的长度。
  • 优先级与服务类型(Priority&Type of Sorvice):​该字段用于表示数据包的优先级和服务类型,8bit。通过在数据包中划分一定的优先级,用于实现Qos(服务质量)的要求。
  • 总长度(Total Length):该字段用以指示整个IP数据包的长度,16bit。最长为65535字节,包括包头和数据。​
  • 标识符(Identification):该字段用于表示IP数据包的标识符,16bit。当IP对上层数据进行分片时,它将给所有的分片分配同一组编号,然后将这些编号放入标识符字段中,保证分片不会被错误重组。

  路由器将一个包拆分后,所有拆分开的小包被标记相同的值,以便目的端设备能够区分哪个包属于被拆分开的包的一部分。​

  • 标志​(Flags):标志字段,3bit。对当前的包不能进行分片(当该包从一个以太网发送到另一个以太网时),或当一个包被分片后用以指示在一系列的分片中,最后一个分片是否已发出。
  • 段偏移量(Fragment Offset):该字段用于表示段偏移量,13bit。段偏移量中包含的信息是指在一个分片序列中如何将个分片重新连接起来。
  • TTL(Time to Live)​:该字段用于表示IP数据包的生命周期,8bit。一个数据包每经过一个路由器,TTL将减去1。当TTL的值为0时,该数据将被丢弃。可以防止一个数据包在网络中无限的转发下去。
  • 协议号(Protocol):协议字段,8bit。该字段用以指示在IP数据包中封装的是哪一个协议,是TCP还是UDP,TCP的协议号为6,UDP的协议号为17​.
  • 首部校验和(Header Checksum):该字段用于表示校验和,16bit。接收方和网关用于校验数据有没有被改动过。
  • 源IP地址(Source IP Address):该字段用于表示数据包的源地址,32bit。
  • 目的IP地址(Destination IP Address):该字段用于表示数据包的目的地址,32bit。
  • 可选项(Options):可选项字段根据实际情况可变长,可以和IP一起使用的的选项有多个。例如,可以输入创建该数据包的时间等。在可选项之后就是上层数据。​

3.1 ICMP协议(Internet控制报文协议)

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

3.2 ICMP协议的封装

  • ICMP协议属于网络层协议
  • ICMP协议的封装的过程

三、Ping命令

1.什么是ping

ping (Packet Internet Groper)是一种​因特网包探索器,用于测试网络连接量的程序   。Ping是工作在​ TCP/IP网络体系结构中​应用层的一个服务命令, 主要是向特定的目的主机发送​ ICMP(Internet Control Message Protocol 因特网报文控制协议)​Echo 请求报文,测试目的站是否可达及了解其有关状态

  • ping命令的基本格式为

  • ping命令的返回信息​

2.ping的命令常用选项

-t 参数会一直不停的执行ping

-a 参数可以显示主机名称    

-l 参数可以设定ping包的大小         在Linux系统下为:-s

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

–S 指定源IP去ping                                                    -I


跟踪路由路径命令:

WIN: tracert IP/域名

Linux: traceroute IP/域名

四、广播与广播域

  • 广播:将广播地址作为目的地址的数据帧
  • 广播域:网络中能接收到同一个广播的所有节点的集合
  • 广播地址:FF-FF-FF-FF-FF-FF

五、ARP

1.什么是ARP

ARP (Address Resolution Protocol) 是个地址解析协议。将一个已知的IP地址解析成MAC地址。

2.IP地址解析为MAC地址

  • PC1发送数据给PC2,查看缓存有没有PC2的MAC地址

  • PC1发送ARP请求消息(广播)

 1.PC2回复ARP应答(单播)

 2.其他主机丢弃


  • PC1将PC2的MAC地址保存到缓存中,发送数据

PC1想发送数据给PC2,会先检查自己的ARP缓存表,如果发现要查找的MAC地址不在缓存表中,就会发送一个ARP请求广播,用于发现目的地的MAC地址。ARP请求消息中包括PC1的IP地址和MAC地址以及PC2的IP地址和目的MAC地址(此时为广播MAC地址FF-FF-FF-FF-FF-FF)。交换机收到广播后做泛洪处理,除PC1外所有主机收到ARP请求消息。PC2确认IP地址接受信号,在自己的ARP缓存表中记录PC1的IP地址和 MAC地址,然后以单播方式向PC1应答,而其他主机则丢弃这个ARP请求消息PC1在自己的 ARP表中添加PC2的IP地址和 MAC地址的对应关系,以单播方式与PC2通信。

3.Windows系统中ARP命令

arp -a:查看ARP缓存表

arp -d [IP]:清除ARP缓存

arp -s IP MAC :ARP静态绑定

如提示ARP项添加失败,解决方案:

1、用管理员模式:电脑左下角“开始”按钮右键,点击“Windows PowerShell(管理员)(A)” 或者 进入C盘windows\\system32文件夹找到cmd.exe,右键“以管理员身份运行” 再执行arp -s命令

2、 (1)netsh interface ipv4 show neighbors 或者netsh i i show in <查看网卡接口序号/Idx>

(2)netsh interface ipv4 set neighbors <接口序号> <IP> <MAC>

 解除静态绑定

netsh -c i i delete neighbors \'Idx\'

动态学习到的ARP的老化时间是120s,并且静态绑定的ARP条目在计算机关机或重启后会消失。

4.ARP攻击原理

  • 欺骗其他计算机
  • 欺骗被攻击计算机 网关

1.ARP欺骗网关

2.ARP欺骗主机























以上是关于网络层协议的主要内容,如果未能解决你的问题,请参考以下文章

第7章 网络层协议_网络层首部

刷题面筋-网络-各层网络协议

基本的网络协议

网络基础之网络协议

计算机网络-网络层-内部网关协议RIP

Linux 网络基础--网络层+数据链路层