续TCP/IP技术回顾(2)—网络接口层

主要根据课本《高级计算机网络》李向丽整理。

1.4 网际层

网际层的主要任务有:为主机和路由器接口分配一个全网唯一的地址(IP地址),实现IP地址的识别和管理;建立有效的IP分组路由机制;使IP分组的长度与通信子网所允许的数据报长度相匹配,等等。

IP协议是网际层的主要协议。在发送方,IP协议把传输层传输过来的TCP报文段组装成IP分组,并把IP分组传递给网络接口层。若一个结点从网络接口层接受到一个IP分组,将会检查其目的地址,如需转发,则选择一条最佳路由转发出去。若结点是目的结点,则将IP分组的数据部分上传给上层协议。IP协议制定了统一的IP分组格式,以消除各通信子网的差异,从而为信息的发送方和接收方提供透明的传输通道。

在一个IP分组的传输过程中需要经过很多路由器。当IP分组到达路由器时,每个路由器都首先从首部取出目的地址,根据目的地址决定IP分组应该发往的下一跳路由器。为了支持IP分组的路由机制,每个路由器都有一个保存路由信息的路由表。

1.4.1 IP协议

  IP协议提供了一种分层的、与硬件无关的寻址系统,具有在复杂的路由式网络中传递数据所需的服务。TCP/IP网络上的每个网络适配器都有一个唯一的IP地址。IP协议为上层协议提供无状态、无连接、不可靠的服务。

无状态是指IP通信双方不同步传输数据的状态信息,因此所有IP数据报的发送、传输和接收都是相互独立、没有上下文关系的。这种服务最大的缺点就是无法处理乱序和重复的IP数据报。无状态服务的优点也很明显:简单、高效。我们无需为保持通信的状态而分配一些内核资源,也无需每次传输数据时都携带状态信息。

无连接是指IP通信双方都不长久地维持对方的任何信息。这样上层协议每次发送数据的时候,都必须明确指定对方的IP地址。

不可靠是指IP协议不能保证IP数据报准确地到达接收端,它只是承诺尽最大努力。很多情况都可以导致IP数据报发送失败。比如,某个中转路由器发现IP数据报在网络上存活地时间太长,那么它将丢弃该报文,并返回一个ICMP错误消息给发送端。因此,使用IP服务地上层协议需要自己实现数据确认、超时重传等机制以达到可靠传输的目的。
          IP分组由首部和数据两部分组成,首部包括20B的固定部分和可变长的选项(最长40字节)部分。

        版本号(Version)4位,表示所使用的IP协议的版本。目前是IPV4版本,该字段的值为4,相应的二进制是0100。

        首部长度(Header Length)4位,以4B为单位说明IP分组的长度。IP首部长度最小值是5,最大值是15。

        服务类型(Differentialted Services)8位,源IP能够指定特殊的路由信息。有些路由器会忽略这个字段的信息,但随着服务质量(QoS)技术的出现,这个字段得到了更多的重视。这个8位字段的主要用途是对等待通过路由器的数据报区分优先级,而目前大多数IP实现把是这个字段全填为0。

        总长度(Total Length)16位,表示IP分组的长度,单位是字节,这个长度包含了数据报首部和数据部分。

        标识(Identification):16位,表示IP数据报的标识符,每个IP数据报有一个唯一的标识符。IP软件在存储器中维持一个计数器,每产生一个数据报,计数器就加1,并将此值赋给整个标识字段。但整个标识并不是序号,因为IP是无连接服务,数据报不存在按序接受的问题。当数据报由于长度超过下面数据链路层的MTU(最大传输单元)值而必须分段的时候,这个标识符的值就被复制到所有的数据报分段的标识字段中。相同的标识字段的值分段后的各数据报分段最后能正确地组装成原来的数据报。

        标志(Flags):3位,标志字段用以指出该IP数据报后面是否还有分段,也就是这个字段是分段标志。目前只有前两位有意义:最低以为记为MF(More Fragment),如果MF=1,则表示后面还有分段,如果MF=0表示这已是某个数据报的最后一个分段;中间一位记为DF(Don’t Fragment),当DF=1时表示不允许分段,DF=0表示允许分段;最高1位没有使用。

分片偏移量(Fragment Offset):13位,用以指出该分段在数据报中的相对位置,也就是说,相对于用户数据字段的起点,该分段从何处开始。若有分段,段偏移以8字节为偏移单位,即每个分段的长度一定是8字节(64位)的整数倍。第一个分段偏移值就是0 0000 0000 0000,如果第一个分段一共是64字节,则0 0000 0000 1001,相当于10进制数的9,因为从第9个“8字节”数据块开始的。如果没有分段,则该字段值为0。

  生存时间(TTL):这个字段表示数据报在被抛弃之前能够保留的时间(以秒为单位)或路由器跳数。每个路由器都会检查这个字段,并且至少把它减去1,或数据报在路由器中延迟的秒数。当这个字段的值为0时,数据报会被抛弃。跳数代表数据报到达目的之前必须经过的路由器的数量。如果数据报在到达目的之前经过了5个路由器,我们就说距离目的有5跳。
  协议:这个8位的字段表示接收数据载荷的协议,比如协议标识为6(二进制为00000110)的数据报会被传递到TCP模块。
  首部校验和:这个字段包含16位的校验和,只用于检验报头本身的有效性。数据报经过的每个路由器都会对这个值进行重新计算,因为TTL字段的值是在不断变化的。
  源IP地址:这个32位的字段包含了数据报的源IP地址。
  目的IP地址:这个32位的字段包含了数据报的目的IP地址。目的IP根据这个值检验发送的正确性。
  IP选项:这个字段支持一些可选的报头设置,主要用于测试、调试和安全的目的。这些选项包括严格源路由(数据报必须经过指定的路由)、网际时间戳(经过每个路由器时的时间戳记录)和安全限制。
  **填充:**IP选项字段的长度不是固定的。填充字段可以提供一些额外的0,从而保证整个报头的长度是32位的整倍数(报头长度必须是32位字的整倍数,因为“网际头长度(IHL)”字段以32位字为单位表示报头的长度)。
  IP数据载荷:这个字段一般用于保存传递给TCP或UDP(在传输层中)、ICMP或IGMP的数据。数据块的长度不定,可以包含数千字节。

1.4.2 IP地址

在IPV4协议版本中,IP地址是32位无符号二进制数,通常用“点分十进制”格式表示,即将32位划分为4B,每一个字节分别用一个十进制数表示,用小数点将这些字节隔开。例如,32位的IP地址:11001010.11000100.01001001.00000101,可用点分十进制数表示为202.196.73.5。

在技术上一个IP地址是与一个接口相关联的,而不是与包含该接口的主机或路由器相关联的。一般的路由器有多个接口,每一个接口都有一个IP地址。当一台主机有多个接口与多个网络连接时,它就有多个IP地址,称该主机为多穴主机。

1.IP分类编址

       IPv4 地址共有  个,最初把一个地址分成两部分:“网络识别码”在地址的最高的字节当中,”主机识别码“在剩下的部分中。这样划分的话,就使得最多只能分配给 256 个网络,显然这样是远远不够的。为了克服这个限制,在随后出现的分类网络中,地址的最高位字节被重新定义为网路的类别(即网络 ID),共 5 个:A、B、C、D 和 E。A、B 和 C 类用于单播通信中设备 IP 地址分配;D 类属于组播地址,用于组播通信;E类是保留地址。他们均有不同的网络类别(也就是网络 ID) 长度,剩余部分用来识别网络内的主机(称为主机 ID)。网络 ID 用来确定每类网络中有的网络数,而主机 ID 用来确定每个网络中的 IP 地址数。下面分别介绍这五类地址的结构。

A 类 IPv4 地址

A 类 IPv4 地址结构如下图所示,其中网络 ID 占用最高一个字节,也就是第一个二进制 8 位组,而主机 ID 则占用剩余三个字节,也就是后面的三个二进制 8 位组(一共 24 位)。

        在分类中规定,A 类 IPv4 地址中网络 ID 的最高位固定为 0,后面 7 位可变。这样一来,A 类网络的总数从 256个减少到 128个。但实际可以使用的只有 126 个,即整个 IPv4 地址中可构建 126 个 A 类网络,因为网络 ID 为 0 和 127 的 A 类网络不可用的。网络 ID 全为 0 的地址为保留地址,不能被分配;而网络 ID 为 01111111(相当于十进制的 127)的地址专用本地环路测试(也就是通常所说的环路地址),也是不能分配的。也就是以 0 或者 127 开头的地址是不能分配给节点使用的。

又因为 A 类 IPv4 地址中主机 ID 又24 位,所有可以使用的主机 ID 数,也就是可以每个 A 类网络中拥有的 IPv4 地址数为 166 777 216()。但主机 ID 全为 0 的地址为网路地址,而主机全为 1 的地址为广播地址,不能分配给主机使用,所以实际上可用的地址数为 166 777 214(−2)。A 类网络中可以构建的网络数最少,但每个网络中拥有的地址数是最多的,也就是可以构建的网络规模最大,适用于大型企业和运营商。

A 类 IPv4 地址的子网掩码固定为 255.0.0.0,因为子掩码就是网络 ID 部分全为 1,主机 ID 部分全为 0,而 A 类地址中网络 ID 部分就是最高的那个字节。

        B 类 IPv4 地址

B 类 IPv4 地址结构如下图所示,其网络 ID 占用最高的前两个字节,也就是第一个和第二个二进制 8 位组,而主机 ID 则占用剩余的两个字节,也就是后面两个二进制 8 位组。

        B 类 IPv4 地址的网络 ID 的最高两位固定分别为 1、0,后面 14 位可变。由此可知 B 类网络的总数从 65536()减少到 16384()个;B 类 IPv4 地址中主机 ID 为 16 位,所以可用的主机数,也就是每个 B 类网络拥有的 IPv4 地址数为 65536()个。同样因为主机 ID 全为 0 的地址是网络地址,而主机 ID 全为 1 的地址为广播地址,不能分配给主机使用,所以实际上可以使用的地址数为 65534 个。

B 类 IPv4 地址的子网掩码为固定的255.255.0.0,因为 B 类地址中网络 ID 部分是最高的两字节,每个字节均为 8 个连续的 1,转换成十进制后每个字节就是 255 了。

        C 类 IPv4 地址

C 类 IPv4 地址结构如下图所示,其网络 ID 占用最高的前三个字节,也就是第一个、第二个和第三个二进制 8 位组,而主机 ID 只占用最后的一个字节,也就是只有最后一个二进制 8 位组。
        C 类 IPv4 地址的网络ID的最高三位固定分别为 1、1、0,后面的 21 位可变。由此得知 C 类网络总数从 166 777 216()减少到 2 097 152()个。C 类地址中主机 ID 仅为 8 位,所以可用的主机 ID 数,也就是每个 C 类网络拥有的 IPv4 地址数为 256个。同样因为主机 ID 全为 0的地址为网络地址,而主机 ID 全为1的地址为广播地址,不能分配给主机使用,所以实际上可用的地址数为 254。

C 类单播地址的子网掩码为固定的255.255.255.0,因为 C 类地址中网络 ID 部分是最高的前 3 个字节,每个字节均为 8 个连续的 1,转换成十进制后每个字节就是 255 了。

下表总结了A、B 和 C三类 IPv4 地址的主要特征

类别 w 的值 网络 ID 部分 主机 ID 部分 网络 ID 数 每个网络的主机 ID 数
A 1-126 w x.y.z 126 16 777 214
B 128-191 w.x y.z 16 384 65 534
C 192-223 w.x.y z 2 097 152 254

        D 类 IPv4 地址

D 类 IPv4 地址是组播地址,用于 IPv4 组播通信中。通过组播 IPv4 地址,组播时源主机(组播源)只需发送一份数据,就可以使对应组播组(组播组使用 D IPv4 地址标识)中的一个主机或者多个主机收到这份数据的副本的通信方式,但只有组播组内的主机可以接收到该数据。

IP 组播技术有效地解决了单点发送多点接受的问题,实现了 IP 网络中点到多点的高效数据传输,能够大量节约网络带宽、降低网络负载。还可以利用网络的组播特性方便地提供一些新的增值服务,包括在线直播、网络电视、远程教育、远程医疗、网络电台、实时视频会议等互联网的信息服务领域。

D 类 IPv4 地址结构如下图所示,规定在最高字节中前四位分别固定为 1、1、1、0,组播地址范围为 224.0.0.0 ~ 239.255.255.255。

整个组播 IPv4 地址根据不同的应用环境和用途又可以分为预留组播地址、公用组播地址、临时组播地址、本地管理组播地址四大类。

        E 类 IPv4 地址

E 类地址输入 IANA 保留地址,不分配给用户使用,地址段范围为 240.0.0.0 ~ 247.255.255.255,其特征是最高 5 位分别是 1、1、1、1、0,如下图所示,也就是有 27 位是可变的。

        2.子网划分

        如上述所示,IP地址被分为网络号和主机号形成的二级结构。但是存在以下情况,二级层次结构就显得不够用了,例如一个机构中增加了新的物理网络;因为主机数量的增长要求把本地网络分成两个或多个不同的网络;因为距离增大,而要求把网络划分成更小的网络。为了避免另外再申请IP,以及方便管理,引入了子网划分技术。子网划分在本地网络上进行,外人看来仍然是一个网络。

子网划分是在两个层次的IP地址上,将主机号部分分为附加的网络号和主机号,这个附加的网络号称为子网号。这时IP地址可以看做有网络号、主机号、子网号三个层次组成。子网号和主机号组合称为IP地址的本地部分,有子网的网络中的主机知道子网的结构,其它网络上的主机不知道子网的结构,远程主机仍然把IP地址的本地部分看作一个主机号。                                                                                               

      3.子网掩码

        为了从IP地址中找出网络地址,引入了子网掩码的概念。将子网掩码和IP地址逐位进行“逻辑与”运算,即可以得到网络地址。子网掩码是一个网络或一个子网的重要属性,路由器对到来的IP数据报进行路由转发时,需要利用子网掩码来确定目的网络地址。A类网络的默认子网掩码为255.0.0.0,B类为255.255.0.0,C类为255.255.255.0。

        4.IP地址配置

        为主机配置IP地址可以采用两种方式:

手工配置方式:网管员手工配置IP地址。

自动配置方式:需要DHCP支持。

自动专用IP编址(Automatic Private IP Addressing,APIPA):Windows环境下,当DHCP客户无法找到DHCP服务器或DHCP服务器不能做出响应时,则DHCP客户使用微软预留的B类网络地址169.254.0.0,以及子网掩码255.255.0.0,自动配置IP地址和子网掩码。

        5.无类型IP编址与无类型域间路由

CIDR化的网络地址:指一个IP地址的网络部分在32位范围内可以是任意位长,而不受限于8、16、24位长。CIDR用斜线记法或前缀记法又称CIDR记法。例如200.23.16.0/20,表示前20为是网络号。

1.4.3 地址解析协议

地址解析协议(Address Resolution Protocol, ARP)把IP地址转换为物理地址。

1.4.4 逆向地址解析协议

无盘工作站可以读它的网卡,以得到它的物理地址。无盘工作站需要用物理地址来获取IP地址,为了完成这个工作需要使用逆向地址解析协议(RARP),并且局域网上至少有一个RARP服务器来支持无盘工作站的工作。

RARP服务器中有一个无盘工作站的物理地址与IP地址对应关系的映射表。

1.4.5 因特网控制报文协议

ICMP(Internet Control Message Protocol)因特网控制报文协议。它是IPv4协议族中的一个子协议,用于IP主机、路由器之间传递控制消息。控制消息是网络通不通、主机是否可达、路由是否可用等网络本身的消息。这些控制消息虽然不传输用户数据,但是对于用户数据的传递起着重要的作用。
        ICMP协议与ARP协议不同,ICMP靠IP协议来完成任务,所以ICMP报文中要封装IP头部。它与传输层协议(如TCP和UDP)的目的不同,一般不用来在端系统之间传送数据,不被用户网络程序直接使用,除了想Ping和Tracert这样的诊断程序。

ICMP消息类型

ICMP报告无法传送的数据报的错误,并帮助对这些错误进行疑难解答。例如,如果IPv4不能将数据报传送到目标主机,则路由器上的或目标主机上的ICMP会向主机发送一条“无法到达目标”消息。ICMP协议只是试图报告错误,并对特定的情况提供反馈,最终并没有使IPv4成为一个可靠的协议。ICMP消息是以未确认的IPv4数据报传送的,它们自己也不可靠。

    ICMP报头格式

ICMP报文包含在IP数据报中,IP报头在ICMP报文的最前面。一个ICMP报文包括IP报头(至少20字节)、ICMP报头(至少八字节)和ICMP报文(属于ICMP报文的数据部分)。当IP报头中的协议字段值为1时,就说明这是一个ICMP报文。ICMP报头如下图所示。

ICMP封装成IP数据报,然后再传送给数据链路层。

常见的ICMP报文:相应请求;目标不可达,源抑制和超时报文;时间戳请求;

1.4.6 因特网组管理协议

因特网组管理协议(IGMP)是与多播有关的协议。在因特网中进行多播,需要有转发多播数据报能力的路由器,这些路由器的路由表使用多播路由选择协议进行更新。

IGMP不是多播路由选择协议,是组成员关系管理协议。IGMP协议把网络上所连接的主机的成员关系状态传送给多播路由器。

1.4.7 因特网的路由技术

路由选择就是指选择一条从源到目的的路径,计算这些路径的算法称为路由算法。在TCP/IP网络中,每个IP数据报都携带有源IP地址和目的IP地址。路由器通过检查IP数据报的目的IP地址,依据路由器中的路由表,决定该IP数据报的转发路由。因特网采用分层次的路由协议:内部网关协议和外部网关协议。

TCP/IP技术回顾(3)—网际层相关推荐

  1. 【网络】之TCP/IP 网络模型有哪几层

    TCP/IP 网络模型有哪几层 对于同一台设备上的进程间通信,有很多种方式,比如有管道.消息队列.共享内存.信号等方式,而对于不同设备上的进程间通信,就需要网络通信,而设备是多样性的,所以要兼容多种多 ...

  2. 简述TCP/IP四层体系结构及每层作用

    应该说是Internet四层体系结构 1.数据链路层 2.网络层 3.传输层 4.应用层 ,其中IP是在第二层网络层中,TCP是在第3层传输层中,Internet体系结构最重要的是TCP/IP协议,是 ...

  3. 【计算机网络复习】1.2.4 TCP/IP参考模型和5层参考模型

    TCP/IP参考模型和5层参考模型 一.OSI参考模型与TCP/IP参考模型 二.5层参考模型 一.OSI参考模型与TCP/IP参考模型 相同点: 1.都分层 2.基于独立的协议栈的概念 3.可以实现 ...

  4. TCP/IP模型及OSI七层参考模型各层的功能和主要协议

    注:网络体系结构是分层的体系结构,学术派标准OSI参考模型有七层,而工业标准TCP/IP模型有四层.后者成为了事实上的标准,在介绍时通常分为5层来叙述但应注意TCP/IP模型实际上只有四层. 1.TC ...

  5. tcp/ip协议包含哪几层[转]

    tcp/ip协议包含4层:1.应用层,位于TCP/IP协议的第一层,是直接为应用进程提供服务的:2.运输层,位于协议的第二层,在整个TCP/IP协议中起到了中流砥柱的作用:3.网络层,位于协议的第三层 ...

  6. TCP/IP 模型 与 OSI 七层模型的对应关系

    TCP/IP 模型与 OSI 七层模型 七层有底向上分别是:物理层.数据链路层.网络层.传输层.会话层.表示层.应用层. 简化后的四层分别是:主机到网络层(比特).网络层(数据帧).传输层(数据包). ...

  7. TCP/IP模型以及OSI七层参考模型各层的功能介绍和主要协议

    注:网络体系结构是分层的体系结构,学术派标准OSI参考模型有七层,而工业标准TCP/IP模型有四层.后者成为了事实上的标准,在介绍时通常分为5层来叙述但应注意TCP/IP模型实际上只有四层. 1.TC ...

  8. TCP/IP协议简述(OSI7层模型与TCP/IP协议)

    TCP/IP协议简述(OSI7层模型与TCP/IP协议) OSI7层模型与TCP/IP协议本身没有太直接的关联,从名字也不难看出.一个是作为标准体系.参考模型(这个参考模型中其实也是有一些具体协议的) ...

  9. TCP/IP协议与OSI七层模型

    TCP/IP协议与OSI七层模型 TCP/IP协议 TCP分层 细分TCP/IP协议族 TCP与UDP之间的区别 TCP三次握手 OSI七层模型 OSI七层模型以及各层作用 OSI 七层模型中每一层的 ...

最新文章

  1. WebKit、Gecko使用图形库
  2. CAS SSO对手机应用支持的一种思路
  3. Windows下MySql安装【图文】
  4. 浏览器页面关闭事件获取及处理--onbeforeunload
  5. 10W人都想知道的答案!可视化黑科技,这4个数据工具谁最厉害的?
  6. Log4j2 杀不死 Java
  7. viewport原理和使用和设置移动端自适应的方法(移动适应电脑)
  8. java sleep()和wait()的区别
  9. astar插件下载 就行_2020年视频编辑PR插件齐全了!包含了抠图调色磨皮降噪~
  10. visio画图常见问题解答
  11. 计算机怎么求地址线,如何计算地址线和数据线
  12. linux的scp命令突然速度变慢,scp连接缓慢的解决方法
  13. 小米三季报:手机不振,汽车加码
  14. Linux进程通信(一)——pipe管道
  15. 【0173】推荐6款最好使用的PostgreSQL GUI工具
  16. 2018最新手机cpu排行
  17. 【待续】Arduino踩坑手册-《中断故障排查指南》-中断、串口、定时器等片内硬件资源之间的冲突
  18. PowerPC Figure – PPC入门与优化
  19. 迅视财经 买买买却维权难?明星主播不能装无辜
  20. 简仪USB101口袋数据采集卡开箱即用测量软件—DAQWare for 简仪USB101全功能视频教程(共6集)

热门文章

  1. sha算法 哈希算法_SHA1哈希算法教程及其用法示例
  2. 数据分析金庸武侠经典人物,我们喜欢江湖中的这群人
  3. 防止首网页篡改 html,网站web前端的加密方式 防止数据被篡改
  4. python怎么进入虚拟环境_Python 中如何使用 virtualenv 管理虚拟环境
  5. html tab focus,tabindex解决div获得焦点focus()和失去焦点blur()的问题
  6. CIO应当牢记iPhone的七条安全建议
  7. 【腾讯TMQ】WIFI安全测试,其实不难
  8. r语言remarkdown展示图_为什么Markdown R有较大概率成为科技写作主流? ← 阳志平的个人网站::技术...
  9. 利用Biopython 快速根据pmid 来下载参考文献信息
  10. C++各种经典小游戏