摘要

属性

无状态

定义:状态不同步,即所有的IP数据报的发送、传输、接收都是相互独立的,没有上下文关系。 优点:简单高效,无需内核存储状态信息,无需传输时携带状态信息

无连接

不维持双方连接,每次传输需指明通信地址

不可靠

无法保证数据传输过程

与HTTP、UDP协议类似

IP协议头部

IPv4 (20-60bytes)

RFC791
长度:20bytes + 40bytes(可变选项)

图示

image.png
版本号:指明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报文)
思路:

  1. 源、目的IP地址:4bytes + 4bytes
  2. 协议版本:IPv4、IPv6
  3. 报文长度
  4. 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回送响应报文

  1. 网络不可达 —淘汰 无ip地址分类
  2. 主机不可达 —找不动mac地址
  3. 协议不可达 —防火墙??如何确定是什么协议的?
  4. 端口不可达 —未监听
  5. 原点

差错校验 traceroute
类型