IP协议:
IP是TCP/IP里非常重要的协议,我们发送的TCP UDP ICMP IGMP等数据都要经过IP层的封装后才能进行传输。
IP协议提供不可靠的 无连接的服务。不可靠表现在:它不保证数据报一定发送到目的端,如果在半路上出现错误,IP协议会将数据报丢掉并发送ICMP差错报文(后面会讲)告诉发送端,可靠性由上层提供(TCP)。无连接表现在:它讲数据报发送出去后 就不在和其有任何连接,每个数据报都是独立的进行发送,所以如果A B两个报文先后发送,A
B的路线可能不一样,到达顺序也可能不一样。
IP首部格式:
在这里的协议版本号是4 代表ipv4 当然现在我们也有ipv6了
4位首部长度则代表ip首部含有多少个32bit(4字节),只有4位也就意味着最大值是15,整个ip首部的最大长度是60个字节。因此最后的选项字段最多有40个字节。
TOS 是不同应用程序按照其程序的特性填入,
可以根据这些字段进行路由决策
16位总长度代表该数据报的总长度为2^16-1,虽然很大,但由于MTU的限制,还有很多主机不能接受超过576字节的数据报,因此会被切片。
标识 标志还有偏移量留作后面介绍。
TTL是数据报最多经过的路有数。每经过一个路由器就减1,当为0时丢弃,并发送ICMP差错报文,后面讲到的traceroute就是根据这个特性来记录 数据报经过的路由器的地址的。
协议字段在之前提到过是分用的时候判断上层协议的
首部检验和是用来差错检验的,但是由于TTL每经过一个路由都会减一,因此在路由器转发的时候也会对检验和进行修改
最后一个选项字段前面提到最大为40字节,可以用来存放路径和时间戳等,后面讲ping的时候会提到因为字节的限制,所以只能记录最多9个IP地址(40个字节里还有3个字节作为选项)
从wireshark抓的一个tcp包,从上到下依次是链路层 网络层 运输层,可以清楚的看到数据报的格式,每一层的封装加了什么。和书上的基本一样。
IP路由选择留到第九章和第十章一起分析。
子网寻址:
不把IP地址简单的看成网络号+主机号 而是又将主机号分为子网号和主机号,这样更方便管理,更为重要的是这样减少了路由表的规模。划分子网在网络考试里遇到了好多次,很简单,从头上开始分,分成二叉树,先分配主机多的,在分配主机少的,尽可能的不浪费。
子网掩码:
给两个ip地址是无法判断是否在一个子网下,在这里引出了子网掩码,我们只需要将IP地址和子网掩码相与,得到的就是网络号。就可以判断ip数据报是:(1)本子网上的主机(2)本网络其他子网的主机(3)其他网络上的主机