前面说的MTU1500字节。这里说16位内容 单位是字节 就是2^16-1个字节。远远超过1500字节所以当内容很多时就要分片。
#网络层概述
#网络层作用
#ICMP协议详解
————————————————网络层概述————————————————
#IP服务的特点
#IPv4头部结构
#IP服务的特点
为上层提供无状态、无连接、不可靠的服务。
无状态:IP通信双方不同步传输数据的状态信息,因此所有IP通信报的接收发送都是相互独立的,没有上下文关系,也就导致了IP无法处理乱序,重复的IP数据报。
无连接:IP通信双方都不会长久存储通信双方的任何信息。
不可靠:IP协议不能保证IP数据报到达目标端。
#IPv4头部结构:
4位版本号:对于ipv4来说 就是4
4位头部长度:标识了有多少个4字节,所以IP头部最长是60个字节 (二进制4位最大能表示十进制的15,15*4=>60字节)
8位服务类型(TOS):其中包括3位的优先权字段。1位的保留字段。4位的TOS字段。4位的TOS字段分别表示最小延时、最大吞吐量、最高可靠性和最小费用。实际中4种服务只能选择一种,应用程序可以根据需要选择。例如远程登录应用需要的是最小延时,而数据传输需要的是最大吞吐量。
16位总长度(字节数):指整个IP数据报的长度以字节为单位即2^16-1个字节。但是由于MTU的存在,超过数据量的都要被IP分片,所以实际远远不到这个最大值。
16位标识、3位标志、13位片偏移描述了IP如何分片
16位标识:唯一的表示主机发送的每一个数据报,初始值由系统随机生成,每发送一个数据报他的数值+1,同时该值在分片时被复制到每一个分片中,因此同一个数据报的所有分片具有相同16位标识。
3位标志:第一位是保留的。第二位表示禁止分片,不分片时如果超出MTU长度就返回SNP差错报文。第三位表示更多分片,除了数据报的最后一个分片外其他分片都将其设置为1,也就是有更多分片。
13位片偏移:表示数据报相对于原始数据报的数据偏移。这样就知道该插到哪里了
8位生存时间(TTL):数据报到达目的地之前允许经过的路由器跳数。只被发送端设置,发送过程中每经过一个路由该值就会被路由器-1。当TTL为0时,路由器将丢弃该数据包。并向原端发送一个ICMP差错报文。这个值用于防止数据陷于路由循环。
8位协议:用来区分上层协议。ICMP是1,TCP是6,UDP是17
16位头部校验和:由发送端填充。接收端对其利用CRC校验算法来检验IP数据报在传输过程中是否被损坏。
32位源端IP地址:32位目的端IP地址:一般情况下保持不变,不论经过多少中专路由器。
选项,最多40字节:是可变长的可选信息。
追踪路径:可以让路由把地址写入
时间戳:各路由写入选项中接收时的时间
松散源路由选项:指定一个路由器IP地址列表,数据报发送过程中必须经过其中所有路由器。
严格源路由选项:只能经过被指定的路由器。
以上,因此IP数据报长度为60字节。
————————————————网络层作用————————————————
#IP分片
#IP路由选择机制
#IP转发
#路由表更新
#IP分片
#IP路由选择机制
IP路由选择的过程:
查找完全匹配的主机IP地址
查找相同网络ID的网络IP地址
选择默认路由项 转发
检查数据报头部的TTL值 0就丢弃了
查看数据报的严格源路由选择选项
给源端发送一个ICMP重定向报文
将TTL值减1
处理IP头部选项
如果有必要执行IP分片操作
在Linux下查看路由表
~# route 会显示路由表
~# route add -host 192.168.15.147 dev eth0 添加路由器
~# route del -net 192.168.15.0 netmask 255.255.255.0删除路由器
~# route del default 删除默认路由项 这样就无法连接互联网了 需要设置默认路由器
~# route add default gw 192.168.15.0 dev eth0 添加默认路由项 这里是静态的更新路由方法 一般大型路由器都有OSPF等方式动态自动更新
————————————————ICMP协议详解————————————————
#ICMP报文格式
#ICMP查询报文
#ICMP差错报文
#ICMP报文格式
8位类型和8位代码一起决定了报文的类型:
类型:8 代码:0表示回显请求
类型:0 代码:0表示回显应答
类型:11 代码:0 表示c超时
#查询报文 大小为40字节共有4种
回送请求和应答报文:向特定主机路由器发报文,收到报文的主机或路由器必须给源主机发送应答报文。用来测试目标主机是否可答和其他状态
时间戳请求和回答:ms级分辨率 其他方式只有s级分辨率。请求端填写发起时间然后发送报文,接收端填写接收时间和发送时间,一般设置为相同。
掩码地址请求和回答:可以向子网掩码服务器得到某个接口的地址掩码,系统广播他的ICMP请求报文,其中的标识符和序列号字段由发送端任意选择设定,返回时填充相同值,这样发送端就可以匹配应答和请求。
路由器询问和通过报文:可了解连接在本网络上的路由器是否正常工作,主机将路由器询问报文进行广播,收到报文的路由器就使用路由器通过报文广播其路由信息
#ICMP差错报文共有5种
终点不可达:网络不可达、主机不可达、协议不可达、端口不可达,源路由失败等6中 分别是0-5
源站抑制:当路由器和主机由于拥塞而丢弃报文时就会向源站发送此差错报文,要求源站放慢发送速度
时间超时:当路由器收到TTL值为0的报文时或者当目的主机在规定TTL为0时未收集到全部报文时会丢弃分片报文并向源站发送时间超时报文。
参数问题:当路由器的目的主机收到的数据报中的首部中的字段不正确时就丢弃该数据报同时向源站发送错误报文
重定向报文:路由器将改变报文发送给主机,告诉主机下次要给哪个路由器 下面是具体的ICMP重定向报文: