1.网络层功能
- 定义了基于IP协议的逻辑地址,即IP地址。
- 连接了不同的网段。
- 选择数据通过网络的最佳路径,完成逻辑地址寻址。
2.IP数据报的格式
IP数据报的格式能够说明IP协议都具有什么功能。在TCP/IP的标准中,各种数据格式常常以32位(4字节)为单位来描述。
从上图可以看出,一个IP数据报由头部和数据两部分组成。 首部的前一部分是固定长度,共20字节;是所有IP数据报必须具有的。 首部的固定部分的后面是一些可选字段,其长度是可变的。
各字段的意义:
1. 版本 占4位,指IP协议的版本。通信双方使用的IP协议的版本必须一致。目前广泛使用的IP协议版本号为4(即IPv4)。
2. 首部长度 占4位,可表示的最大十进制数值是15。请注意,首部长度字段所表示数的单位是32位字(1个32位字长是4字节)。因为IP首部的固定长度是20字节,因此首部长度字段的最小值是5(即二进制表示的首部长度是0101)。而当首部长度为最大值1111时(即十进制数的15),就表明首部长度达到最大值15个32位字长,即60字节。当IP分组的首部长度不是4字节的整数倍时,必须利用最后的填充字段加以填充。因此IP数据报的数据部分永远在4字节的整数倍时开始,这样在实现IP协议时较为方便。首部长度限制为60字节的缺点是有时可能不够用。但这样做是希望用户尽量减少开销。最常用的首部长度是20字节(即首部长度为0101),这时不使用任何选项。
3. 区分服务 占8位,用来获得更好的服务。这个字段在旧标准中叫做服务类型,但实际上一直没有被使用过。1998年IETF把这个字段改名为区分服务DS(Differentiated Services)。只有在使用区分服务时,这个字段才起作用。在一般的情况下都不使用这个字段。
4.总长度 总长度指首部和数据之和的长度,单位为字节。总长度字段为16位,因此数据报的最大长度为 65535 字节(2^16 - 1),然而实际上传送这样长的数据报在现实中是极少遇到的。
5.标识 占16位,该字段用于表示IP数据包的标识符。当IP对上层数据进行分片时,它将给所有的分片分配一组编号,然后将这些编号放入标识符字段中,保证分片不会被错误地重组。标识符字段用于标志一个数据包,以便接收节点可以重组被分片的数据包。
6.标志 占3位,但目前只有两位有意义。 标志字段中的最低位记为MF(More Fragment)。MF = 1 即表示后边 还有分片 的数据报。MF= 0 表示这已是若干数据报片中的最后一个。 标志字段中间的一位记为DF(Don’t Fragment),意思是 不能分片。只有当DF= 0 时才允许分片。
7.片偏移 占13位,片偏移指出:较长的分组在分片后,某片在原分组中的相对位置。也就是说,相对于用户数据字段的起点,该片从何处开始。片偏移以8个字节为偏移单位。这就是说,每个分片的长度一定是(8字节64位)的整数倍。
8.生存时间TTL 占8位,生存时间的英文缩写是TTL(Time To Live),表明这是数据报在网络中的寿命。由发出数据报的源点设置这个字段。目的是防止无法交付的数据报无限制地在互联网中兜圈子(环路),因而白白消耗网络资源。最初的设计是以秒作为TTL值得单位,每经过一个路由器,就把TTL减去数据报在路由器所消耗的时间,若小于一秒,就减 1 ,直到TTL减为 0 时,就丢弃这个数据报。现在,TTL表示跳数,其最大值为255,每经过一个路由器,跳数就减 1 ,直到TTL值减为 0 ,路由器就会丢弃数据报。
9.协议 占8位,协议指出此数据报携带的数据是用于何种协议,以便使目的主机的IP层知道应该将数据部分上交给那个协议进行处理。
常用的一些协议和相应的协议字段值如下:
10.首部校验和 占16位,这个字段只检验数据报的首部,不包括数据部分。这是因为数据报美经过一次路由器,都要重新计算一下首部校验和(因为,一些字段如生存时间、标志、片偏移等可能发生变化)。
11.源地址 占32位,表示发送端的Ip地址。
12.目的地址 占32位,表示接收端的IP地址。
13.可变部分 选项字段根据实际情况可变长,可以和IP一起使用的选项有多个。例如,可以输入创建该数据包的时间等。
3.ICMP协议
为了更有效地转发IP数据报和提高交付成功的机会,在网络层使用了网际控制报文协议ICMP。ICMP允许主机或路由器报告差错情况和提供有关异常情况的报告。ICMP是互联网的标准协议,但ICMP不是高层协议(看起来好像是高层协议,因为ICMP报文是装在IP数据报中,作为其中的数据部分),而是IP层的协议。ICMP报文作为IP层数据报的数据,加上数据报的首部,组成IP数据报发送出去。
3.1 ICMP报文格式:
3.2 ICMP报文的种类
ICMP报文的种类有两种,即ICMP差错报告报文和ICMP询问报文。 ICMP报文的前4个字节是统一的格式,共有三个字段:类型、代码、校验和。接着的4个字节的内容与ICMP的类型有关。最后面是数据字段,其长度决定于ICMP的类型。
常见的ICMP报文类型:
四种差错报告报文:
1.终点不可达 当路由器或者主机不能交付数据报时就向源点发送终点不可达报文。
2.超时 当路由器收到TTL值为 0 的数据报时,除丢弃数据包外,还要向源点发送超时报文。
3.参数问题 当路由器或者目的主机收到的数据报的首部中有的字段的值不正确时,就丢弃该数据报,并向源点发送参数问题报文。
4.重定向 路由器把改变路由报文发给主机,让主机知道下次应该将数据报发送给另外的路由器。
两种询问报文:
1.回送请求和回答 ICMP回送请求报文是由主机或路由器向一个特定的目的主机发出的询问;收到此报文的主机必须给源主机或路由器发送ICMP回送回答报文;这种询问报文用来测试目的站是否可达以及了解其有关状态。
2.时间戳请求和回答 ICMP时间戳请求报文是请某台主机或路由器回答当前的日期和时间。在ICMP时间戳回答报文中有一个32位的字段,其中写入的整数代表从1900年1月1日起到当前时刻一共有多少秒。时间戳请求与回答可用于时钟同步和时间测量。
3.3 ICMP应用举例
3.3.1 Ping
ping(Packet InterNet Groper),分组网间探测。用来测试两台主机之间的连通性。
ping命令的可选项:
ping百度(我们既可以ping域名;也可以ping主机地址,即IP地址)
3.3.2 tracert
tracert命令用来跟踪一个分组从源点到终点的路径。
tracert命令可用选项:
我们可以追踪一下百度(tracert命令也是即可以tracert域名;也可以tracert主机地址)
4.ARP协议
ARP协议:地址解析协议(Address Resolution Protocol),是通过解析IP地址得到MAC地址的,是一个在网络协议包中极其重要的网络传输协议,它与网卡有着极其密切的关系,在TCP/IP分层结构中,把ARP划分为网络层,为什么呢,因为在网络层看来,源主机与目标主机是通过IP地址进行识别的,而所有的数据传输又依赖网卡底层硬件,即链路层,那么就需要将这些IP地址转换为链路层可以识别的东西,在所有的链路中都有着自己的一套寻址机制,如在以太网中使用MAC地址进行寻址,以标识不同的主机,那么就需要有一个协议将IP地址转换为MAC地址,由此就出现了ARP协议,所有ARP协议在网络层被应用,它是网络层与链路层连接的重要枢纽,每当有一个数据要发送的时候都需要在通过ARP协议将IP地址转换成MAC地址,在IP层及其以上的层次看来,他们只标识IP地址,从不跟硬件打交道。
4.1 arp协议如何工作的
为了实现IP地址与MAC地址的查询与转换,ARP协议引入了ARP缓存表的概念,每台主机或路由器在维护着一个ARP缓存表(ARP table),这个表包含IP地址到MAC地址的映射关系,表中记录了<IP地址,MAC地址>对,称之为ARP表项,他们是主机最近运行时获得关于其他主机的IP地址到MAC地址的映射,当需要发送数据的时候,主机就会根据数据报中的目标IP地址信息,然后在ARP缓存表中进行查找对应的MAC地址,最后通过网卡将数据发送出去。ARP缓存表包含一个寿命值(TTL,也称作生存时间),它将记录每个ARP表项的生存时间,生存时间到了就会从缓存表中删除。从一个表项放置到ARP缓存表中开始,一个表项通常的生存时间一般是10分钟,当然,这些生存时间是可以任意设置的,我们一般使用默认即可。
4.2 工作原理(结合交换机原理)
- 当PC1想发送数据给PC2,首先在自己的本地ARP缓存表中检查PC2的MAC地址是否存在。
- 如果PC1缓存中没有找到响应的条目,它将询问PC2的MAC地址,从而将ARP请求帧广播到本地网络的所有主机。 该帧中包括源主机PC1的IP、MAC地址,本地网络中的所有主机都接收到ARP请求,并且检查是否与自己的IP地址相匹配。如果发现请求中IP地址与自己IP不匹配,则丢弃ARP请求。
- PC2确定ARP请求中得IP地址与自己的IP地址匹配,则将PC1的地址和MAC地址添加到本地缓存表中。
- PC2将包含其MAC地址的ARP回复消息直接发送回PC1 (单播)。
- PC1收到PC2发的ARP回复消息,将PC2的IP和MAC地址添加至自己ARP缓存表中,本机缓存是有生存期的,默认ARP缓存表有效期120s。当超过该有效期后,则将重复上面过程。PC2的MAC地址一旦确定,PC1就能向PC2发送IP信息。
4.3 arp命令
arp命令可选项:
4.4 arp攻击与欺骗
1.ARP攻击 ARP攻击发送的是ARP应答,但是ARP应答中的MAC地址为虚假地址,所以在其他主机想要进行通信时,会将目的MAC地址设置成此虚假MAC地址导致无法正常通信。 例如:如果希望被攻击主机无法访问互联网,就需要对网关发送或被攻击主机发送虚假的ARP应答。当网关接收到虚假的ARP应答更新ARP条目后,如果网关再发生数据给PC1时,就会发送到虚假的MAC地址导致通信故障。
2.ARP欺骗 ARP欺骗的原理和ARP攻击基本相同,但是效果不一样。ARP攻击最终的结果是导致网络中断,而ARP欺骗的最终结果是使得流量通过自身达到监控或控制的目的。
|