网络基础知识

计算机网络出现的背景

计算机最初运行模式-独立模式

image-20240613202020472

随着计算机发展,逐渐演变为连接多太计算机以实现信息共享

计算机网络根据网络的规模大小,可以分为 LAN(局域网) 和 WAN(广域网)

LAN:

image-20240613202119074

WAN:

image-20240613202128366

最初的计算机网络是由几台计算机相连在一起形成的私有网络,随着这种私有网络的不断发展,越来越多的私有网络尝试互相连接来组成更大的私有网络,最终形成了不局限于公司或者部门内部,而是可以与互联网中任意一台计算机进行通信的网络。

计算机与网络发展的7个阶段

最初的计算机使用的系统是 批处理系统

批处理:事先将用户程序和数据装入卡带和磁盘,并由计算机按照一定的顺序读取,从而使用户所要执行的这些程序和数据能够一并批量得到处理的方式

image-20240613202624312

继批处理系统之后,出现的是分时系统

分时系统:多个终端与一个计算机相连,允许多个用户同时使用一台计算机的系统,以达到“一人一机”的目的

分时系统的重要特征:多路线、独占性、交互性、及时性

image-20240613202953825

分时系统的出现促进了像BASIC这样能够与计算机实现交互的编程语言的发展

image-20240613203055144

在分时系统中,计算机与每个终端之间用通信线路连接,这并不意味着计算机与计算机之间也已相互连接

在这种情况下,计算机之间想要交换数据,需要将数据保存到磁带、软盘等外部存储介质中,再将这些介质送到目的计算机才能实现数据转储

计算机之间通过通信线路相连,使用计算机通信技术,人们可以很轻松的读取另一台计算机的数据,进而大幅缩短了传送数据的时间

计算机间的通信显著提高了计算机的可用性。从此,计算机的发展进入了崭新的历史阶段,该阶段计算机更加侧重于满足使用者的需求,架构更加灵活的系统,且操作比以往更加人性化

曾经一直作为通信基础设施、支撑通信网络的电话商,随着互联网的快速发展,其地位也随着时间的推移为IP所取代,通过IP网,人们可以实现电话通讯、电视播放、还能实现计算机之间的通信

image-20240613203912868

计算机使用模式的演变

image-20240613203938577

TCP/IP是通信协议的统称

协议

互联网中常用的具有代表性的协议是 IP、TCP、HTTP等。局域网中常用的协议是IPX/SPX等

计算机网络体系结构将这些网络协议进行了系统的归纳。TCP/IP就是IP、TCP、HTTP等协议的集合。

image-20240613204212088

协议是计算机与计算机之间通过网络实现通信时事先达成的一种“约定”。这种“约定”使得不同厂商的设备、不同的CPU以及不同的操作系统组成的计算机之间,只要遵循相同的协议就能够实现通信。

有很多种协议,每一种协议都需要明确的界定它的行为规范

计算机之间的通信,需要从物理连接层面到应用程序的软件层面,各个组件都必须严格的遵循事先达成的约定才能实现真正的通信。此外每个计算机还需要装有实现通信的最基本功能的程序。

分组交换协议

分组交换是将大数据分解为一个个叫做包(Packet)的较小单位进行传输的方法。

image-20240614102014324

计算机通信会在每一个分组中附加上源主机地址和目标主机地址送给通信线路。这些发送端地址、接收端地址以及分组序号写入的部分被称为“报文首部”

一个较大的数据被分为多个分组时,为了标明每一个分组是原数据的哪一部分,就有必要将分组的序号写入包中。接收端会根据这个序号,再将每个分组按照序号重新装配为原始数据

通信协议中,通常会规定,报文首部应该写入那些信息,应该如何处理这些信息。

分组的发送方和接收方有必要对报文的首部和内容保持一致的定义和解释


ISO制定了OSI国际化标准,对通信系统进行了标准化

TCP/IP是由IETF所建议的,致力于推进其标准化的一种协议


协议得以标准化也使得所有遵循协议的设备不再因计算机硬件或者操作系统的差异而无法通信。因此,协议的标准化也推动了计算机网络的普及


OSI通信模型是ISO在制定标准化OSI之前提出的作为通信协议设计指标的模型。

在这一模型中,每个分层都接收由它下一层所提供的特定服务,并且负责为自己的上一层提供特定服务。上下层之间进行交互所遵循的约定叫做“接口”同一层之间的交互所遵循的约定叫做“协议”。

分层可以将每个分层独立使用,即使系统中的某些分层发生变化,也不会波及整个系统。因此,可以构造一个扩展性和灵活性都很强的系统。此外,通过分层能够细分通信功能,更容易单独实现每个分层的协议,并界定每个分层的具体责任和义务。这些都属于分层的优点。

相对应:过分的模块化、使处理变得更加沉重以及每个模块都不得不实现相似的处理逻辑。

image-20240614102453723

image-20240614102512598


OSI参考模型是为了明确的定义每一层的作用,定义了每一层作用的是协议,协议是约定,协议的具体内容是规范,日常使用的就说遵循各个协议具体规范的产品和通信手段

OSI协议 是由 OSI参考模型为基础界定了每个阶层的协议和每个阶层之间接口相关的标准。

image-20240614102742521

OSI各层分工

image-20240614103005816
  • 应用层:为应用程序提供服务并规定应用程序中通信的相关细节。包括文件传输、电子邮件、远程登陆等协议
  • 表示层:将应用处理的信息转换为适合网络传输的格式,或将来自下一层的数据转换为上层能够处理的格式。因此它主要负责数据格式的转换
    • 具体来说,就是将设备固有的数据格式转换为网络标准传输格式。
    • 使得不同设备对同一网络比特流的解释结果一致是本层次的主要作用
    • 即便是一段简单的文字流,也可以有许多复杂的编码格式。表示层之间的通信会附加首部信息,指明用到的编码
  • 会话层:负责建立和断开通信连接(数据流动的逻辑通路),以及数据的分割等数据传输相关的管理
    • 会话层不负责建立连接的具体操作,会话层负责的是如何建立连接,比如用户A发送5封邮件给用户B,这5封邮件的发送顺序可以是每发一封邮件建立一次连接,随后断开,也可以是建立一次连接,发送5封邮件,也可以是同时建立5个连接,同时发送。
    • 本层次的首部信息中记录着数据传送顺序的信息
  • 传输层:起着可靠传输的作用。只在通信双方节点上进行处理,而无需在路由器上进行处理
    • 确保主机A和主机B之间的通信并准备发送数据。这一过程叫做建立连接。
    • 进行建立连接或者断开连接的处理,在两个主机之间创建逻辑上的通信连接即是传输层的主要作用。
    • 此外,传输层为确保所传输的数据到达目标地址,会在通信的两端的计算机之间进行确认,如果数据没有到达,它会进行重发。进而保证数据传输的可靠性
  • 网络层:将数据传输到目标地址。目标地址可以是多个网络通过路由器连接而成的某一个地址。因此这一层主要负责寻址和路由选择
    • 网络层的作用是在网络与网络相互连接的网络中,将数据从发送端主机发送到接收端主句
    • TCP/IP中,网络层和传输层相互协作以确保数据包能够传送到世界各地,实现可靠传输
  • 数据链路层:负责物理层面上互连的、节点之间的通信传输
    • 将0、1序列划分为具有意义的数据帧发送给对端(数据帧的生成与接收)
    • 通信传输实际上是通过物理的传输介质实现的。数据链路层的作用是在这些通过传输介质互连的设备之间进行数据处理
    • 网络层负责将整个数据发送给最终目标地址,而数据链路层则只负责发送一个分段内的数据
  • 物理层:负责0、1比特流(0、1序列)与电压的高低、光的闪灭之间的互换
    • 将数据0、1转换为电压和脉冲光传输给物理的传输介质,而相互直连的设备之间使用地址实现传输。这种地址被称为“MAC地址”,本分层将包含MAC地址的首部信息附加到从网路层转发过来的数据上,并将其转发到网络。

七层通信

每个分层上,在处理由上一层传过来的数据时可以附上当前分层的协议所必须的“首部信息”。然后接收端对收到的数据进行数据“首部”与“内容”的分离,再转发给上一分层,并最终将发送端的数据恢复原样

image-20240614104143989

传输方式的分类

通过网络传输数据,大致可以分为面向有连接与面向无连接两种类型

面向有连接型:在发送数据之前,需要在收发主机之间连接一条通信线路。

面向无连接型:面向无连接型则不要求建立和断开连接。发送端可于任何时候自由的发送数据。反之,接收端也不知道自己会在何时从哪里收到数据

​ 在面向无连接的通信中,不需要确认对端是否存在,即使接收端不存在,或者无法接受数据,发送端也能将数据发送出去。

电路交换和分组交换

目前的网络通信大致分为两种

  • 电路交换
    • 交换机主要负责数据的中转处理,计算机首先被连接到交换机,交换机之间通过通信线路进行连接
    • 交换数据时,需要通过交换机与目标主机建立连接,建立好连接之后,用户可以一直使用,直到连接断开
    • 同一条通信链路同一时间只能建立一条连接,如果并发用户数超过交换机之间的通信链路数,就意味着通信无法实现
  • 分组交换
    • 将计算机需要发送的数据分解为多个数据包,按照一定顺序排序后发送,同时在每个数据包中标识发送端与接收端的地址,这样可以提高线路的利用率,同时多个主机可以使用同一线路,同一线路可以为多个用户提供服务。
    • 在分组交换中,由分组交换机(路由器)连接通信链路,发送端叫数据发送到路由器,路由器会将收到的分组数据换出道缓冲区,然后转发给目标计算机。因此,分组交换也叫 蓄积交换
    • 路由器收到数据后会按照顺序缓存到相应队列中,在以先进先出的顺序将它们一一发送出去
    • 分组交换中,计算机与路由器之间,路由器与路由器之间通常只有一条线路,这条线路是共享的
    • 根据网络状况不同,数据到达目标地址的时间有长有短。另外,路由器的缓存饱和或溢出时,可能发送分组数据丢失,无法发送到对端的情况

image-20240617155221335

image-20240617155848982

根据接收端数量分类

单播

一对一通信,早先的固定电话就是一个例子

广播

将1台主机的消息发送给与之相连的所有其他主机。具体的例子是电视播放,将电视信号发送给非特定的多个接收对象

进行广播的计算机有它们自己的广播范围。只有在这个范围内部的计算机才能收到相应的广播消息,这个范围叫做广播域

多播

与广播类似,也是将消息发送给多个接收主机。不同之处在于 多播要限定某一组主机作为接收端。 典型例子是 电视会议

任播

任播是在多台主机中选出一台作为接收端的一种通信方式。虽然这种方式与多播有相似之处,都是面向特定的一群主机,但是它的行为却与多播不同

通常,所被选中的那台特定主机,将返回一个单播信号,随后发送端主机会只跟这台主机进行通信。

例子:DNS根域名解析服务器

地址

在网络通信过程中,发送端和接收端的主体身份使用地址进行标识 eg:人们使用电话时,电话就是地址

TCP/IP通信中,使用MAC地址、IP地址、端口号等信息作为地址标识。在应用层中,甚至可以将电子邮件地址作为网络通信的地址

地址的唯一性

一个地址必须唯一的标识一个通信主体。在同一个通信网络中不允许有两个相同地址的通信主体存在。这也就是地址的唯一性。

image-20240617161100029

对于 广播、任播、多播来说,可以对这些由多个设备组成的一组通信赋予同一个具有唯一特性的地址,从而避免产生歧义,明确接收对象

地址的层次性

为了从海量的地址中高效的找出目标地址,地址除了唯一性外,还需要层次性

image-20240617161410817

MAC地址由设备的制作厂商针对每块网卡进行分别指定。人们可以通过制造商识别号、制造商内部产品编号产品通用编号确保MAC地址的唯一性。

MAC地址具备一定的层次性,但是这种层次性对于寻址没有任何作用,所以不能算作由层次的地址

因此,虽然MAC地址是真正负责通信的地址,但是在实际寻址过程中,IP地址必不可少


IP地址由主机号和网络号两部分组成,若主机号不同,但是网络号相同,说明他们处于同一个网段。

网络号相同的主机在组织结构、提供商类型和地域分布上都比较集中。

网络传输中,每个节点会根据分组数据的地址信息,来判断该报文应该由哪个网卡发送出去。为此,各个地址会参考一个发出接口列表

这这一点上 MAC寻址 和 IP寻址是一样的,MAC寻址参考的表叫做地址转发表,IP寻址参考的表叫做路由控制表。

MAC地址转发表中记录的是实际的MAC地址本身,而路由表中记录的IP地址则是集中了之后的网络号(网络号和子网掩码)

image-20240617162452643

网络的构成要素

构建一套网络环境要涉及到各种各样的电缆和网络设备。

image-20240617163029967

image-20240617163106881

通信媒介和数据链路

计算机之间通过电缆相互连接。电缆分为很多种,包括双绞线电缆、光纤电缆、同轴电缆、串行电缆等。根据数据链路的不同选用的电缆类型也不相同。

媒介本身可以被划分为电波、微波等不同类型的电磁波。

image-20240622143036716

传输速率:在数据传输的过程中,两个设备之间的数据流动的物理速度被称为传输速率。单位为bps (Bits Per Second,每秒比特数),也叫做带宽

主机之间的实际传输速率被称为 吞吐量,单位也是 bps

网卡

任何一台计算机连接网络时,必须要使用网卡(全称网络接口卡),网络接口卡(NIC)也被叫做网络适配器、网卡、LAN卡

计算机必须拥有网卡,才能够接入网络。

中继器

中继器是OSI模型的第1层– 物理层上延长网络的设备。将由电缆传过来的电信号或光信号经由中继器的波形调整和放大再传给另一个电缆。

image-20240622143718267

中继器两端可以连接不同的通信媒介,中继器可以负责两个媒介之间的转换

通过中继器进行的网络延长,其距离并非可以无限放大,例如一个10Mbps的以太网最多可以用4个中继器分段连接,而一个100Mbps的以太网则最多只能连两个中继器。

可以提供多个端口服务的中继器,被称为中继集线器或者集线器。

image-20240622144207120

网桥/2层交换机

image-20240622144328136

网桥是OSI模型的第2层–数据链路层面上的连接两个网络的设备。它能够识别数据链路层中的数据帧,并将这些数据帧临时存储于内存,再重新生成信号作为一个全新的帧转发给相连的另一个网段

数据链路的数据帧中有一个数据位叫做FCS,用以检验数据是否被正确送达目的地。网桥通过检查这个域中的值,将那些损坏的数据丢弃,从而避免发送给其他网段。此外。网桥还可以通过地址自学机制和过滤功能控制网络流量。

这里的地址是:MAC地址、硬件地址、物理地址和适配器地址,也就是网络上争对NIC分配的具体地址。

这些功能是OSI参考模型第2层的功能。因此,也把网桥称为2层交换机。

image-20240622145025638

自学机制:网桥会记住自己转发的所以数据帧的MAC地址,并保存到内存表中。由此,可以判断哪个网段中包含哪类MAC地址的设备。

image-20240622145151824

路由器/3层交换机

image-20240622145255329

路由器是再OSI模型的第3层– 网络层面上连接两个网络、并对分组报文进行转发的设备。网桥是根据物理地址(MAC)地址进行处理,而路由器/3层交换机则是根据IP地址进行处理的。因此,TCP/IP中的网络层地址就成了IP地址。

路由器还要分担网络负核的作用,甚至有些路由器具备一定的网络安全功能。

4-7层交换机

image-20240622145554833

4-7层交换机负责处理OSI模型从 传输层到应用层的数据。如果用TCP/IP分层模型来表述,4-7层交换机就是以TCP等协议的传输层以及其上面的应用层为基础,分析收发数据,并对其进行特定的处理。

常见的应用场景:负载均衡器,带宽控制,广域网络加速器,特殊应用访问加速以及防火墙等。

网关

image-20240622150053012

网关是OSI参考模型中负责将从传输层到应用层的数据进行转换和转发的设备,它与4-7层交换机一样都是处理传输层以上的数据,但是网关不仅转发数据还负责对数据进行检验,它通常会使用一个表示层或应用层网关,在两个不能直接通信的协议之间进行翻译,最终实现两者通信

用例:连接到互联网的手机和电脑之间互相发送邮件。 互联网和手机之间设置了一道网关。网关负责读取完各种不同的协议后,对它们逐一进行合理的转换,再将相应的数据转发出去。这样即使应用的是不同电子邮件的协议,计算机和手机之间也能互相发送邮件。

image-20240622150601397

类似的,在使用WWW的时候,为了控制网络流量和网络安全,有时候会使用代理服务器。

代理服务器也是网关的一种,称为应用网关。有了代理服务器,客户端和服务端之间无需在网络层上直接通信,而是从传输层到应用层对数据和访问进行各种控制和处理,防火墙就是一款通过网关通信,针对不同应用提高网络安全性的产品。

image-20240622151014658

image-20240622151024089

TCP/IP基础知识

TCP/IP的标准化

TCP/IP的具体含义

TCP/IP不是指 TCP 和 IP 两种协议。它指的是利用IP进行通信时所必须用到的协议群的统称。具体来说,IP或ICMP、TCP或UDP、TELNET或FTP、以及HTTP等都属于TCP/IP的协议。TCP/IP一词泛指这些协议,因此,有时也称TCP/IP为网际协议族

image-20240622151759865

TCP/IP的协议的标准化过程和其他的标准化过程有所不同,具有两大特点:一是具有开放性,二是注重实用性,即被标准化的协议能否被实际应用。

TCP/IP的协议由 IETF讨论制定,那些需要标准化的协议,被列入了RFC

标准化流程

image-20240622154120389

互联网基础知识

互联网的定义

互联网指的是将多个网络相连使其构成一个更大的网络,所以Internet一词本意为网际网。

互联网和TCP/IP的关系

互联网进行通信的时候,需要相应的网络协议,TCP/IP原本就是为使用互联网而开发指定的协议族

互联网的结构

互联网的每个网络都是由骨干网和末端网组成的。每个网络之间通过NOC(Network Operation Center 网络操作中心)相连。如果网络的运营商不同,它的网络连接方式和使用方法也会不同。连接这种异构网络需要有IX(Internet Exchange,网络交换机)的支持。

总之,互联网就是众多的异构的网络通过IX互连形成的一个巨型网络

image-20240622154830059

ISP和局域网

连接互联网需要向ISP和局域网提出申请。公司企业或一般家庭申请入网只要联系ISP签约即可。

TCP/IP 协议分层模型

TCP/IP与OSI参考模型

image-20240622155330191

OSI参考模型注重“通信协议必要的功能是什么”,而TCP/IP则更强调“在计算机上实现协议应该开发哪种程序”

硬件(物理层)

TCP/IP的最底层是负责数据传输的硬件。这种硬件就相当于以太网或电话线等物理层的设备。对于它的内容难以被统一定义,因为在物理层面上使用的传输媒介不同,网络的带宽、可靠性、安全性、延迟等都会有所不同。

网络接口层(数据链路层)

网络接口层是利用以太网中的数据链路层进行通信,可以将它当作是让NIC起作用的“驱动程序”

驱动程序是在操作系统与硬件之间起桥梁作用的软件。计算机的外围附加设备或拓展卡,不是直接插到电脑上或者电脑的拓展槽上就能马上使用的,还需要有相应的驱动程序的支持。

互联网层(网络层)

互联网层使用IP协议,它相当于OSI模型中的第3层网络层。IP协议基于IP地址转发分包数据。

image-20240622160122837

TCP/IP分层中的互联网层与传输层的功能通常由操作系统提供。由其是路由器,它必须得实现通过互联网转发分组数据包的功能。

此外,连接互联网的所有主机跟路由器必须实现IP的功能。其他连接互联网的网络设备(网桥、中继器或者集线器)就没必要一定实现IP或者TCP的功能

IP

IP是跨越网络传送数据包,使得整个互联网都能收到数据的协议。IP地址作为主机的标识,使得数据可以发送到地球的另一端

IP还隐含着数据链路层的功能。通过IP,相互连接的主机之间不论经过怎样的底层数据链路都能实现通信(数据链路对于IP协议来说是透明的)

IP是一种分组交换协议,但是IP不具备重发机制,属于非可靠性传输协议。

ICMP

IP数据包在发送途中一旦发送异常导致无法到达对端目标地址的时候,需要给发送端发送一个发送异常的通知。ICMP就是为这个功能定制的。

也被用来诊断网络的健康状况

ARP

从分组数据包中的IP地址中解析出物理地址(MAC地址)的一种协议。

传输层

TCP/IP的传输层的功能本身与OSI参考模型中的传输层类似。

image-20240622161143673

传输层最主要的功能就是能够让应用程序之间实现通信。计算机内部,通常同一时间运行着多个程序。为此,必须分清是哪些程序与哪些程序在进行通信。

识别这些应用程序的是端口号。

TCP

TCP是一种面向有连接的传输层协议,它可以保证两端通信主机之间的通信可达。TCP可以正确处理在传输过程中丢包、传输乱序等异常情况。此外,TCP还可以有效利用网络带宽,缓解网络拥堵

然而。为了建立与断开连接,有时候它至少需要7次发包收包。导致网络流量的浪费。此外,为了提高网络的利用率,TCP协议中定义了各种各样复杂的规范,因此不利于视频会议等场合使用

UDP

UDP常用于分组数据较少或者多播、广播通信以及视频通信等多媒体领域。

应用层(会话层以上分层)

TCP/IP分层模型中,将OSI参考模型中的会话层、表示层和应用层的功能都集中到了应用程序中实现。这些功能有时由一个单一的程序实现,有时也可能会由多个程序实现。因此,TCP/IP的应用层不仅仅要实现应用层的内容,还需要实现会话层和表示层的内容。

WWW

image-20240622165305416

浏览器与服务器之间通信所用的协议是HTTP(HyperText Transfer Protool)所传输的格式主要是HTML(HyperText Markup Language)。WWW中的HTTP属于OSI的应用层协议,而HTML属于表示层的协议。

E-Mail

image-20240622165258467

发送电子邮件的时候用到的协议是SMTP(Simple Mail Tranfer Protool)

电子邮件的格式由MIME协议拓展后,可以发送声音、图像等各式各样的信息。甚至还可以修改邮件文字的大小、颜色。这里提到的MIME属于OSI参考模型第6层–表示层

文件传输 FTP

image-20240622165252156

文件传输是指将保存在其他计算机硬盘上的文件转移到本地的硬盘上,或者将本地硬盘的文件传送到其他机器的硬盘上

该过程使用的协议叫做 FTP(File Transfer Protool),传输过程中可以选择使用二进制的方式还是文本方式

在FTP中传输文件需要用到两个连接,分别是发出传输请求时所需要的控制连接和实际传输数据时需要用到的数据连接。

TELNET与SSH (远程登陆)

远程登录是指登录到远程的计算机上,使那台计算机上的程序得以运行的一种功能。TCP/IP网络中远程登录常用TELNET和SSH两种协议。

SNMP(远程管理)

image-20240622165237988

在TCP/IP中进行网络管理的时候,采用SNMP(Simple Network Management Protocol)协议,使用SNMP管理的主机、网桥、路由器统称为SNMP代理

在SNMP代理端,保存着网络接口的信息、通信数据量、异常数据量以及设备温度等信息。这些信息可以通过MIB(Management Information)访问,因此,在TCP/IP的网络管理中,SNMP属于应用协议,MIB属于表示层协议。

TCP/IP分层模型的通信

每个分层都会为发送的数据附加一个首部,在这个首部中包含了改层必要的信息,如发送的目标地址以及协议相关信息。

包、帧、数据段、段、消息

包可以说是全能型述语。帧用于表示数据链路层中包的单位。数据包是IP和UDP等网络层以上的分层中包的单位。段则是TCP数据流中的信息。最后,消息是指应用协议中数据的单位

网络中传输的数据包由两部分构成:一部分是协议所要用到的首部,另一部分是上层传过来的数据。首部的结构由协议的具体规范详细定义。

例如,识别上一层协议的域应该从包的哪一位开始取多少个比特、如何计算校验和并插入包的哪一位等

同时,在数据包的首部,明确的标识 了协议应该如何读取数据。

数据包的发送

  1. 应用程序处理:首先,应用程序会做编码的处理,在发送的时候建立TCP连接,从而利用这个TCP连接发送数据,过程首先是将应用的数据发送给下一层的TCP,再做实际的转发处理。
  2. TCP模块处理:TCP根据应用的指示,负责建立连接、发送数据以及断开连接。TCP提供将应用层发来的数据顺利发送到对端的可靠传输
    1. TCP会在应用层数据的前端附加一个TCP首部。TCP首部中包括端口号和目标端口号、序号以及校验和。随后将附加了TCP首部的数据发送到IP层中
  3. IP模块的处理:IP将TCP传过来的TCP首部和TCP数据合起来当作自己的数据,并在TCP首部的前端加上自己的IP首部。
    1. IP包生成后,参考路由控制表决定接收此IP包的路由和主机。随后,IP包将被发送给连接这些路由器或主机网络接口的驱动程序,以实现真正发送数据。
    2. 如果不知道接收端的MAC地址,可以利用ARP查找,只要知道了对端的MAC地址,就可以将MAC地址和IP地址交给以太网的驱动程序,实现数据传输。
  4. 网络接口的处理:给发送过来的IP数据附加上以太网的首部并发送。
    1. 以太网首部中包含接收端MAC地址、发送到MAC地址以及标志以太网类型的以太网数据的协议。
    2. 根据以上信息产生的以太网数据包将通过物理层传输给接收端。发送处理的FCS由硬件计算,添加到包的最后。
    3. 设置FCS是为了判断数据包是否因为噪声而被破坏

数据包的接收

  1. 网络接口的处理:
    1. 收到以太网包后,首先从包的首部找到MAC地址判断是否为发给自己的包。如果不是则丢弃
    2. 如果是发送给自己的包,就查找以太网包首部中的类型域从而确定以太网协议所传送过来的数据类型。如果是IP包就交给IP处理,如果是ARP包就交给ARP处理,如果是未识别的包类型,则丢弃数据
  2. IP模块的处理
    1. 收到IP包后,做类似的处理,如果判断包中的IP地址和自己的相等,则接收数据并查找上一层的协议。如果上一层是TCP就将IP包首部之后的部分交给TCP处理:如果是UDP则将IP包首部后面的部分传给UDP处理。
    2. 对于有路由器的情况下,接收端地址往往不是自己的地址,此时,需要借助路由控制表,再调查应该送达的主机或路由器以后再转发数据
  3. TCP模块的处理:
    1. 首先会计算一下校验和,判断数据是否被损坏。然后检查是否再按照序号接收数据。最后检查端口号,确定具体的应用程序
    2. 数据接收完毕后,接收端发送一个“确认回执”给发送端。如果这个回执信息没有发送到发送端,发送端会认为接收端没有接收到数据而一直反复发送
  4. 应用程序的处理:
    1. 取出数据后,自定义处理逻辑

image-20240623091325311

数据链路

数据链路的作用

数据链路的协议定义了通过通信媒介互连的设备之间传输的规范。通信媒介包括了(双绞线电缆、同轴电缆、光纤、电播、以及红外线等介质)

计算机以0、1来表示信息,然而实际的通信媒介之间的处理是电压的高低、光的闪灭以及电波的强弱等信号。

物理层将这些信号与二进制0、1进行转换,数据链路层将这些信号集合为一个叫做帧的块,然后进行传输。

数据链路层运行的关键技术包括,MAC寻址、介质共享、非公有网络、分组交换、环路检测、VLAN(Virtual Local Area Network,虚拟局域网)等。

数据链路的传输方式:以太网、WLAN(Wireless Local Area Network,无限局域网)、PPP(Point to Point Protocol,点对点协议)

数据链路也可以被视为网络传输的最小单位。

在以太网和FDDI(Fiber Distributed Data Interface,光纤分布式数据接口)的规范中,不仅仅包含OSI参考模型的第2层数据链路层,也规定了第1层物理层的规格。

而在ATM(Asynchronous Transfer Mode,异步传输方式)的规范中,还包含了第3层网络层的一些功能。

image-20240623114234509

数据链路的段

数据链路的段是一个被分割的网络。但实际含义会有所不同。

这种情况下有两条数据链路:

- 	从网络层的角度看,它是一个逻辑上的网络。即,从网络层的立场出发,这两条网线组成一个段。
- 	从物理层的概念看,两条网线分别是物理上的两个物理,即,从物理层的立场出发,一条网线是一个段。

image-20240623114624686

网络拓扑:网络的连接和构成的形态称为网络拓扑(Topology)。

image-20240623114812836

数据链路相关的技术

MAC地址

MAC地址用于识别数据链路中互连的节点,在以太网、FDDI、WLAN、蓝牙设备中使用的都是相同规格的MAC地址

image-20240623115046246

MAC地址长48bit,结构如下

image-20240623115119271

MAC地址一般被烧入到ROM中。因此,任何一个网卡的MAC地址都是唯一的,在全世界都不会有重复。

image-20240623115235106

MAC地址中,3-24位表示厂商识别码,25-48位是厂商内部为识别每个网卡而用

共享介质性网络

从通信介质上看,网络可分为共享介质型和非共享介质型

共享介质型指 由多个设备共享一个通信介质的一种网络。最终的以太网和FDDI就是介质共享型网络。

共享介质型网络有两种介质访问控制方式:一种是争用方式,另一种是令牌传递方式。

  • 争用方式是指争夺获取数据传输的权力,也叫CSMA(载波监听多路访问)。这种方法通常令网络中的各个站采用先到先得的方式占用信道发送数据,如果多个站同时发送帧,则会产生冲突现象。也会导致网络拥堵与性能下降

image-20240623115800636

  • 一部分以太网采用了改良CSMA的另一种方式—–CSMA/CD方式。CSMA/CD要求每个站提前检查冲突,一旦发送冲突,则尽早释放信道。
    • 具体工作原理:
    • 如果载波信道上没有数据流动,则任何站都可以发送数据
    • 检查是否会发送冲突。一旦发送冲突,放弃发送数据,同时立即释放载波信道。
    • 放弃发送以后,随机延时一段时间,再重新争用介质,重新发送帧

image-20240623120535988

  • 令牌传递方式

    令牌传递方式是沿着令牌环发送一种叫做“令牌”的特殊报文,是控制传输的一种方式。只要获得令牌的站才能发送数据。这种方式有两种特点:一是不会有冲突,二是每个站都有通过平等循环获得令牌的机会。

    这种方式,一个站再没有收到令牌前不能发送数据帧,因此再网络不太拥堵的情况下数据链路的利用率达不到100%。为此,衍生了多种令牌传递的技术。

    image-20240623120911671

非共享介质网络

非共享介质网络是指不共享介质,是对介质采取专用的一种传输控制方式。在这种方式下,网络中的每个站直连交换机,由交换机负责转发数据帧。

此方式下,发送端与接收端不共享通信介质,因此很多情况下采取全双工通信方式。

ATM和以太网都采用这种传输控制方式。通过以太网交换机构建网络,从而使计算机与交换机端口之间形成一对一的连接,也就是实现全双工通信。

该方式还可以根据交换机的高级特性构建虚拟局域网(VLAN,Virtual LAN)、进行流量控制等。这种方式也有一个致命的缺陷,一旦交换机发生故障,与之相连的所有计算机之间都将无法通信。

image-20240625100210276

半双工通信和全双工通信

半双工是指:只发送或者只接收的通信方式。

全双工:在收发数据时,每个站有各自专用的通信介质,可以通过内部电缆,实现同时收发数据

image-20240625100426399

根据MAC地址转发

以太网交换机也叫交换集线器,这是一种将非介质共享型网络中所使用的交换机用在以太网中的技术

以太网交换机就是持有多个端口的网桥。根据数据链路层中每个帧的目标MAC地址,决定从哪个网络接口发送数据。这时所参考的、用以记录发送接口的表就叫做转发表

转发表的内容是自动生成的。数据链路层的每个通过点在接到包时,会从中将源MAC地址以及曾经接收该地址发送的数据包的接口作为对应关系记录到转发表中。这一过程也叫自学过程。

image-20240625101024609

由于MAC地址没有层次性,转发表的入口个数与整个数据链路中所有网络设备的数量有关。当设备数量增加时,转发表也会随着变大,检索转发表所用的时长也就越来越长。当连接多个终端时,有必要将网络分成多个数据链路,采用类似于网络层的IP地址一样对地址进行分层管理。

交换机转发的方式有两种,一种叫存储转发,另一种叫直通转发。

存储转发检查以太网数据帧末尾的FCS位后再转发。因此,可以避免发送由于冲突而被破坏的帧或者噪声导致的错误帧

直通转发只要得知目标地址即可转发,存在发送错误帧的可能,但延迟较低。

环路检测技术

为了解决环路问题。具体有生成树与源路由两种方式。

生成树方式:每个网桥必须在每1-10秒内互相交换BPDU(Bridge Protocol Data Unit)包,从而判断哪些端口使用哪些端口不使用,以便消除环路。一旦发生故障,则自动切换通信线路,利用那些没有被使用的端口继续进行传输。

缺点:IEEE802.1D中所定义的生成树方法,在发生故障网络切换的时候需要几十秒的时间。在IEEE802.1W中定义了一个叫RSTP(Rapid Spanning Tree Protocol)的方法,将问题恢复的耗时缩短到几秒以内。

源路由法:最早由IBM提出,该方法通过判断发送数据的源地址是通过哪个网桥实现传输的,并将帧写入RIF(Routing Information Field)。网桥根据这个RIF发送帧给目标地址。因此,即使网桥中出现了环路,数据帧也不会重复转发。

VLAN

进行网络管理的时候,时常会遇到分散网络负载、变换部署网络设备的位置等情况。采用VLAN技术,就不用实际修改网络布线,只需要修改网络结构即可。

VLAN通过利用交换机,将交换机按照其端口分成了多个网段,从而区分了广播数据传播的范围、减少了网络负载并提高了网络的安全性。

image-20240625104042588

image-20240625104102137

image-20240625104110145

以太网

以太网帧的格式

以太网帧前端有一个叫做前导码的部分,它由0、1数字交替组合而成。表示一个以太网帧的开始,也是网卡能够确保与其同步的标志。

前导码末尾是一个叫做SFD(Start Frame Delimiter)的域,它的值是 11 。这个域之后就是以太网的本体。前导码和SFD合起来占8个字节。

image-20240625104458236

image-20240625104509127

紧跟帧头后的是数据,一个数据帧所能容纳的最大数据范围是46 - 1500个字节。帧尾是一个叫做FCS(Frame Check Sequence,帧检验序列)的4个字节。

类型表明了以太网在上一层网络协议的类型。

image-20240625104750165

帧尾最后出现的FCS,可以检查帧是否有所损坏,FCS中保存了整个帧除以生成多项式的余数。FCS具备强大的检错能力,可以检测出大量的突发错误。

PPP

PPP(Point-to-Point Protocol)是指点对点,即一对一连接计算机的协议。PPP属于纯粹的数据链路层协议。

image-20240625105147801

PPPoE是在以太网的数据中加入PPP帧进行传输的一种方式。

LCP 和 NCP

在PPP中主要包括两个协议,一个是不依赖上层的LCP协议(Link Control Protocol),另一个是依赖上层的NCP协议(Network Control Protocol),如果上层为IP,此时的NCP也叫做IPCP(IP Control Protocol)

LCP主要负责建立和断开连接、设置最大接收单元(MRU,Maximum Receive Unit)、设置验证协议(PAP 或 CHAP)以及设置是否进行通信质量的监控。

IPCP则负责IP地址的设置以及是否需要TCP/IP首部压缩等

通过PPP连接时,通常需要对用户名密码进行验证,并且对通信双端进行双方向的验证。其验证协议有两种

  • PAP(Password Authentication Protocol):在连接建立的时候,通过两次握手进行用户名和密码的验证。其中密码以明文的方式传输。一般用于对于安全要求不是很高的环境。
  • CHAP(Challenge Handshake Authentication Protocol):使用一次性密码OTP(One Time Password),可以有效的防止窃听。此外,在建立连接之后还可以进行定期的密码交换,用来检验对端是否中途被替换。

PPP的帧格式

image-20240626101204525

标志码用来区分每个帧,在两个标志码中间不允许出现连续6个以上的“1”,因此在发送帧的时候,当连续出现5个“1”的时候,后面必须插入一个0。而当接收端在接收帧的时候,如果收到连续5个1,且后面跟着的是0,就必须删除这个0,这样,保证数据帧中数据部分最多出现5个连续的1,就可以通过标志码来区分帧的起始与终结。

插入或删除0的操作或FCS计算都交给计算机处理,PPP这种方式会给计算机带来大量的负担。

PPPoE

互联网接入服务商在以太网上通过PPPoE(PPP over Ethernet)提供PPP功能

通信线路由以太网模拟。由于以太网越来越普及,再加上它的网络设备与相应的NIC价格比较便宜,因此NIC可以提供一个单价较低的互联网接入服务。

采取PPPoE来管理以太网连接,可以利用PPP的验证功能使得各家ISP可以有效的管理终端用户的使用。

image-20240626101955520

其他数据链路

ATM

ATM(Asynchronous Transfer Mode)是以一个叫做信元(5字节首部加48字节数据)的单位进行传输的数据链路

其占用线路时间短,可以高效传输大容量数据,主要用于广域网连接。

特点:ATM是面向连接的数据链路,它允许同时与多个对端建立连接。ATM没有以太网和FDDI那种发送权限的限制。它允许在任何时候发送任何数据。因此,当大量计算机同时发送大量数据的时候容易引起网络拥堵甚至让网络进入收敛状态。为了防止这些现象,ATM也加入了限制带宽的细分功能。

image-20240626102451302

多个通过同一条电缆连接的设备叫做TDM(时分复用设备),TDM会将时间分为多个特定的时隙,TDM不论是否还有想要发送的数据,时隙会一直被占有,从而可能会出现很多空闲的时隙

ATM 扩展了 TDM,能够有效地提高线路的利用率。ATM在TDM 的时隙中放入数据时,并非按照线路的顺序而是按照数据到达的顺序放入,然而,按照这样的顺序存放的数据在接收端并不易辨认真正的内容。为此,发送端还需要附加一个5 字节的包首部,包含VPI(VirtualPath Identifier)、VCI(Virtual Channel Identifier)等识别码’用来标识具体的通信类型

ATM中信元传输所占用的时隙不固定,一个帧所占用的时隙数也不固定,而且时隙之间并不要求连续。这些特点可以有效减少空闲时隙,从而提高线路的利用率。只不过需要额外附加5个字节的首部,增加了网络的开销,因此也在一定程度上降低了通信速度

image-20240626104643150

ATM 与上层协议

以太网中一个顿最大可传输 1500个字节,FDDI 可以最大传输 4352 字节。ATM的一个信元却只能发送固定的48字节数据。这48个字节的数据部分中若包含 IP 首部和TCP 首部,则基本无法存放上层的数据。为此,一般不会单独使用ATM,而是使用上层的 AAL(ATM Adapter Layer)。在上层为 IP 的情况下,则叫做AAL5,每个IP包被附加各层的协议首部以后,最多可以被分为192个信元发送出去。

image-20240626105152214

在整个192个信元中只要有一个丢失,那么整个 IP包就相当于被损坏,因此在 ATM 网中即使只是一个信元丢失,也要重新发送最多192个信元

这也是ATM到目前为止的最大弊端。一旦在网络拥堵的情况下,只要丢掉哪怕1%的信元也会导致整个数据都无法接收

在构建 ATM网络的时候,必须保证终端的带宽合计小于主干网的带宽,还要尽量保证信元不易丢失

image-20240626105340359

FDDI

FDDI(Fiber Distributed Data Interface)叫做分布式光线数据接口。

FDDI采用令牌(追加令牌)环的访问方式。令牌环访问方式在网络拥堵的情况下极容易导致网络收敛。

image-20240626105448661

Token Ring

令牌环网(Token Ring)源自 IBM开发的令牌环 LAN 技术,可以实现4Mbps或 16Mbps 传输速率。前面提到的 FDDI 实际上是扩展了 Token Ring 的一个产物。

HDMI

HDMI 是 High-Definition Multimedia Interface 的缩写,意为高清晰度多媒体接口。

公共网络

模拟电话线路

模拟电话线路其实就是利用固定电话线路进行通信。电话线中的音频带宽用于拨号上网。猫”的传输速率一般只在56kbps 左右,所以现在已逐渐被淘汰。

image-20240626105636838

VPN

虚拟专用网络(VPN)用于连接距离较远的地域。这种服务包括 IP-VPN 和广域以太网。

IP-VPN

意指在IP 网络(互联网)上建立VPN。网络服务商提供一种在 IP 网络上使用 MPLS 技术构建 VPN 的服务。其中MPLS(Multiprotocol Label Switching,多协议标签交换)在IP包中附加一个叫做标签(Label)的信息进行传输控制。

image-20240626105830972

除了使用服务提供商的 IP-VPN 服务之外,有时企业还可以在互联网上建立自已的 VPN',一般采用的是 IPsec'技术。该方法对 VPN 通信中的 IP 包进行验证和加密,在互联网上构造一个封闭的私有网络。

广域以太网

服务提供商所提供的用于连接相距较远的地域的一种服务。IP-VPN 是在 IP层面的连接,广域以太网则是在作为数据链路层的以太网上利用VLAN(虚拟局域网)实现 VPN 的技术。该技术还可以使用 TCP/IP 中的其他协议。

IP协议

IP即网际协议

TCP/IP 的心脏是互联网层。这一层主要由 IP(Internet Protocol)和 ICMP(Intermet Control Message Protocol)两个协议组成

相当于 OSI参考模型的第 3 层

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

网络层的主要作用是“实现终端节点之间的通信”。这种终端节点之间的通信也叫“点对点(end-to-end)通信”。

网络层的下一层一 一数据链路层的主要作用是在互连同一种数据链路的节点之间进行包传递。而一旦跨越多种数据链路,就需要借助网络层。网络层可以跨越不同的数据链路,即使是在不同的数据链路上也能实现两端节点之间的数据包传输。

image-20240626110140363

在互联网世界中,将那些配有 IP地址的设备叫做“主机”。

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

网络层与数据链路层的关系

数据链路层提供直连两个设备之间的通信功能。

image-20240626110329056

仔细分析一下机票和火车票,不难发现,每张票只能够在某一限定区间内移动。此处的“区间内”就如同通信网络上的数据链路。 整个全程的行程表的作用就相当于网络层。

IP 基础知识

IP大致分为三大作用模块,它们是 IP 寻址、路由(最终节点为止的转发)以及IP分包与组包

IP地址属于网络层地址

IP 地址用于在“连接到网络中的所有主机中识别出进行通信的目标地址”。

image-20240626110601634

不论一台主机与哪种数据链路连接,其 IP 地址的形式都保持不变。数据链路的类型对 IP 地址形式透明,这本身就是其中抽象化中的一点。

在网桥或交换集线器等物理层或数据链路层数据包转发设备中,不需要设置IP地址。因为这些设备只负责将 IP包转化为0、1比特流转发或对数据链路顿的数据部分进行转发,而不需要应对IP 协议。

路由控制

路由控制(Routing)是指将分组数据发送到最终目标地址的功能。一个数据包之所以能够成功地到达最终的目标地址,全靠路由控制。

image-20240626110730739

  • 发送数据至最终目标地址

Hop译为中文叫“跳”。它是指网络中的一个区间。IP 包正是在网络中一个个跳间被转发。因此 IP 路由也叫做多跳路由。在每一个区间内决定着包在下一跳被转发的路径。

image-20240626110811636

一跳的范围:一跳(1Hop)是指利用数据链路层以下分层的功能传输数据顿的一个区间。

以太网等数据链路中使用 MAC地址传输数据顿。此时的一跳是指从源 MAC地址到目标MAC地址之间传输顿的区间。

当某个IP包到达路由器时,路由器首先查找其目标地址,从而再决定下一步应该将这个包发往哪个路由器,然后将包发送过去。当这个IP 包到达那个路由器以后,会再次经历查找下一目标地址的过程,并由该路由器转发给下一个被找到的路由器。这个过程可能会反复多次,直到找到最终的目标地址将数据包发送给这个节点。

image-20240626111048369

路由控制表

为了将数据包发给目标主机,所有主机都维护着一张路由控制表(RoutingTable)。该表记录 IP 数据在下一步应该发给哪个路由器。IP 包将根据这个路由表在各个数据链路上传输。

image-20240626111122924

数据链路的抽象化

IP 是实现多个数据链路之间通信的协议。数据链路根据种类的不同各有特点。对这些不同数据链路的相异特性进行抽象化也是 IP 的重要作用之一。

数据链路的地址可以被抽象化为 IP地址。因此,对 IP 的上一层来说,不论底层数据链路使用以太网还是无线LAN亦或是 PPP,都将被一视同仁

不同数据链路有个最大的区别,就是它们各自的最大传输单位(MTU:Maximum Transmission Unit)不同

image-20240626112838333

MTU 的值在以太网中是 1500 字节,在 FDDI 中是 4352 字节,而 ATM 则为9180 字节。IP 的上一层可能会要求传送比这些 MTU 更多字节的数据,因此必须在线路上传送比包长还要小的 MTU。

为了解决这个问题,IP进行分片处理(IP Fragmentation)。顾名思义,所谓分片处理是指,将较大的IP包分成多个较小的 IP包。分片的包到了对端目标地址以后会再被组合起来传给上一层。即从IP的上次层看,它完全可以忽略数据包 在途中的各个数据链路上的MTU,而只需要按照源地址发送的长度接收数据包。IP就是以这种方式抽象化了数据链路层,使得从上层更不容易看到底层网络构造的细节。

IP属于面向无连接型

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

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

一是为了简化,二是为了提速。

为了提高可靠性,上一层的 TCP 采用面向有连接型

IP提供尽力服务(Best Effort),意指“为了把数据包发送到最终目标地址,尽最大努力。”然而,它并不做“最终收到与否的验证”。

提高通信的可靠性很重要。TCP 就提供这种功能。如果说 IP 只负责将数据发给目标主机,那么TCP则负责保证对端主机确实接收到数据

IP 地址的基础知识

IP地址的定义

IP 地址(IPv4 地址)由32 位正整数来表示。IP 地址在计算机内部以二进制方式被处理。然而,由于人类社会并不习惯于采用二进制方式,需要采用一种特殊的标记方式。那就是将32 位的 IP 地址以每8位为一组,分成4组,每组以“.”隔开,再将每组数转换为十进制数’。

image-20240626113551591

IP 地址并非是根据主机台数来配置的,而是每一台主机上的每一块网卡(NIC)都得设置 IP 地址。

image-20240626113627462

IP地址由网络和主机两部分标识组成

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

网络标识在数据链路的每个段配置不同的值。网络标识必须保证相互连接的每个段的地址不相重复。而相同段内相连的主机必须有相同的网络地址。IP 地址的“主机标识”则不允许在同一个网段内重复出现。

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

那么,究竟从第几位开始到第几位算是网络标识,又从第几位开始到第几位算是主机标识呢?

最初二者以分类进行区别。而现在基本以子网掩码(网络前缀)区分。

image-20240626113924048

image-20240626113932960

IP地址的分类

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

A类地址

A类 IP 地址是首位以“0”开头的地址。从第 1位到第8位是它的网络标识。用十进制表示的话,0.0.0.0~127.0.0.0是A类的网络地址。

A类地址的后24位相当于主机标识。因此,一个网段内可容纳的主机地址上限为16,777,214个。

B类地址

B类IP 地址是前两位为“10”的地址。从第1位到第 16 位是它的网络标识。用十进制表示的话,128.0.0.1~191.255.0.0是B类的网络地址。

B类地址的后16位相当于主机标识。因此,一个网段内可容纳的主机地址上限为65,534个

C类地址

C类 IP 地址是前三位为“110”的地址。从第1位到第24 位是它的网络标识。用十进制表示的话,192.168.0.0~239.255.255.0是C类的网络地址。

C类地址的后8位相当于主机标识。因此,一个网段内可容纳的主机地址上限为254 个。

D类地址

D类IP 地址是前四位为“1110”的地址。从第1位到第32位是它的网络标识。用十进制表示的话,224.0.0.0~239.255.255.255是D类的网络地址。

D类地址没有主机标识,常被用于多播。

image-20240626114328852

广播地址

广播地址用于在同一个链路中相互连接的主机之间发送数据

IP 地址中的主机地址部分全部设置为1,就成为了广播地址。

两种广播

广播分为本地广播和直接广播两种。

在本网络内的广播叫做本地广播。例如网络地址为192.168.0.0/24 的情况下,广播地址是192.168.0.255。因为这个广播地址的IP包会被路由器屏蔽,所以不会到达192.168.0.0/24以外的其他链路上。

在不同网络之间的广播叫做直接广播。例如网络地址为192.168.0.0/24 的主机向192.168.1.255/24的目标地址发送IP包。收到这个包的路由器,将数据转发给192.168.1.0/24,从而使得所有192.168.1.1~192.168.1.254的主机都能收到这个包。

image-20240626114552441

IP多播

同时发送提高效率

多播用于将包发送给特定组内的所有主机。由于其直接使用 IP 协议,因此也不存在可靠传输。

在人们使用多播功能之前,一直采用广播的方式。那时广播将数据发给所有终端主机,再由这些主机 IP 之上的一层去判断是否有必要接收数据。是则接收,否则丢弃。这种方式会给那些毫无关系的网络或主机带来影响,造成网络上很多不必要的流量。况且由于广播无法穿透路由,若想给其他网段发送同样的包,就不得不采取另一种机制。多播这种既可以穿透路由器,又可以实现只给那些必要的组发送数据包的技术就成为必选之路了。

image-20240626153359422

IP多播与地址

多播使用D类地址。因此,如果从首位开始到第4位是“1110”,就可以认为是多播地址。而剩下的28 位可以成为多播的组编号。

从224.0.0.0到239.255.255.255 都是多播地址的可用范围。其中从224.0.0.0到224.0.0.255的范围不需要路由控制,在同一个链路内也能实现多播。而在这个范围之外设置多播地址会给全网所有组内成员发送多播的包

此外,对于多播,所有的主机(路由器以外的主机和终端主机)必须属于224.0.0.1的组,所有的路由器必须属于224.0.0.2的组。

利用 IP 多播实现通信,除了地址外还需要 IGMP 等协议的支持。

既定已知的多播地址

子网掩码

分类造成浪费?

一个 IP 地址只要确定了其分类,也就确定了它的网络标识和主机标识。例如A类地址前8位(除首位“0”还有7位)、B类地址前16位(除首位“10”还有14位)、C类地址前24位(除首位“110”还有21位)分别是它们各自的网络标识部分。

直接使用A类、B类、C类地址就显得浪费资源。为此,人们已经开始一种新的组合方式以减少这种浪费。

子网与子网掩码

现在,一个IP 地址的网络标识和主机标识已不再受限于该地址的类别,而是,由一个叫做“子网掩码”的识别码通过子网网络地址细分出比 A类、B类、C 类更小粒度的网络。这种方式实际上就是将原来 A类、B类 C类等分类中的主机地址部分用作子网地址,可以将原网络分为多个物理网络的一种机制。

自从引人了子网以后,一个 IP 地址就有了两种识别码。一是 IP 地址本身,另一个是表示网络部分的子网掩码。子网掩码用二进制方式表示的话,也是一个32位的数字。它对应IP 地址网络标识部分的位全部为“1”,对应 IP 地址主机标识的部分则全部为“0”。由此,一个IP 地址可以不再受限于自已的类别,而是可以用这样的子网掩码自由地定位自已的网络标识长度。当然,子网掩码必须是 IP地址的首位开始连续的“1”

对于子网掩码,目前有两种表示方式

以下是其中一种表示方法,它将 IP 地址与子网掩码的地址分别用两行来表示。

image-20240626155501324

另一种表示方式如下所示。它在每个IP 地址后面追加网络地址的位数’用“/”隔开。

image-20240626155527090

不难看出,在第二种方式下记述网络地址时可以省略后面的“0”。例如172.20.0.0/16跟172.20/16其实是一个意思。

子网掩码可以灵活指定网络标识的长度

CIDR 与 VLSM

人们采用任意长度分割 IP 地址的网络标识和主机标识。这种方式叫做 CIDR意为“无类型域间选路”。由于 BGP(Border Gateway Protocol,边界网关协议)对应了CIDR,所以不受IP 地址分类的限制自由分配。

根据 CIDR,连续多个 C类地址就可以划分到一个较大的网络内。CIDR 更有效地利用了当前 IPv4 地址,同时通过路由集中降低了路由器的负担。

image-20240626160658527

将8个C类地址合并为一个网络。

image-20240626160834311

在 CIDR被应用到互联网的初期,网络内部采用固定长度的子网掩码机制。如果全部采用统一标准,就难以架构一个高效的网络结构。为此人们提出组织内要使用可变长度的、高效的IP 地址分配方式。

于是产生了一种可以随机修改组织内各个部门的子网掩码长度的机制 VLSM(可变长子网掩码)。它可以通过域间路由协议转换为RIP2以及OSPF实现。根据VLSM可以将网络地址划分为主机数为500个时子网掩码长度为/23,主机数为50个时子网掩码长度为/26。从而在理论上可以将IP 地址的利用率提高至50%。

全局地址与私有地址

随着互联网的迅速普及,IP 地址不足的问题日趋显著。如果一直按照现行的方法采用唯一地址的话,会有 IP 地址耗尽的危险。

于是就出现了一种新技术。它不要求为每一台主机或路由器分配一个固定的IP 地址,而是在必要的时候只为相应数量的设备分配唯一的 IP 地址。

尤其对于那些没有连接互联网的独立网络中的主机,只要保证在这个网络内地址唯一,可以不用考虑互联网即可配置相应的 IP 地址。

使让每个独立的网络各自随意地设置 IP 地址,也可能会有问题。于是又出现了私有网络的 IP地址。它的地址范围如下所示:

image-20240626162506843

包含在这个范围内的IP 地址都属于私有 IP,而在此之外’的 IP 地址称为全局IP。

私有 IP 最早没有计划连接互联网,而只用于互联网之外的独立网络。然而,当一种能够互换私有 IP 与全局 IP 的 NAT技术诞生以后,配有私有地址的主机与配有全局地址的互联网主机实现了通信。

现在有很多学校、家庭、公司内部正采用在每个终端设置私有 IP,而在路由器(宽带路由器)或在必要的服务器上设置全局 IP 地址的方法。而如果配有私有 IP 的地址主机连网时,则通过 NAT进行通信。

私有 IP 地址结合 NAT技术已成为现在解决 IP 地址分配问题的主流方案。它与使用全局 IP 地址相比有各种限制。为了解决这些问题 IPv6 出现了。然

image-20240626162800718

全局地址由谁决定

在世界范围内,全局 IP 由 ICANN'进行管理,在日本则由一个叫做 JPNIC的机构进行管理,它是日本国内唯一指定的全局 IP 地址管理的组织。

随着 ISP 的出现,人们在向 ISP 申请接入互联网的同时往往还会申请全局.IP 地址。在这种情况下,实际上是 ISP 代替用户向 JPNIC 申请了一个全局 IP地址。

对于 FTTH 和 ADSL的服务,网络提供商直接给用户分配全局 IP 地址,并且用户每次重连该IP地址都可能会发生变化。这时的 IP地址由提供商维护,不需要用户亲自申请全局IP地址。

不过现在,普遍采用的一种方式是,在 LAN 中设置私有地址,通过少数设置全局IP地址的代理服务器结合NAT 的设置进行互联网通信。这时 IP地址个数就不限于LAN中主机个数而是由代理服务器和 NAT 的个数决定。

网络技术人员可以通过检查 ICMP 包、利用 traceroute 等命令定位发生异常的设备或线路最近的 IP 地址。

这种方法就叫做 WHOIS。WHOIS 提供 查询IP地址、AS编号以及搜索域名分配登记和管理人信息的服务。

路由控制

发送数据包时所使用的地址是网络层的地址,即 IP 地址。仅仅有 IP 地 址还不足以实现将数据包发送到对端目标地址,在数据发送过程中还需要类似于 “指明路由器或主机”的信息,以便真正发往目标地址。

保存这种信息的就是路由控制表(Routing Table)。实现 IP 通信的主机和路由器都必须持有一张这样的 表。它们也正是在这个表格的基础上才得以进行数据包发送的。

该路由控制表的形成方式有两种:一种是管理员手动设置,另一种是路由器与其他路由器相互交换信息时自动刷新。前者也叫静态路由控制,而后者叫做动态路由控制。为了让动态路由及时刷新路由表,在网络上互连的路由器之间必须 设置好路由协议,保证正常读取路由控制信息。

IP 没有制作路由控制表的机制。该表是由一个叫做“路由协议”的协议制作而成

IP地址与路由控制

image-20240626163336079

路由控制表中记录着网络地址与下一步应该发送至路由器的地址。

在发送 IP包时,首先要确定IP 包首部中的目标地址,再从路由控制表中找到与该地址具有相同网络地址的记录,根据该记录将IP包转发给相应的下一个路由器。如果路由控制表中存在多条相同网络地址的记录,就选择一个最为吻合的网络地址。所谓最为吻合是指相同位数最多的意思。

默认路由:默认路由是指路由表中任何一个地址都能与之匹配的记录。默认路由一般标记为0.0.0.0/0或 default²。这里的0.0.0.0/0并不是指 IP 地址是0.0.0.0。由于后面是“/0”,所以并没有标识IP 地址。

主机路由:“IP 地址/32”也被称为主机路由(Host Route)。例如,192.168.153.15/32~ 就是一种主机路由。它的意思是整个IP地址的所有位都将参与路由。进行主机路由,意味着要基于主机上网卡上配置的IP地址本身,而不是基于该地址的网络地址部分进行路由。

主机路由多被用于不希望通过网络地址路由的情况。

环回地址:环回地址是在同一台计算机上的程序之间进行网络通信时所使用的一个默认地址。计算机使用一个特殊的 IP 地址127.0.0.1 作为环回地址。与该地址具有相同意义的是一个叫做 localhost 的主机名。使用这个 IP或主机名时,数据包不会流向网络。

路由控制表的聚合

利用网络地址的比特分布可以有效地进行分层配置。对内即使有多个子网掩码,对外呈现出的也是同一个网络地址。

路由表越大,管理它所需要的内存 和 CPU也就越多。并且查找路由表的时间也会越长

在聚合之前需要6条路由记录,聚合之后只需要2条记录。例子中路由器 C 正是将已知 192.168.2.0/24 与 192.168.3.0/24的网络这一信息聚合成为对“192.168.2.0/23的网络也已知”

image-20240626164036648

IP分割处理与再构成处理

数据链路不同,MTU则相异

每种数据链路的 MTU 之所以不同, 是因为每个不同类型的数据链路的使用目的不同。使用目的不同,可承载的 MTU 也就不同。

image-20240626164257432

报文的分片与重组

任何一台主机都有必要对 IP 分片(IP Fragmentation)进行相应的处理。分片往往在网络上遇到比较大的报文无法一下子发送出去时才会进行处理。

经过分片之后的 IP 数据报在被重组的时候,只能由目标主机进行。路由器虽然做分片但不会进行重组。

这样的处理是由诸多方面的因素造成的。例如,现实当中无法保证IP 数据报是否经由同一个路径传送。因此,途中即使等待片刻,数据包也有可能无法到达目的地。此外,拆分之后的每个分片也有可能会在途中丢失。即使在途中某一处被重新组装,但如果下一站再经过其他路由时还会面临被分片的可能。这会给路由器带来多余的负担,也会降低网络传送效率。出于这些原因,在终结点(目标主机)端重组分片了的 IP数据报成为现行的规范。

image-20240626164530968

路径MTU发现

在分片处理中,一旦某个分片丢失,则会造成整个 IP数据报作废。为 了避免此类问题,TCP 的初期设计还曾使用过更小的分片进行传输。其结果是网路的利用率明显下降。

为了应对以上问题,产生了一种新的技术“路径 MTU 发现”(Path MTU Discovery)。所谓路径 MTU(Path MTU)是指从发送端主机到接收端主机之间不需要分片时最大 MTU 的大小。即路径中存在的所有数据链路中最小的 MTU。而路径 MTU发现从发送主机按照路径 MTU 的大小将数据报分片后进行发送。进行路径 MTU发现,就可以避免在中途的路由器上进行分片处理,也可以在 TCP 中发送更大的包。现在,很多操作系统都已经实现了路径 MTU 发现的功能。

image-20240626164832558

首先在发送端主机发送 IP数据报时将其首部的分片禁止标志位设置为1。根据这个标志位,途中的路由器即使遇到需要分片才能处理的大包,也不会去分片, 而是将包丢弃。随后,通过一个ICMP 的不可达消息将数据链路上 MTU 的值给发送主机。 下一次,从发送给同一个目标主机的 IP 数据报获得ICMP 所通知的 MTU 值以 后,将它设置为当前 MTU。发送主机根据这个 MTU 对数据报进行分片处理。如此反复,直到数据报被发送到目标主机为止没有再收到任何ICMP,就认为最后一 次 ICMP 所通知的 MTU 即是一个合适的 MTU 值。那么,当 MTU 的值比较多时, 最少可以缓存~约 10 分钟。在这10 分钟内使用刚刚求得的 MTU,但过了这 10 分 钟以后则重新根据链路上的 MTU 做一次路径 MTU 发现。 前面是 UDP 的例子。那么在 TCP 的情况下,根据路径 MTU 的大小计算出最大段长度(MSS),然后再根据这些信息进行数据报的发送。因此,在TCP中如 果采用路径 MTU 发现,IP 层则不会再进行分片处理。

image-20240626165047941

IPv6

IPv6(IP version 6)是为了根本解决 IPv4 地址耗尽的问题而被标准化的网际 协议。IPv4 的地址长度为 4个8位字节,即 32 比特。而 IPv6 的地址长度则是原来的4倍,即128 比特¥,般写成8个16 位字节。 

一般人们将 128 比特 IP 地址以每 16 比特为一组,每组用冒号(“:”)隔开进行标记。而且如果出现连续的0时还可 以将这些0省略,并用两个冒号(“::”)隔开。但是,一个IP地址中只允许出 现一次两个连续的冒号。

IPv6地址的结构

IPv6类似 IPv4,也是通过 IP 地址的前几位标识 IP地址的种类。

在互联网通信中,使用一种全局的单播地址。它是互联网中唯一的一个地址,

限制型网络,即那些不与互联网直接接人的私有网络,可以使用唯一本地地 址。该地址根据一定的算法生成随机数并融合到地址当中,可以像 IPv4 的私有地 址一样自由使用。

在不使用路由器或者在同一个以太网网段内进行通信时,可以使用链路本地单播地址。

而在构建允许多种类型 IP地址的网络时,在同一个链路上也可以使用全局单播地址以及唯一本地地址进行通信。

image-20240626165418197

image-20240626165432617

全局单播地址是指世界上唯一的一个地址。它是互联网通信以及各个域内部通信中最为常用的一个 IPv6 地址。现在IPv6 的网络中所使用的格式为,n = 48,m=16 以及128-n-m=64。即前64 比特为网络标识,后64 比特为主机标识。

image-20240626165510435

链路本地单播地址是指在同一个数据链路内唯一的地址。它用于不经过路由 器,在同一个链路中的通信。通常接口 ID 保存64 比特版的 MAC 地址。

image-20240626165537774

唯一本地地址是不进行互联网通信时所使用的地址。企业内部的网络与互联网通信时通常会通过NAT或网关(代理)进行。 而唯一本地地址正是在这种不联网或通过 NAT以及代理联网的环境下使用的。

image-20240626165612203

IPv6 分段处理

Pv6 的分片处理只在作为起点的发送端主机上进行,路由器不参与分片。这也是为了减少路由器的负荷,提高网速。因此,IPv6 中的“路径 MTU 发现”功 能必不可少。

IPv4 首部

通过 IP 进行通信时;·需要在数据的前面加人 IP 首部信息。IP 首部中包含着 用于 IP 协议进行发包控制时所有的必要信息。

image-20240626165730859

版本(Version)

由4 比特构成,表示标识 IP首部的版本号。IPv4 的版本号即为4,因此在这 个字段上的值也是“4”。

image-20240626165835581

首部长度(IHL:Internet Header Length)

由 4 比特构成,表明 IP 首部的大小,单位为4 字节(32 比特)。对于没有可选项的 IP包,首部长度则设置为“5”。也就是说,当没有可选项时,IP首部的长度为20字节(4×5=20)。

区分服务(TOS:Type Of Service)

由8比特构成,用来表明服务质量。

image-20240626170002340

这个值通常由应用指定。而且现在也鼓励这种结合应用的特性设定 TOS 的方法。然而在目前,几乎所有的网络都无视这些字段

DSCP 段与 ECN 段

DSCP(Diferential Services Codepoint,差分服务代码点)是 TOS(Type Of Service)的一部分。现在统称为 DiffServ,用来进行质量控制。如果3~5位的值为0,0~2位则被称作类别选择代码点。这样就可以像 TOS 的优先度那样提供8种类型的质量控级别。对于每一种级别所采取的措施则由提 供 DiffServ 的运营管理者制定。为了与 TOS 保持一致,值越大优先度也越高。如 果第5位为1,表示实验或本地使用的意思。

ECN(Explicit Congestion Notification,显式拥塞通告)用来报告网络拥堵情 况,由两个比特构成。

image-20240626170102561

第6 位的 ECT用以通告上层 TCP 层协议是否处理ECN。当路由器在转发 ECN 为1的包的过程中,如果出现网络拥堵的情况,就将 CE 位设置为1。

总长度(Total Length)

表示 IP 首部与数据部分合起来的总字节数。该字段长 16 比特。因此 IP 包的 最大长度为65535(=21°)字节。

由于有 IP分片处理,从 IP 的上一层的角度看,不论底层采用何种 数据链路,都可以认为能够以IP的最大包长传输数据。

标识(ID:Identification)

由16 比特构成,用于分片重组。同一个分片的标识值相同,不同分片的标识值不同。通常,每发送一个 IP 包,它的值也逐渐递增。此外,即使 ID 相同,如 果目标地址、源地址或协议不同的话,也会被认为是不同的分片。

标志(Flags)

由3比特构成,表示包被分片的相关信息。

image-20240626170301235

片偏移(FO:Fragment Offset)

由 13 比特构成,用来标识被分片的每一个分段相对于原始数据的位置。单位为8字节,因此最大可表示原始数据8×8192=65536字节的位置。

生存时间(TTL:Time To Live)

由8比特构成,它最初的意思是以秒为单位记录当前包在网络上应该生存的 期限。然而,在实际中它是指可以中转多少个路由器的意思。每经过一个路由器, TTL 会减少1,直到变成0 则丢弃该包。

TTL点8位,因此可以表示 0~255 的数字。因此二个包的 中转路由的次数不会超过$2^8 = 256$个。由此可以避免包在 网络内无限传递的问题。

协议(Protocol)

由8比特构成,表示 IP首部的下一个首部隶属于哪个协议。

image-20240626170447882

image-20240626170456494

首部校验和(Header Checksum)

由16 比特(2个字节)构成,也叫IP 首部校验和。该字段只校验数据报的首部,不校验数据部分。它主要用来确保 IP数据报不被破坏。

校验和的计算过程,首先要将该校验和的所有位置设置为0,然后以16比特为单位划分IP首部, 并用1补数‘计算所有16 位字的和。最后将所得到这个和的1补数赋给首部校验和字段。

通常计算机中对整数运算 采用2 补数的方式。但在校验 和的计算中采用1补数运算方 法。这样做的优点在手即使产 生进位也可以回到第1位,可 以防止信息缺失并且可以用 2 个0区分使用。

源地址(Source Address)

由32 比特(4个字节)构成,表示发送端IP地址。

目标地址(Destination Address)

由32比特(4个字节)构成,表示接收端IP地址。

可选项(Options)

长度可变,通常只在进行实验或诊断时使用。该字段包含如下几点信息:

。安全级别 ●源路径 ●路径记录 ●时间戳

填充(Padding)

也称作填补物。在有可选项的情况下,首部长度可能不是 32 比特的整数倍。 为此,通过向字段填充0,调整为32 比特的整数倍。

数据(Data)

存入数据。将 IP上层协议的首部也作为数据进行处理。

IPv6首部格式

IPv6 中为了减轻路由器的负担,省略了首部校验和字段。为了让64 位 CPU的计算机处理 起来更方便,IPv6 的首部及可选项都由8字节构成。

image-20240626170947690