摘要
属性
无状态
定义:状态不同步,即所有的IP数据报的发送、传输、接收都是相互独立的,没有上下文关系。 优点:简单高效,无需内核存储状态信息,无需传输时携带状态信息
无连接
不维持双方连接,每次传输需指明通信地址
不可靠
无法保证数据传输过程
IP协议头部
IPv4 (20-60bytes)
RFC791
长度:20bytes + 40bytes(可变选项)
图示
版本号:指明IPv4或IPv6,值:4、6
头部长度:最小,0x5;最大:0xF。单位为字(4bytes)
服务类型(Type Of Service,TOS):3位优先权字段(现已被忽略) + 4位TOS字段 + 1位保留字段(须为0)。4位TOS字段分别表示最小延时、最大吞吐量、最高可靠性、最小费用,其中最多有一个能置为1。应用程序根据实际需要来设置 TOS值,如ssh和telnet这样的登录程序需要的是最小延时的服务,文件传输ftp需要的是最大吞吐量的服务
总长度:指整个IP数据报的长度,单位为字节,即IP数据报的最大长度为65535字节(2的16次方)。由于MTU的限制,长度超过MTU的数据报都将被分片传输,所以实际传输的IP分片数据报的长度远远没有达到最大值
标识:唯一地标识主机发送的每一个数据报,其初始值是随机的,每发送一个数据报其值就加1。同一个数据报的所有分片都具有相同的标识值
标志:位1保留,位2表禁止分片(DF),若设置了此位,IP模块将不对数据报进行分片,在此情况下若IP数据报超过MTU,IP模块将丢弃数据报并返回一个ICMP差错报文;位3标识更多分片(MF),除了数据报的最后一个分片,其他分片都要把它设置为1
位偏移:分片相对原始IP数据报数据部分的偏移。实际的偏移值为该值左移3位后得到的,所以除了最后一个IP数据报分片外,每个IP分片的数据部分的长度都必须是8的整数倍
生存时间:数据报到达目的地之前允许经过的路由器跳数。TTL值被发送端设置,常设置为64。数据报在转发过程中每经过一个路由该值就被路由器减1.当TTL值为0时,路由器就将该数据包丢弃,并向源端发送一个ICMP差错报文。TTL可以防止数据报陷入路由循环
协议:区分IP协议上的上层协议。在Linux系统的/etc/protocols文件中定义了所有上层协议对应的协议字段,ICMP为1,TCP为6,UDP为17
头部校验和:由发送端填充接收端对其使用CRC算法校验,检查IP数据报头部在传输过程中是否损坏
源IP地址、目的IP地址:表示数据报的发送端和接收端。一般情况下这两个地址在整个数据报传递过程中保持不变,不论中间经过多少个路由器
选项:可变长的可选信息,最多包含40字节。选项字段很少被使用。可用的IP可选项有:
a. 记录路由: 记录数据包途径的所有路由的IP,这样可以追踪数据包的传递路径
b. 时间戳: 记录每个路由器数据报被转发的时间或者时间与IP地址对,这样就可以测量途径路由之间数据报的传输的时
c. 松散路由选择: 指定路由器的IP地址列表数据发送过程中必须经过所有的路由器
d. 严格路由选择: 数据包只能经过被指定的IP地址列表的路由器
e. 上层协议(如TCP/UDP)的头部信息
[
](https://blog.csdn.net/qq_29344757/article/details/78570272)
规律 如何用图来讲IP中的知识点进行一次联系与贯通,如报文组成应该来说是围绕整个IP的。以后写的每一个总结都应该进行这一步思考
IP协议
组成
头+数据报(TCP/UDP报文)
思路:
- 源、目的IP地址:4bytes + 4bytes
- 协议版本:IPv4、IPv6
- 报文长度
- TTL:记录经过路由器的个数
IP地址
表示32bits的二进制
点分十进制,共15个字符的字符串 数字3位*4+3个点号
发展历程
分类5类——无分类CRID——子网
ABCDE5类
网络号+主机号
图示
A类:0 + 7 + 24
B类:10+ 14 + 16
C类:110 + 21 + 8
D类:1110+4+24
E类:1111+4+24
主机号:特殊
全1,广播地址 —— 最后一个负责全体通知
全0,网络地址 —— 该小队的队长,负责与外部网络通信
IP路由
IP是如何通过路由器与另一IP进行通信的?
ICMP协议组成
报文:Mac首部+IP首部+ICMP
类型+代码+校验和+其他选项
查询报文 ping
首部:0/8 + 代码 + 校验和 + 标识符(pid) + 序号(0,1,2…) + 其他选项(请求时间)
类型 0-8
0 ICMP回送请求报文
8 ICMP回送响应报文
- 网络不可达 —淘汰 无ip地址分类
- 主机不可达 —找不动mac地址
- 协议不可达 —防火墙??如何确定是什么协议的?
- 端口不可达 —未监听
- 原点
差错校验 traceroute
类型