核心内容
不同版本的IP协议使用不同的数据报格式。这里我们学习IPv4的数据报格式。
(1)IPv4数据报格式
下面将简单介绍以下几个重要的关键字字段:
首部长度:用4个比特确定IP首部字段的长度(以4个字节为单位)。
①一般的IP数据报首部长度为20个字节。
数据报长度:用16个比特确定IP数据报的总长度。
①IP数据报理论的最大长度为65535个字节。
标识、标志、片偏移:用于目的主机对片进行重组。
寿命(TTL):标识数据报在网络中的存活时间。每当路由器处理一个数据包时,该字段的值减1.
数据:IP数据报的数据字段包含交付给目的主机的运输层报文段。
①数据字段还可能包括其他类型的报文段(如ICMP)。
前面介绍了IP数据报的结构,在实际应用中IP数据报的长度也是受到限制的。因为IP数据报需要封装在链路层帧后才能传输到下一个路由器。因此IP数据报的长度收到链路层协议最大传输单元MTU的限制。
IP数据报从路由器输出端口输出,若IP数据报长度大于输出链路的MTU,IP数据报需要被分片后才能正常输出。
这些较小的数据报被称为片。为了坚持网络内核保持简单的原则,片的重新组装不在路由器上而在端系统上进行。为了实现这个功能,IP数据报在首部封装了“标识号、标志比特、偏移字段”。在目的主机上需要实现三个功能:
确认那些数据报是同一个较大数据报的片
发送主机为分组贴上标识号,每发送一个数据报就令标识号加1.这样目的主机就可以根据标识号确定那些数据报是同一个较大数据报的片了。
确认收到数据报的最后一个片
因为IP协议是一种不可靠服务,因此令最后一个片的标志比特置0.目的主机可以据此确定是否收到数据报的最后一个片。
主机和路由器通过一条或多条链路与网络相连。设备与物理链路的边界叫做接口。IP要求每一个接口都有一个IP地址。
(1)定义
每个IP地址长度为32个比特。
总共有4G个(大约40亿个)IP地址。
IP地址采用点分十进制记法。
每个字节用十进制书写,字节间用逗号隔开。
每个接口都有唯一的IP地址。
主机可以只有1个IP地址,路由器有2个或2个以上的IP地址。
(2)子网
子网是为了确定网络区域,分开路由器和主机的不同接口,而产生的分离的网络孤岛。
多个主机和路由器的端口或路由器和路由器的端口可以通过不含路由器的网络(以太网LAN、无线接入点)互联。这些网络也被称为子网。子网内的设备具有以下两个特点:
具有相同前缀:子网内节点的IP地址的高位部分相同。
无需路由器介入:子网内各主机通信物理可达。
因此因特网内的IP寻址可以首先找到对应子网,然后再去找到子网内部的对应设备。
(3)CIDR
因特网的地址分配策略称为无类别域间路由选择(CIDR)。这将IP地址划分为了两个部分:
IP地址由网络和端口两部分组成。这样当路由器转发数据报时,只需要考虑前面x个字节的网络段。这样大大减少了转发表的长度。
同时,每个子网也能有自己的子网。即地址聚合,单个网络前缀也具有通告多个网络的能力。
在CIDR之前,IP地址采用分类编址的方案,子网按照网络部分比特数量因此也被划分为三种类型:
除了这三种分类网络,还有一些特殊的IP地址。
通过上述分析我们知道了IPv4地址长32个比特,采用分店十进制记法表示。网络设备的每一个端口都有一个在世上唯一的IP地址。相比于灵活的CIDR编址方式,以前主要采用分类编址,根据网络部分字节长度分为了A、B、C三类网络。因为C类网络内部可容纳设备数量仅254而不是适用于中大型组织。B类网络最多可以支持65534个设备,又太大了。网络被划分为若干子网,IP地址被分为网络和端口两个部分,网络部分则根据子网进行划分。路由器传输数据报时只需要考虑网络部分,在进入子网内部后再根据端口号查找对应设备。同时,子网也能够组织自己的子网,因此子网内部也可能有路由器进行数据报转发。
上面介绍了IP地址的组成以及编码方式,IP要求每个端口都有一个IP地址。那么设备是如何从组织中分配到IP地址的呢?
(4)动态主机配置协议DHCP
DHCP允许主机自动获取一个IP地址,此IP地址可以是一个固定的IP或临时的IP地址。DHCP有以下特点:
即插即用:DHCP具有将主机自动连接进网络的能力。
客户-服务器协议
①客户是新到达的主机,服务器是DHCP服务器。
每个子网都有一个DHCP服务器或中继代理
因此主机每进入一个子网,就会自动向子网的DHCP服务器请求一个IP地址。这也会使一个在子网中移动的节点,不能维持与远程应用之间的TCP连接。 对于一个新到达的主机,从DHCP服务器中获取IP地址有四个步骤:
DHCP服务器发现:新到达的主机需要发送DHCP发现报文找到与其交互的DHCP服务器。
①使用广播目的地址:255.255.255.255,链路层将帧广播到子网内的所有主机。
②使用本主机源IP地址:0.0.0.0
DHCP服务器提供:DHCP主机收到发现报文后,发送提供报文对客户进行响应。
①使用广播目的地址:255.255.255.255
②提供报文包括:事务ID、推荐的IP地址、网络掩码、IP地址租用期。
DHCP请求:新到达的主机从多个DHCP服务器中选择一个,然后向其发送请求报文。
客户在收到DHCP ACK后,便能在租用期内使用服务器分配的IP地址了。
虽然DHCP是即插即用服务,但是移动节点每进入一个新子网就会请求使用一个新的IP地址,这使得其不能维持与远程应用的TCP连接。 后续将研究移动IP,允许移动节点在网络之间移动而只使用一个IP地址。
子网可以一次性获得一块连续地址。但当子网变大后,则需要一块更大的地址。这就会采用网络地址转换了。
(1)定义
子网内部设备采用专用网络地址,专用网络地址仅对网络内部有效。
子网通过NAT使能路由器与外界进行数据交换。
子网对于外界仅具有一个IP地址。
①省钱,仅有一个有效IP地址。
②安全。对外界隐藏了内部网络结构。
分组是如何通过路由器找到内部目标主机的呢?
(2)NAT转换表
NAT转换表在表项中包含了端口号和IP地址。
①包含网络段和内网主机的端口号和IP地址。
外出数据:替换源IP地址和端口
①将源IP地址替换成子网在广域网一侧的IP。
②任意选择一个没有在NAT转换表出现的端口号替换。
进入数据:替换目的IP地址和端口
①将目的IP地址替换成源IP地址。
(3)优缺点
使用网络地址转换使子网只需要一个对广域网的IP地址,这相比于为每个主机分配一个IP地址节省了很多成本。同时还隐藏了子网内部结构,安全性较好。但是会有NAT穿越问题,即外网设备不能主动与内网设备建立连接。
为了解决NAT穿越问题可以采用静态配置即认为设计NAT转换表或、IGD协议、使用中继器等策略。
重点
IPv4地址仅32个比特,现存的IPv4地址空间不足。为了应对大IP地址空间的需求,开启了新的IP协议“IPv6”。
IPv6扩大了地址容量,IPv6的地址长度为128比特(16个字节)。同时IPv6的首部仅占40个字节。IPv6的数据报结构更加简单、高效。
相比于IPv4,IPv6的数据报有了两点大的改动:
因为分片和重组是很耗时的,因此IPv6不允许路由器进行分片和重组,分片和重组只能在源和目的执行。这样大大加快了IP转发速度。
另外因为运输层和链路层都有比特差错检验,每台路由器都需要重新计算IPv4检验和,所以也删除了首部检验和字段。
(2)IPv4到IPv6的迁移
IPv4不能在一夜之间变成IPv6。因此现在因特网上同时具有运行IPv6或IPv4协议的应用。假定两个IPv6节点要使用IPv6数据报进行交互:
借助隧道,发送端的IPv6节点能将IPv6报文封装在IPv4数据报中,然后通过IPv4路由器进行转发。接收端的IPv6节点能够检查IPv4数据报中是否包含IPv6数据报。有则取出IPv6数据报并为其提供路由转发。