IP地址与协议详解

基本的ip地址结构

ipv4:点分十进制,共32位

ipv6:冒号隔开8个16位数,共128位

分类寻址

ip地址中一些连续的位称为网络号,其余位称为主机号。

ip地址空间的划分涉及五大类:

A,B,C为单播,D为组播。

子网寻址

在一个站点接入Internet后为其分配一个网络号,然后由站点管理员进一步划分本地的子网数。

通过子网寻址,一个站点被分配一个A,B或C类的网络号,保留一些剩余主机号进一步用于站点内分配。该站点可能将基础地址中的主机部分进一步划分为一个子网号和一个主机号.

如下图,该站点将每一个地址的前16位固定为网络号,后16位8位为子网号,8位为主机号。这个特殊配置允许站点支持256个子网,每个子网最多可包含254台主机。

同一个子网中每台主机的IPv4地址拥有相同的子网号

子网掩码

子网掩码是由一台主机或路由器使用的分配位,以确定如何从一台主机对应的IP地址中获取网络和子网信息。

掩码由路由器和主机使用,以确认一个IP地址的网络/子网部分的结束和主机部分的开始。子网掩码中的一位设为1表示一个IP地址的对应位与一个地址的网络/子网部分的对应位相结合(位与).并将结果作为转发数据报的基础。

IP地址与子网掩码做(位与)运算,以形成用于路由的地址的网络/子网标识符。

子网掩码纯粹是站点内部的局部问题。。。

IP协议

IP协议是无连接的,这意味着IP不维护网络单元(路由器)中数据报相关的任何链接状态信息,每个数据报独立于其他数据报来处理。这也意味着IP数据报可不按顺序交付。

当某些错误发生时,例如一台路由器临时用尽缓冲区,IP提供一个简单的错误处理方式:丢弃一些数据(通常是最后到达的数据报)。

协议头部结构

版本

它包含IP数据报的版本号:IPV4是4,IPV6是6.

IPV4和IPV6两个协议之间不能直接互操作。

IHL(头部长度)

保存IPV4头部中32位字的数量,包括任何选项。由于他是一个4位的字段,所以IPV4的头部被限制最多15个32位字(60个字节).

DS(区分服务)

前6位被称为区分服务字段,后两位是显示拥塞通知字段或指示位。

总长度

IPV4数据报的总长度。通过这个字段和IHL字段,我们知道数据报的数据部分从哪里开始,以及他的长度。由于它是一个16位的字段,所以IPV4数据报的最大长度是65535字节。

由于一些携带IPV4数据报的低层协议不能精确表达自己封装数据的大小,所以需要在头部中给出总长度字段。例如,以太网会将短帧补充到最小长度(64字节)。虽然以太网最小有效载荷为46字节,单一个IPV4数据报也可能会更小(20字节)。如果没有提供总长度字段,IPV4实现将无法知道一个46字节的以太网帧是一个IP数据报,还是经过填充的IP数据报,这样可能会导致混淆。

尽管可发送一个65535字节的IP数据报,但是大多数链路层不能携带这么大的数据,所以会对发数据进行分片。主机不接受大于576字节的IPV4数据报。

标识

标识字段帮助标识由IPV4主机发送的数据报,为了避免将一个数据报分片和其他分片混淆,发送主机通常在每次发送数据报时都将一个内部计数器加1,并将该计算器值复制到IPV4标识字段。

生存期

TTL字段用于设置一个数据报可经过的路由器数量的上限。发送方将他初始化为某一个值(文档建议为64,但128或255也不少见),每台路由器在转发数据报时将该值减1.当这个字段值达到0时,改数据报被丢弃,并使用一个ICMP消息通知发送方。

协议

IPV4头部中的协议字段包含一个数字,表示数据报有效载荷部分的数据类型。最常见的值为17(UDP)和6(TCP)。

头部校验和

头部校验和字段仅计算IPV4头部。理解这一点很重要,因为这意味着IP协议不检测IPV4数据报有效载荷的正确性。需要其他上层协议自己去实现(比如TCP的校验和字段)。