计算机网络 3

编程入门 行业动态 更新时间:2024-10-09 19:14:12

<a href=https://www.elefans.com/category/jswz/34/1769818.html style=计算机网络 3"/>

计算机网络 3

计算机网络-----TCP/IP协议族

  • 网络层
    • IP 网际协议
      • 基础知识
      • IP协议首部格式
        • IPv4首部格式
        • IPv6首部格式
      • IP地址的网段划分
          • IP地址的分类
          • 子网与子网掩码
            • 子网寻址
            • 子网掩码
          • 特殊的IP地址
          • IPv6的必要性
          • IPv6的特点

本文接着 计算机网络 2 后面继续学习~~~

网络层

IP 网际协议

基础知识

IP (IPv4、 IPv6) 相当于OSI参考模型中的第3层——网络层。

网络层的主要作用是“实现终端节点之间的通信”。这种终端节点之间的通信也叫“ 点对点( end-to-end)通信”。从上一篇博客可知,网络层的下一层数据链路层的主要作用是在互连同一种数据链路的节点之间进行包传递。而一旦跨越多种数据链路,就需要借助网络层。网络层可以跨越不同的数据链路,即使是在不同的数据链路上也能实现两端节点之间的数据包传输

理解以下概念:

主机的定义应该是指“配置有IP地址,但是不进行路由控制的设备”。既配有IP地址又具有路由控制能力的设备叫做‘路由器”,跟主机有所区别。而节点则是主机和路由器的统称

路由控制:
路由控制(Routing)是指将分组数据发送到最终目标地址的功能。即使网络非常复杂,也可以通过路由控制确定到达目标地址的通路。一旦这个路由控制的运行出现异常,分组数据极有可能“迷失”,无法到达目标地址。因此,一个数据包之所以能够成功地到达最终的目标地址,全靠路由控制


IP属于面向无连接型

IP面向无连接。即在发包之前,不需要建立与对端目标地址之间的连接。上层如果遇到需要发送给IP的数据,该数据会立即被压缩成IP包发送出去。

在面向有连接的情况下,需要事先建立连接。如果对端主机关机或不存在,也就不可能建立连接。反之,一个没有建立连接的主机也不可能发送数据过来。

而面向无连接的情况则不同。即使对端主机关机或不存在,数据包还是会被发送出去。反之,对于一台主机来说,它会何时从哪里收到数据也是不得而知的。通常应该进行网络监控,让主机只接收发给自己的数据包。若没有做好准备很有可能会错过一些该收的包。因此,在面向无连接的方式下可能会有很多冗余的通信

为什么IP要采用面向无连接呢?

主要有两点原因:一是为了简化,二是为了提速。面向连接比起面向无连接处理相对复杂。甚至管理每个连接本身就是一个相当繁琐的事情。此外,每次通信之前都要事先建立连接,又会降低处理速度。需要有连接时,可以委托上一层提供此项服务。因此,IP为了实现简单化与高速化采用面向无连接的方式

IP协议首部格式

通过IP进行通信时,需要在数据的前面加入IP首部信息。IP首部中包含着用于IP协议进行发包控制时所有的必要信息。了解IP首部的结构,也就能够对IP所提供的功能有一个详细的把握。

IPv4首部格式

IPv4数据报格式:

  1. 版本(Version):由4比特构成,表示标识IP首部的版本号。IPv4的版本号即为4,因此在这个字段上的值也是“4”。此外,关于IP的所有版本在以下表中列出。
  2. 首部长度(IHL: Internet Header Length):由4比特构成,表明IP首部的大小,单位为4字节(32比特)。对于没有可选项的IP包,首部长度则设置为“5”。也就是说,当没有可选项时,IP 首部的长度为20字节(4x5 =20)。
  3. 区分服务 (TOS: Type Of Service):由8比特构成,用来表明服务质量。每一位的具体含义如下表所示。

    DSCP ( Differential Services Codepoint, 差分服务代码点)是TOS ( Type Of Service)的一部分。现在统称为DiffServ,用来进行质量控制。
    ECN (Explicit Congestion Notification, 显式拥塞通告)用来报告网络拥堵情况,由两个比特构成。
  4. 总长度(Total Length):表示IP首部与数据部分合起来的总字节数。该字段长16比特。因此IP包的最大长度为65535(=2^16)字节。目前还不存在能够传输最大长度为65535字节的IP包的数据链路。不过,由于有IP分片处理,从IP的上一层的角度看,不论底层采用何种数据链路,都可以认为能够以IP的最大包长传输数据。
  5. 图标识(ID: Identification):由16比特构成,用于分片重组。同一个分片的标识值相同,不同分片的标识值不同。通常,每发送一个IP包,它的值也逐渐递增。此外,即使ID相同,如果目标地址、源地址或协议不同的话,也会被认为是不同的分片。
  6. 标志(Flags):由3比特构成,表示包被分片的相关信息。每一位的具体含义请参考下表。
  7. 片偏移(FO: Fragment Offset):由13比特构成,用来标识被分片的每-一个分段相对于原始数据的位置。第一个分片对应的值为0。由于FO域占13位,因此最多可以表示8192( 2^13)个相对位置。单位为8字节,因此最大可表示原始数据8x8192 = 65536字节的位置。
  8. 生存时间(TTL: Time To Live):由8比特构成,它最初的意思是以秒为单位记录当前包在网络上应该生存的期限。然而,在实际中它是指可以中转多少个路由器的意思。每经过一个路由器,TTL会减少1,直到变成0则丢弃该包。
  9. 协议(Protocol ):由8比特构成,表示IP首部的下一个首部隶属于哪个协议。
  10. 首部校验和(Header Checksum):由16比特(2个字节)构成,也叫IP首部校验和。该字段只校验数据报的首部,不校验数据部分。它主要用来确保IP数据报不被破坏。校验和的计算过程,首先要将该校验和的所有位置设置为0,然后以16比特为单位划分IP首部,并用1补数计算所有16位字的和。最后将所得到这个和的1补数赋给首部校验和字段。
  11. 源地址(Source Address ):由32比特(4个字节)构成,表示发送端IP地址。
  12. 目标地址( Destination Address):由32比特(4 个字节)构成,表示接收端IP地址。
  13. 可选项(Options):长度可变,通常只在进行实验或诊断时使用。该字段包含如下几点信息:安全级别;源路径;路径记录;时间戳。
  14. 填充(Padding):也称作填补物。在有可选项的情况下,首部长度可能不是32比特的整数倍。为此,通过向字段填充0,调整为32比特的整数倍。
  15. 数据(Data):存人数据。将IP上层协议的首部也作为数据进行处理。
IPv6首部格式

IPv6数据报格式:

IPv6的IP数据首部格式如下图所示。相比IPv4已经发生了巨大变化。IPv6中为了减轻路由器的负担,省略了首部校验和字段。因此路由器不再需要计算校验和,从而也提高了包的转发效率。此外,分片处理所用的识别码成为可选项。为了让64位CPU的计算机处理起来更方便,IPv6的首部及可选项都由8字节构成。

  1. 版本(Version):与IPv4一样,由4比特构成。IPv6 其版本号为6,因此在这个字段上的值为“6”。
  2. 通信量类(Traffic Class):相当于IPv4的TOS (Type Of Service)字段,也由8比特构成。
  3. 流标号(Flow Label):由20比特构成,准备用于服务质量(QoS: Quality Of Service)控制。不使用QoS时每一位可以全部设置为0。
    在进行服务质量控制时,将流标号设置为一个随机数,然后利用一种可以设置流的协议RSVP ( Resource Reservation Protocol)在路由器 上进行QoS设置。当某个包在发送途中需要QoS时,需要附上RSVP预想的流标号。路由器接收到这样的IP包后先将流标号作为查找关键字,迅速从服务质量控制信息中查找并做相应处理。此外,只有流标号源地址以及目标地址三项完全一致时,才被认为是一个流。
  4. 有效载荷长度(Payload Length):有效载荷是指包的数据部分。IPv4 的TL ( Total Length)是指包括首部在内的所有长度。然而IPv6中的这个Playload Length不包括首部,只表示数据部分的长度。由于IPv6的可选项是指连接IPv6首部的数据,因此当有可选项时,此处包含可选项数据的所有长度就是Playload Length 。
  5. 下一个首部( Next Header):相当于IPv4中的协议字段。由8比特构成。通常表示IP的上一层协议是TCP或UDP。不过在有IPv6扩展首部的情况下,该字段表示后面第-一个扩展首部的协议类型。
  6. 跳数限制(Hop Limit):由8比特构成。与IPv4中的TTL意思相同。为了强调“可通过路由器个数”这个概念,才将名字改成了“Hop Limit"。数据每经过一次路由器就减1, 减到0则丢弃数据。
  7. 源地址( Source Address ):由128比特(8个16位字节)构成。表示发送端IP地址。
  8. 目标地址( Destination Address ):由128比特(8个16位字节)构成。表示接收端IP地址。

IP地址的网段划分

IP地址由“ 网络标识(网络地址)”和“主机标识(主机地址)”两部分组成。

如下图所示,网络标识在数据链路的每个段配置不同的值。网络标识必须保证相互连接的每个段的地址不相重复。而相同段内相连的主机必须有相同的网络地址。IP 地址的“主机标识”则不允许在同一个网段内重复出现。
由此,可以通过设置网络地址和主机地址,在相互连接的整个网络中保证每台主机的IP地址都不会相互重叠。即IP地址具有了唯一性。

IP地址的主机标识:
如下图所示,IP包被转发到途中某个路由器时,正是利用目标IP地址的网络标识进行路由。因为即使不看主机标识,只要一见到网络标识就能判断出是否为该网段内的主机。

IP地址的网络标识:

那么,究竟从第几位开始到第几位算是网络标识,又从第几位开始到第几位算是主机标识呢?
关于这点,有约定俗成的两种类型。最初二者以分类进行区别。而现在基本以子网掩码(网络前缀)区分。

IP地址的分类

IP地址分为五个级别,分别为A类、B类、C类、D类、E类。它根据IP地址中从第1位到第4位的比特列对其网络标识和主机标识进行区分。

A类: 网络号共8位,首位固定为 0,接下来连续的7位可以自由设定;主机号为24位;

B类: 网络号共16位,前两位固定为 1 0,接下来连续的14位可以自由设定;主机号为16位;

C类: 网络号共24位,前三位固定为 1 1 0,接下来连续的21位可以自由设定;主机号为8位;

D类: 为组播地址,共32位,前四位固定为 1 1 1 0;

E类: 为保留地址,共32位,前四位固定为 1 1 1 1;


IP地址的空间划分如下:

子网与子网掩码
子网寻址

根据上面的IP地址分类可知,网络标识相同的计算机必须同属于同一个链路。例如,架构B类IP网络时,理论上一个链路内允许6万5千多台计算机连接。然而,在实际网络架构当中,一般不会有在同一个链路上连接6万5千多台计算机的情况。因此,这种网络结构实际上是不存在的。
因此,直接使用A类或B类地址,确实有些浪费。随着互联网的覆盖范围逐渐增大,网络地址会越来越不足以应对需求,直接使用A类、B类、C类地址就更加显得浪费资源。为此,人们又采用了一种叫做子网寻址的方法,即假设当一个站点被分配了B类地址,那么该站点的管理员可以将B类地址的主机号部分继续分成两部分,分别为 子网号主机号,这两者所占的位数可以根据实际需求自由分配,例如分配给子网号8位,分配给主机号8位,即平分,结果如下图:

此时的站点可以支持 2 8 2^8 28=256 个子网,每个子网中最多可支持 2 8 2^8 28 − 2 = 254 台主机(每个子网的第一个地址和最后一个地址不会被使用)。
这样在站点内,路由器就可以根据子网号和主机号监测到不同子网的流量了,如下图所示:

上图中,该站点被分配了一个B类地址 128.32.x.x,而管理员此时选择将其继续划分为多个子网,如图中的子网1和子网2,它们分别是开始于 128.32.1 和 128.32.2,并且左右两台主机都分别属于各自的子网。

子网掩码

子网掩码是由一台主机或路由器使用的分配位,用以确定如何从一台主机对应的IP地址中获得网络和子网信息,更通俗点说,通过它可以确定一个IP地址的网络 /子网部分的结束和主机部分的开始。

子网掩码跟IP地址的长度相等(IPv4位32位,IPv6为128位),对于IPv4来说,子网掩码也是用点分四组十进制来表示的。当子网掩码用二进制表示时,结构非常简单且容易记忆,从左边开始由一段连续的1组成,紧接着又一段连续的0组成直到最后。其中连续的1的长度称为前缀长度,用 / 长度来表示。

举例各种类型的子网掩码:

如何使用子网掩码?
例如刚才举的例子,站点管理员将B类地址128.32 .x.x的主机位划分位8位的子网号和8位的主机号,那么他就会提前设置好一个长度为16+8 = 24的子网掩码,即255.255.255.0. 示前24位是网络 /子网部分,那么路由器在处理图中的IPv4地址128.32.1.14时,会先查看一下子网掩码, 此时将IP地址和子网掩码对应的位进行与运算即可获得该IP所处的是哪个子网,运算过程如下图:


结果中的 128.32.1.0 就是IP地址 128.32.1.14 所属的子网!!!

感谢老铁!!!参考文章

特殊的IP地址
  1. 将IP地址中的主机地址全部设为0, 就成为了网络号, 代表这个局域网;
  2. 将IP地址中的主机地址全部设为1, 就成为了广播地址, 用于给同一个链路中相互连接的所有主机发送数据包;
  3. 127.*的IP地址用于本机环回(loop back)测试,通常是127.0.0.1。
IPv6的必要性

IPv6(IP version6)是为了根本解决IPv4地址耗尽的问题而被标准化的网际协议。IPv4 的地址长度为4个8位字节,即32比特。而IPv6的地址长度则是原来的4倍,即128比特,一般写成8个16位字节。IPv6不仅仅能解决IPv4地址耗尽的问题,它甚至试图弥补IPv4中的绝大多数缺陷。

IPv6的特点

IPv6具有以下几个特点。这些功能中的一部分在IPv4中已经得以实现。然而,即便是那些实现IPv4的操作系统,也并非实现了所有的IPv4功能。这中间不乏存在根本无法使用或需要管理员介人才能实现的部分。而IPv6则将这些通通作为必要的功能,减轻了管理员的负担。

  1. IP地址的扩大与路由控制表的聚合。IP地址依然适应互联网分层构造。分配与其地址结构相适应的IP地址,尽可能避免路由表膨大。
  2. 性能提升。包首部长度采用固定的值(40 字节),不再采用首部检验码。简化首部结构,减轻路由器负荷。路由器不再做分片处理(通过路径MTU发现只由发送端主机进行分片处理)。
  3. 支持即插即用功能。即使没有DHCP服务器也可以实现自动分配IP地址。
  4. 采用认证与加密功能。应对伪造IP地址的网络安全功能以及防止线路窃听的功能(IPsec)。
  5. 日多播、Mobile IP成为扩展功能。多播和Mobile IP被定义为IPv6的扩展功能。由此可以预期,曾在IPv4中难于应用的这两个功能在IPv6中能够顺利使用。

更多推荐

计算机网络 3

本文发布于:2024-02-06 20:11:01,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1751174.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:计算机网络

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!