计算机网络 网络层 网际协议:IPv4、DHCP、网络地址转换NAT

今日吐槽:没有面试 面试却挂了


“掌握IP编址就是掌握因特网的网络层!”

1.IPv4

IPv4数据报格式

在这里插入图片描述

  • 版本号。4比特。规定了IP协议版本。
    通过查看版本号,路由器能够确定如何解释IP数据报的剩余部分。
  • 首部长度。4比特。确定IP数据报中载荷实际开始的地方。
    因为一个IPv4数据报可包含一些可变数量的选项(这些选项包括在IPv4数据报首部中)。
    大多数IP数据报不包含选项,所以一般的IP数据报具有20字节的首部(上图前五行,每行4字节)。
  • 服务类型。服务类型使不同类型的IP数据报能相互区别开来。
    例如,一些特别要求低时延、高吞吐量或可靠性的数据报。例如将实时数据报(如IP电话应用)和非实时流量(如FTP)区分开也许是有用的。
  • 数据包长度。1字节,16比特。所以IP数据报的理论最大长度未65535字节。
  • 标识、标志、片偏移。 这三个字段与IP分片有关。有趣的是,IPv6不允许路由器对分组分片。
  • 寿命。寿命用来确保数据报不会永远在网络中循环。每当一台路由器处理数据报时,该字段的值-1。若TTL字段减为0,则该数据报必须丢弃。
  • 协议。该字段通常仅当一个IP数据报到达其最终目的地时才会有用。指示了IP数据报的数据部分应交给哪个特定的运输层协议。
    协议号是将网络层与运输层绑定到一起的粘合剂,而端口号是将运输层和应用层绑定到一起的粘合剂。
  • 首部检验和。首部检验和用于帮助路由器检测收到的IP数据报中的比特错误。首部检验和计算:将首部中的每2个字节当作一个数,用反码算数对这些数求和。

为什么在网络层和运输层都进行差错检测?
首先,IP层只对IP首部计算了检验和,而TCP/UDP检验和是对整个TCP/UDP报文段进行的。
其次,TCP/UDP与IP不一定都属于同一个协议栈。原则上,TCP能够运行在一个不同的协议上,而IP能够携带不一定要传递给TCP/UDP的数据。

  • 源和目的IP地址。当某源生成一个数据报时,它在源IP字段中插入它的IP的地址,在目的IP地址字段中插入其最终目的地的地址。通常源主机通过DNS查找目的地址。
  • 选项。选项字段允许IP首部被拓展。很少用。
  • 数据(有效载荷)。大多数情况,IP数据报的数据字段要交付给目的地的运输层报文段(TCP或UDP)。然而,该数据字段也可承载其他类型的数据,如ICMP报文。

IPv4数据报分片

为什么分片

因为每个IP数据报要被封装在链路层帧中从路由器传到下一台路由器,所以链路层协议的MTU严格限制着IP数据报的长度。
将数据报分成更多的较小的数据报,这些较小的数据报每个都叫做 片 。
MTU:最大传送单元。一个链路层帧能承载的最大数据量。

如何分片

片在到达目的地运输层以前需要重新组装,TCP与UDP都希望从网络层收到完整的、未分片的报文。
当一台目的主机从相同源收到一系列数据报时,它需要确定这些数据报中的某些是否是原来一些较大的数据报的片。
为了让目的主机执行组装任务。IPv4数据报首部有 标识、标志、片偏移 字段。

发送主机通常将它发送的每个数据报的标识号+1。当某路由器需要对一个数据报分片时,形成的每个数据报(即片)具有初始数据报的源地址、目的地址与标识号。
当目的地从同一发送主机收到一系列数据报时,它能够检查数据报的标识号以确定哪些数据报实际上是同一较大数据报的片。
为了让目的主机绝对地相信它已收到了初始数据报的最后一个片,最后一个片的标志比特被设为0,而所有其他片的标志比特被设为1。
另外,为了让目的主机确定是否丢失了一个片(且能按正确的顺序重新组装片),使用偏移字段指定该片应放在初始IP数据报的哪个位置。
在这里插入图片描述

IPv4编址

接口

接口:主机与物理链路之间的边界叫做接口。路由器与它的链路之间的边界也叫做接口。路由器必须拥有两条或更多条链路与它连接。
IP要求每台主机和路由器接口拥有自己的IP地址。因此,从技术上讲,一个IP地址与一个接口相关联,而不是与包括该接口的主机或路由器相关联。

点分十进制法

每个IP地址长度为32比特(4字节)。
点分十进制:地址中的每个字节用它的十进制书写,各字节间以句点隔开。

例如
193.32.216.9的二进制记法是
11000001 00100000 11011000 00001001

在这里插入图片描述

子网

子网掩码:

例如
223.1.1.0/24,其中/24记法被称为子网掩码,指示32比特中的左边24比特定义了子网地址。
任何其他要连到223.1.1.0/24网络的主机都要求其地址具有223.1.1.xxx的形式。

在这里插入图片描述
当使用子网寻址时,32比特IP地址被划分为两部分,并且也具有点分十进制数形式a.b.c.d/x,其中x指示了地址的第一部分中的比特数。
形式为a.b.c.d/x的地址的x最高比特构成了IP地址的网络部分,并且经常被称为该地址的网络前缀。

当组织外部的一台路由器转发一个数据报,且该数据报的目的地址位于该组织的内部时,仅需要考虑该地址的前缀。这大大减少了在这些路由器中转发表的长度,因为形式a.b.c.d/x的单一表项足以将数据报转发到该组织内的任何目的地。

广播地址

IP广播地址:255.255.255.255
当一个主机发出一个目的地址为255.255.255.255的数据报时,该报文将会交付给同一网络中的所有主机。

分类编址

A类网络:网络部分8比特
B类网络:网络部分16比特
C类网络:网络部分24比特
一个C类网络仅能容纳2的8次方-2=254台主机。(其中的两个地址预留用于特殊用途)

最长前缀匹配

2.获取一块地址

1.ISP分配
为了在子网内获取一块IP地址,管理员可能首先与她的ISP联系,该ISP可能会从已分给他的更大地址块中获取一些地址。
在这里插入图片描述
2.ICANN组织 权威机构分配
不仅分配IP地址,还管理DNS根服务器。

3.获取主机地址:动态主机配置协议DHCP

介绍

DHCP又被称为即插即用协议、零配置协议。因为DHCP具有将主机连接进一个网络的网络相关方面的自动能力。
DHCP允许主机自动获取一个IP地址。

DHCP服务器

在这里插入图片描述
DHCP是一个客户、服务器协议。在最简单子网下,每个子网将具有一台DHCP服务器。如果在某子网中没有服务器,则需要一个DHCP中继代理,这个代理知道用于该网络的DHCP服务器的地址。

DHCP客户-服务器交互

yiaddr:你的因特网地址,指示分配给新到达客户的地址
在这里插入图片描述

四个步骤。
1.DHCP服务器发现
一台新到达的主机首要任务是发现一个要与其交互的DHCP服务器。这可通过使用DHCP发现报文来完成。客户在UDP分组中向端口67发送该发现报文。该UDP分组封装在一个IP数据报中。
数据报应该发给谁?使用目的地址广播地址255.255.255.255,使用”本主机“源IP地址0.0.0.0。
DHCP客户将该IP数据报传递给链路层,链路层然后将该帧广播到所有与该子网连接的节点。
2.DHCP服务器提供
用DHCP提供报文响应,该报文向该子网的所有节点广播。
每台服务器提供的报文包含:收到发现报文的事务ID,向客户推荐的IP地址、网络掩码、IP地址租用期。
3.DHCP请求
新到达的客户从一个或多个服务器提供中选择一个,并向选中的服务器提供用DHCP请求报文进行响应,回显配置的参数。
4.DHCP ACK
服务器用DHCP ACK报文对DHCP请求报文进行响应,证实所要求的参数。

DHCP的缺陷

每当节点连到一个新子网,要从DHCP得到一个新的IP地址,当一个移动节点在子网之间移动时,就不能维持与远程应用之间的TCP连接。

4.网络地址转换

网络地址转换NAT。
NAT能使路由器对外界隐藏了家庭网络的细节。

如图。
假设一个用户的家庭主机10.0.0.1,请求IP地址为128.119.40.186的某台Web服务器(端口80)上的一个Web页面。主机10.0.0.1为其指派了(任意)源端口号3345并将该数据报发送到LAN中。
NAT路由器收到该数据报,为该数据报生成一个新的源端口号5001,将源IP替代为其广域网一侧接口的IP地址138.76.29.7,且将源端口3345更换为新端口5001。
Web服务器不知道到达的数据报已经被NAT路由器进行了改装,它会发回一个响应报文,其目的地址是NAT路由器的IP地址,其目的端口号是5001。当该报文到达NAT路由器时,路由器使用目的IP地址与目的端口号从NAT转换表 中检索出家庭网络浏览器使用的适当IP地址(10.0.0.1)和目的端口号(3345)。于是,路由器重写该数据报的目的IP地址与目的端口号,并向家庭网络转发该数据报。

在这里插入图片描述

5.例题

分配ip

在这里插入图片描述

分片

在这里插入图片描述

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值