Ipv4网络
IPv4数据报格式
首部各字段描述
- 版本号:用来确定IP协议的版本(比如IPv4还是IPv6),路由器根据版本号来判断怎样解析首部其他的字段信息,不同协议版本,数据报格式不同。——4比特
- 首部字段:IPv4协议包含一些可选字段,即首部长度不固定,该字段用来确定首部长度,大多数版本的IP协议不包含可选字段,因此通常IP首部一般长20个字节。——4比特
- 服务类型(TOS):有些数据报要求低时延\高吞吐量\可靠性传输。——8比特
- 数据报长度:IP数据报总长度,以字节计算,包括IP首部和运输层报文段的长度,因为以太网帧最大传输单元不超过1500字节,所以一般数据报长度一般不超过1500字节。——16比特
- 标识,标志,片偏移:与IP分片相关。——16比特——3比特——13比特
- 寿命:每次经过一个路由器该值减一,当该值为0时必须丢弃该数据报。——8比特
- 上层协议:IP数据报的数据部分应该交给哪个特定的运输层协议,跟运输层要存储哪个端口号来接收信号,即沟通运输层跟应用层。链路层帧也有一个字段来连接链路层跟网络层。——8比特
- 首部检验和:将首部中的每两个字节当作一个数,按反码求和,用来检验首部信息是否发生错误,运输层的检验和是对整个报文段包括数据部分进行检验。——16比特
- 源IP地址。——32比特
- 目的地址。——32比特
- 可有选项(IPv6已经不包含该选项)。
- 数据部分。——有效载荷(要传输的数据)。
若IP数据报不包含可有选项则首部一共有20个字节
IPv4数据报的分片
MTU:链路层帧的最大传输单元,限制着IP数据报的长度。
现在考虑一种情况,一个数据长度为4000字节的数据报进行传播,但是当他被一个路由器转发时,出链路帧的MTU为1500字节,该数据报必须被分割为小的数据报,即数据分片。
然后我们要考虑怎样分片以后的数据报我们怎么再把它拼接起来,什么时候拼接。
什么时候拼接?
假如我们在到达目的地前就拼接,那么在剩下的链路中仍然有被分片的可能,而且这样增加多次拆分和拼接的操作无疑增加了路由器的负担,所以应该在目的地进行拼接。
怎么拼接?
在IP首部的字段中有标志,标识,偏移。
目的端系统根据16比特的标识来确定属于哪个数据报,标识位在源端系统发送分组时就进行设置。
由于IP是不可靠的,所以怎末判断分片是否丢失已成功到达,就要根据,标志位信息,最后一个分片的标志位信息一般设置为0,而其他标志位信息设置为1。
偏移字段用来指示,该分片在原数据报的位置,使其能够正确拼接。
Ipv4编址
主机通常与路由器由一根链路相连,主机跟链路之间的边界叫做接口。路由器跟它任意一条链路之间的边界也叫做接口。因为每台主机与路由器都能发送和接受IP数据报因此,每台主机跟路由器都有自己的IP地址。一个IP跟一个接口相关联,而不是一个主机与一个IP相关联。
223.1.1.0/24其中24表示IP地址的前24位信息为IP所在子网的地址信息,称之为网络前缀。
因特网的地址分配策略无类别域间路由选择(CIDR)
IP地址聚合,就是把两个小网络合并为一个大网络,主要是通过修改子网位实现。通俗点说就是合为一个网段。要计算IP地址聚合后的地址,其实就是比较几个IP的网络前缀,相同的部分有多少位,这多少位就是聚合后的IP。
利用IP聚合可以减小ISP服务器的负担。
在CIDR被采用之前,IP地址的网络前缀部分长度被限制为8,16或24比特(分类编址也就是A,B,C类网络)。但是分类网络的地址利用率不高。
当一台主机发送255.255.255.255的数据报时,该报文交付给同一网络中的所有主机。该路由器也会有选择的向邻近子网转发该报文。
一个子网是如何给它内部的端系统分配IP的呢?
一般网络管理员通过DHCP(动态主机配置协议)来管理子网内的地址。接下来我们看一下DHCP的工作步骤。
- DHCP服务器发现
当一台主机刚到一个区域,他会通过67端口发送一个UDP传输协议的IP数据报(此时本主机还没有自己的IP,IP数据报的源IP使用0.0.0.0)。目的地址为广播地址255.255.255.255。DHCP客户将该IP传递给链路层,链路层将该帧广播到所有节点。该报文叫做DHCP发现报文。 - DHCP服务提供
当一台DHCP服务器收到该报文后,或发送一个DHCP提供报文(通过广播),里边包含,DHCP服务器的IP以及申请的IP地址,事务ID(可能同时有多个主机申请IP,用来辨别),子网掩码,地址租用期(IP地址有效时间量)。 - DHCP请求
请求主机拿到DHCP服务器提供报文后,使用新的事物id,使用源IP(0.0.0.0)目的IP为选择的DHCP服务器地址,发送报文,注意这次不是使用广播,回显数据。 - DHCP ACK
DHCP服务器确认并广播ACK。
客户收到ACK以后就可以在指定的时间内使用该IP。(地址的使用时间可以在不改变IP的情况下更新)
网络地址转换
每个IP联网设备都要一个IP地址,如果一个办公室网络如果被ISP分配了一段IP地址,随着该办公室的发展对IP地址需求增加,ISP就要重新分配一段IP地址给该办公室使用。家庭的路由器网络就是一个典型例子。
家庭中的每台设备都被NAT路由器分配一个ip,该ip由NAT路由器自主分配,该ip也仅在家庭网络内有效,所有设备共用同一个IP。
NAT路由器会从ISP拿到一个IP,然后NAT路由器上会运行DHCP服务器,为家庭内的联网设备提供ip,并且该NAT路由器会维护一张NAT转换表,表中记录LAN端ip以及端口号
以及WAN端的IP(即该NAT路由器被ISP分配的ip)以及端口号。当外界的请求返回时,NAT路由器会查询NAT转换表根据WAN短的端口号确定LAN端的ip以及端口号,并进行分发。
NAT工作流程就是,将内网往外界发送的的源IP地址换为自己的IP,以及更改后的端口号,等会请求回来后,将目的端口号跟IP改为本来的ip跟端口号再分发到子网特定主机。