计算机网络

概述

计算机网络是将分散的计算机设备通过传输介质和通信协议连接起来,实现数据交换和资源共享的一种体系结构。

网络分类

覆盖范围

  • 局域网(LAN):通常覆盖一个较小的地理区域,如办公室、学校或家庭网络。
  • 城域网(MAN):覆盖一个城市或地区的范围。
  • 广域网(WAN):跨越很大的地理区域,可以覆盖多个国家或全球。
  • 个人区域网(PAN):覆盖一个人的活动范围,如个人电脑、移动电话和其他便携式设备。

网络的所有权

  • 公用网:由政府或私人公司运营,向公众提供服务,如互联网服务提供商(ISP)提供的网络。
  • 专用网:通常由一个组织拥有和维护,仅供该组织内部使用,如企业内部网络。

拓扑结构

  • 星型拓扑:所有设备通过中心节点(如交换机或集线器)连接。
  • 环型拓扑:设备通过点到点连接形成一个闭合环。
  • 总线型拓扑:所有设备通过一根共享的总线连接。
  • 网状拓扑:设备之间有多条直接连接,形成一个非平面网络结构。

技术

  • 有线路由器:通过有线(如以太网电缆)连接的网络。
  • 无线局域网(WLAN):通过无线电波或其他无线技术连接的网络。

速度和容量

  • 高速网络:数据传输速率高,能够支持大量数据的高速传输。
  • 低速网络:数据传输速率低,适合数据量较小的应用

服务类型

  • 以太网:一种广泛使用的局域网技术,基于CSMA/CD(载波侦听多路访问/碰撞检测)协议。
  • 令牌环:另一种局域网技术,使用令牌传递访问控制。

应用

  • 商业网络:用于商业活动,如电子商务、企业内部通信等。
  • 教育网络:用于学校和研究机构,支持教学、研究和学术合作。
  • 娱乐网络:提供娱乐服务,如在线游戏、视频流媒体等。

网络分层

开放系统互联模型(OSI模型)

OSI模型定义了一个七层的抽象框架,每个层级负责特定的任务,并提供接口与相邻的层级进行通信。每个层级都有特定的协议集合,用于实现相应层级的功能。

|-------|
| 物理层 |
| 数据链路层 |
| 网络层 |
| 传输层 |
| 会话层 |
| 表示层 |
| 应用层 |

  • 物理层(Physical Layer):传输比特流,物理介质相关的传输。
  • 数据链路层(Data Link Layer):传输帧,提供可靠的点对点通信。
  • 网络层(Network Layer):传输数据包,提供跨网络的路由和寻址。
  • 传输层(Transport Layer):提供端到端的可靠传输和错误处理。
  • 会话层(Session Layer):管理应用程序之间的通信会话。
  • 表示层(Presentation Layer):进行数据格式的转换和加密解密。
  • 应用层(Application Layer):提供与应用程序交互的接口。

互联网协议套件(TCP/IP模型):

TCP/IP模型是互联网上广泛使用的一种分层模型。尽管它与OSI模型有所不同,但两者之间有一定的相似之处。TCP/IP模型将网络分为四个层级:

|-------|
| 网络接口层 |
| 网络层 |
| 传输层 |
| 应用层 |

  • 网络接口层(Network Interface Layer):处理物理连接和数据帧的传输。
  • 网络层(Internet Layer):处理数据包的传输、路由和寻址。
  • 传输层(Transport Layer):提供端到端的数据传输服务,如 TCP 和 UDP。
  • 应用层(Application Layer):提供应用程序间的通信服务。

两种模型对比

层级数量:

OSI模型:OSI模型定义了七个层级,从物理层到应用层。

TCP/IP模型:TCP/IP模型定义了四个层级,从网络接口层到应用层。

发展历史:

OSI模型:OSI模型是由国际标准化组织(ISO)在20世纪70年代提出的。

TCP/IP模型:TCP/IP模型是在20世纪70年代到80年代早期由美国国防部高级研究计划局(ARPA)开发的。

标准化程度:

OSI模型:OSI模型是一个理论模型,没有得到广泛的商业实现。

TCP/IP模型:TCP/IP模型是互联网的基础,广泛应用于实际网络。

层级对应关系:

OSI模型和TCP/IP模型在各自的层级之间没有直接的一对一对应关系。但是,它们之间有相似的层级,例如 OSI 模型的网络层对应 TCP/IP 模型的网络层。

优点和缺点:

  1. OSI模型的优点和缺点:
  • 优点:OSI模型结构严谨,分层清晰,易于理解和扩展,为不同网络技术的演进提供了灵活性。

  • 缺点:由于标准化和商业实现上的复杂性,实际上没有完全采用OSI模型。它在实际网络中的应用相对较少。

  1. TCP/IP模型的优点和缺点:
  • 优点:TCP/IP模型是实际互联网的基础协议栈,被广泛采用和支持。它具有简单、稳定、高效的特点,适用于各种网络环境。

  • 缺点:TCP/IP模型的四层结构较简单,对于某些特定的网络需求可能缺乏灵活性。同时,由于长期使用和演化,它也存在一些安全性和扩展性方面的挑战。

总体而言,TCP/IP模型被认为是实际网络中最常用和成功的协议模型,而OSI模型则更多作为网络教育和研究的参考框架。然而,无论是OSI模型还是TCP/IP模型,两者都提供了在实现和管理计算机网络时的重要指导。

物理层

含义:负责在通信实体之间建立、维护和终止物理连接。物理层的主要功能是传输原始比特流,即电压或光信号,而不关心这些信号的含义。它确保数据可以在不同的设备之间通过物理媒介进行传输。

  1. 机械特性:物理层定义了接口的机械特性,包括连接器的形状、尺寸、引脚数目和排列、固定和锁定装置等。这些特性确保不同设备的接口可以物理地连接在一起。
  2. 电气特性:物理层定义了接口电缆各条线上的电压范围、阻抗匹配情况、传输速率和距离限制等电气特性。这些特性确保信号能够在电缆中有效地传输。
  3. 功能特性:物理层定义了接口电缆各条线的作用,解释了线上电平电压的意义,例如,哪些线用于发送信号,哪些线用于接收信号,以及如何区分数据线和控制线等。
  4. 过程特性:物理层定义了信号在信号线上传输的过程,以及不同功能事件的出现顺序。这包括信号如何被调制、编码、发送和接收,以及如何处理信号的同步和错误检测。
分类
导引型

包括双绞线、同轴电缆和光纤等,它们指导电磁波沿着固体媒体传播。

  • 双绞线:优点 是价格便宜,制作简单,传输距离较近,一般在几米到几十米之间,适合近距离传输。缺点是传输速率较慢,受外界干扰较大,如电磁干扰和串扰等,传输质量受距离和环境影响较大。
  • 同轴电缆:优点 是传输速率较高,传输距离远,质量较好,信号衰减小,适合较长距离的传输。此外,同轴电缆还可以同时传输多个数据通道,如数字视频、音频、数据等。缺点是制作成本较高,不适合布线使用,安装较为复杂。
  • 光纤:优点 是传输速率非常高,抗干扰能力强,保密性好,不容易被窃取。另外,光纤还有很好的透明度,能够传输视频和音频信号等多媒体信息。缺点 是安装较为复杂,成本较高,需要在通信协议上进行进一步改进才能实现与其他网络的兼容。

非导引型传输媒体:包括无线电波、微波、红外线和激光等,它们在没有固体媒体的自由空间中传播。

无线电波:

优点:

  • 能够传播很远的距离,适合长距离通信。
  • 穿透能力强,可以穿透建筑物和大部分物体。
  • 易于大规模部署,成本相对较低。
  • 适用于多种通信和广播应用,如无线电、电视和雷达。

缺点:

  • 传输速率相对较慢,不适合高速数据传输。
  • 容易被环境中的电磁干扰(EMI)影响。
  • 安全性较低,容易被截获和干扰。

微波:

优点:

  • 传输速率快,适用于高速数据传输,如卫星通信和Wi-Fi。
  • 传播距离远,适用于长距离通信。
  • 能以直线传播,不容易被地形阻挡。
  • 具有较好的方向性,可以聚焦成较小的传输区域。

缺点:

  • 穿透能力不如无线电波,容易被水和大气中的分子吸收。
  • 需要精确的对准,以保持信号的强度。
  • 对环境中的电磁干扰比较敏感。

红外线:

优点:

  • 传输速率快,适用于高速数据传输,如红外无线传输。
  • 可以传输较远的距离,并且不需要精确对准。
  • 不会穿透固体物质,适合室内和短距离通信。

缺点:

  • 容易被大气中的水分吸收,不适合室外或长距离通信。
  • 受环境光照影响较大,需要在暗环境下使用。
  • 设备的成本和复杂性可能较高。

激光:

优点:

  • 传输速率极高,适用于高速数据传输,如光纤通信。
  • 具有非常高的方向性,几乎不会散射,适合长距离传输。
  • 能量集中,可以用于高精度测量和切割。

缺点:

  • 对环境非常敏感,受大气、烟雾、尘埃等影响较大。
  • 设备成本高,需要专业人员进行操作和维护。
  • 安全隐患大,不当使用可能导致眼睛或皮肤受伤。

数据交换方式

电路交换(Circuit Switching)
  • 在通信双方之间建立一个专用的通信路径,即电路。

  • 在数据传输开始之前,需要建立连接,并在数据传输完成后释放连接。

  • 优点:实时性强,传输顺序固定,适合需要连续、稳定通信的应用,如电话。

  • 缺点:资源利用率低,线路在未使用时也被占用,且建立和释放连接的开销较大。

报文交换(Message Switching)
  • 每个报文(包括源地址、目的地址和数据)独立地从源端传输到目的端。

  • 报文通过存储转发的方式在网络节点之间传递。

  • 优点:资源利用率高,灵活性强,可以适应不同长度的报文和不同的传输速率。

  • 缺点:时延较大,实时性较差,不适合需要实时响应的应用。

分组交换(Packet Switching)
  • 将数据分割成固定大小的分组,每个分组包含源地址、目的地址和数据。

  • 分组通过存储转发的方式在网络节点之间传递。

  • 优点:资源利用率高,灵活性强,适用于突发式数据通信。

  • 缺点:时延较大,实时性较差,但比报文交换的时延小。

信元交换(Cell Switching)
  • 将数据分割成固定大小的信元,每个信元包含源地址、目的地址和数据。

  • 信元通过存储转发的方式在网络节点之间传递。

  • 优点:提供高质量的交换服务,适用于高速数据传输。

  • 缺点:技术复杂,成本较高。

数据链路层

含义:在网络中传输数据时,保证数据的完整传递,实现数据从一个节点到另一个节点的透明传输。它负责数据格式化、错误检测以及确保数据的传输,同时还可以处理拓扑变换。数据链路层的常见功能包括帧同步、流量控制、寻址和数据检验。

数据链路层提供的服务

1.无确认,无连接 服务

是一种尽力而为的传输服务,它不保证数据传输的可靠性和顺序性。在这种服务模式下,发送方将数据包发送到网络,而无需等待接收方的确认。如果数据包丢失或损坏,数据链路层不会进行任何恢复操作。这种服务模式通常用于对实时性要求较高的场景,

例如视频流和某些类型的语音通信,其中轻微的丢包可以接受,以保证信息的实时传输。

2.有确认,无连接 服务

通过发送确认和重传机制来确保数据传输的可靠性。在这种服务模式下,发送方在发送数据包后,会等待接收方的确认。如果数据包未收到确认,发送方会重发数据包。这种模式可以保证数据包的可靠传输,但可能会引入较大的传输延迟,因为需要等待确认和重传。有确认,无连接的数据链路层服务通常用于需要高可靠性的应用场景,如文件传输和存储等。

3.有确认,有连接 服务

通过建立一个稳定的连接来确保数据传输的可靠性 。在这种服务模式下,发送方和接收方之间首先建立一个连接,然后进行数据传输。数据链路层使用确认和重传机制来确保数据包的可靠传输。如果数据包丢失或损坏,接收方会发送一个否认信号,请求重发。这种模式可以保证数据包的可靠传输,但可能会引入较大的传输延迟,因为需要等待确认和重传。有确认、有连接的数据链路层服务通常用于需要高可靠性的应用场景,如文件传输和存储等。

成帧

比特填充的定界符法

这种方法的原理是在数据单元中出现特定的比特模式时,比如连续的五个"1",数据链路层就会在它们前面插入一个"0",作为填充位。这样做的目的是为了避免数据本身含有的特殊比特模式与帧的定界符发生混淆。

物理层编码违例

物理层编码违例(Physical Layer Encoding Violation,简称PLCV)是一种在物理层用于定界帧的技术,它通过在数据流中引入特定的编码违例来标识帧的开始和结束。这种方法适用于那些在数据中不会自然出现的信号模式,从而避免了在数据中嵌入特殊的定界符可能带来的复杂性。

差错控制

链路层存在一个问题:信道的噪声导致数据传输问题

数据链路层通常使用差错控制技术来确保数据的可靠传输。一种常用的差错控制技术是循环冗余检查(CRC),它可以在数据传输过程中检测并纠正错误。

另一种差错控制技术是自动重传请求(ARQ)。在这种方法中,发送端将数据发送给接收端,如果接收端检测到错误,它将发送一个请求要求发送端重新发送数据。这种方法通常需要使用一些协议,如停等协议、回退避让协议和指数退避协议等,以确定何时应该重新发送数据以及在何种程度上接受重复的数据。

此外,数据链路层还使用流量控制来管理数据流量,以避免接收端来不及处理数据。流量控制通常通过发送端和接收端之间的协议来实现,以避免发送端发送过快的数据导致接收端来不及处理。

总之,数据链路层的差错控制是通过使用各种协议和技术来确保数据的可靠传输。这些技术包括差错控制、流量控制和定时控制等,以确保数据的完整性和可靠性。

媒体接入控制(MAC,Medium Access Control)子层

媒体接入控制(MAC,Medium Access Control)子层是数据链路层的一个重要组成部分,它负责控制网络中的数据包在物理介质上的传输。MAC子层负责在多个网络设备之间分配共享介质的带宽,确保多个设备能够公平地访问介质,同时避免冲突和碰撞。

MAC子层使用一种称为"帧定界"的技术来区分不同的数据包,并确定数据包的起点和终点。这有助于设备正确地读取和解析数据包,并根据协议规范进行处理。

MAC子层还定义了各种机制来协调设备之间的竞争访问介质。其中,优先级机制可以确保高优先级的数据包优先发送,而避免低优先级的数据包因等待时间过长而丢失。此外,MAC子层还支持数据包的排队和重传,以便在发送失败时重新发送数据包。

MAC子层与物理层紧密相连,负责将数据链路层的数据包转换为可以在物理介质上传输的电信号。不同的物理介质需要不同的MAC子层协议,例如以太网、Wi-Fi、蓝牙和NFC等网络中使用的MAC协议各不相同。

网络层

概述

网络层是计算机网络层次结构中的一层,负责路由选择和数据包转发,位于传输层之下和物理层之上。在网络中,数据传输是通过数据包的形式进行的,网络层的主要任务是将低层的数据服务转换为网络层可以处理的形式,并负责将数据包从源地址发送到目的地址。

关键功能

网络层负责处理路由选择问题,即确定数据包从源地址到目的地址的最佳传输路径。这需要查找网络中的路由表,考虑各种因素,如路径的可靠性、延迟和带宽等。网络层也负责处理网络中的拥塞问题,当网络中的数据流量过大时,可能会发生拥塞。网络层通过流量控制、拥塞控制和差错控制等技术来避免数据包的丢失和损坏。

网络层协议

IP(Internet Protocol)、ICMP(Internet Control Message Protocol)、IGMP(Internet Group Management Protocol)和OSPF(Open Shortest Path First)等。IP是互联网的核心协议,负责将数据包从源地址发送到目的地址。路由器是执行网络层功能的设备,负责查找最佳路径并转发数据包。

IPv4协议及其相关技术

IPv4协议是互联网协议(Internet Protocol)的第四版,也是当前使用最广泛的网络协议。IPv4协议定义了数据包在网络中的如何传输、如何路由、以及如何寻址等规则。

IP地址

IPv4协议使用32位地址,可以表示2的32次方(约43亿)个不同的地址。地址通常表示为四组数字,每组由一个到三个数字组成,每组数字范围从0到255。这种地址结构使得IPv4协议成为互联网发展的关键。

  • 版本(Version):占4位,用于标识IP协议的版本。IPv4的版本号为4。
  • 首部长度(Header Length):占4位,表示IP报头的长度。由于IPv4报头的最小长度为20字节,所以首部长度的最小值为4(20字节/4字节为单位)。最大首部长度为60字节,对应的值为6。
  • 区分服务(Differentiated Services Field):占8位,用于提供服务质量(QoS)控制,包括优先级和延迟等参数。
  • 总长度(Total Length):占16位,表示整个IP数据包的长度,包括首部和数据。单位为字节。
  • 标识(Identification):占16位,用于标识IP数据包的唯一标识符,通常用于分片和重组。
  • 标志(Flags):占3位,用于控制分片和重组的行为。
  • 片偏移(Fragment Offset):占13位,用于指示分片数据包中的数据片段在原始数据包中的位置。
  • 生存时间(Time to Live, TTL):占8位,用于控制数据包在网络中的存活时间,防止数据包无限循环在网络中传输。
  • 协议(Protocol):占8位,用于标识数据包中的上层协议类型,如TCP、UDP等。
  • 首部校验和(Header Checksum):占16位,用于验证IP报头数据的完整性。
  • 源IP地址(Source Address):占32位,标识发送数据包的设备的IP地址。
  • 目的IP地址(Destination Address):占32位,标识数据包要发送到的设备的IP地址。
路由器和路由协议

路由器是负责在网络之间转发数据包的设备。IPv4协议的路由协议包括RIP、OSPF、BGP等。这些协议决定了数据包在网络中的路径和转发方式。

ARP(地址解析协议)

ARP协议用于将IP地址转换为物理地址。在网络通信中,发送方设备首先需要获取目标设备的物理地址,以便能够将数据包发送到正确的位置。ARP协议通过发送ARP请求和接收ARP响应来实现这一转换。

隧道技术

隧道技术是一种将数据包从一个网络传输到另一个网络的机制。在IPv4协议中,隧道技术通常用于将私有网络(如局域网)封装在公共网络(如互联网)中,从而实现数据的传输和通信。

NAT(网络地址转换)

NAT是一种网络地址和端口转换技术,用于在公共网络上隐藏内部网络的细节,从而保护内部网络的安全。IPv4协议中的NAT技术包括静态NAT、动态NAT、端口映射和PAT(网络地址转换与负载均衡)等。

IP地址

概述

IP地址(互联网协议地址)是分配给网络中每一个设备的唯一标识符,它定义了设备在互联网上的位置。IP地址是一个逻辑地址,它与设备的物理位置无关,这意味着无论设备移动到网络的哪个位置,其IP地址都不会改变。

分类
  • A类地址:基本格式为 0.0.0.x,最大范围从1.0.0.1到126.255.255.254。A类网络相对较少且首选为网络服务器或大的多目的应用。
  • B类地址:基本格式为 x.0.0.x,最大范围从128.0.0.1到191.255.255.254。对应的网络有16384个,由16384个B类地址网络组成。
  • C类地址:基本格式为 x.y.0.x,最大范围从192.0.0.1到223.255.255.254。对应的网络有2097152个,主要用于一般公司、学校、小型ISP等。
  • D类地址:基本格式为 x.x.x.f,D类地址用于多目的广播。主要用于多点通信和流媒体应用。
  • E类地址:基本格式为 x.x.x.x,通常用于实验和专项用途。也能用作多目的广播,但在IPv4中很少使用。

|--------------|-------------|------------------------------|
| 地址名 | 类型 | 用途 |
| 环回地址 | 127.0.0.1 | 用于测试和从本地主机外的任何应用程序向自身发送数据 |
| 本地地址和本地流广播地址 | 127.0.0.1/8 | 用于从本地主机到自己在网络中的目标,适用于单播和多播场景 |

子网划分

概念

子网划分是将一个大的IPv4网络地址分割成较小的、独立的网络地址段的过程,每个小网络段(子网)可以在同一物理网络上独立运行,也可以在不同的物理网络上运行,这取决于子网内设备之间的相互通信需求。

目的
  • 扩大可用IP地址数量:通过减少每个子网中的主机数量,可以增加可以创建的网络数量。
  • 增强网络管理:将物理位置接近的主机划分为同一个子网,可以简化网络管理,因为它们之间的通信可以通过本地网络进行。
  • 提高网络安全性:通过限制跨子网的通信,可以在一定程度上提高网络的安全性。
步骤
  1. 确定子网数量:根据需要创建的网络数量来确定子网位数。
  2. 计算子网掩码:通过增加子网位数,来计算新的子网掩码。例如,一个标准的C类网络(/24)的子网掩码是255.255.255.0。如果想要创建4个子网,可以将子网位数从8位增加到12位,新的子网掩码将是255.255.255.128。
  3. 分配IP地址:给每个子网分配一个独立的网络地址,并确保每个子网的主机部分有足够的IP地址供该子网内的设备使用。
  4. 分配默认网关:为每个子网配置一个默认网关,这样主机就可以将无法在本子网内找到的目的地数据包发送给默认网关,由默认网关负责转发。
  5. 测试和验证:在子网划分完成后,测试网络通信以确保每个子网之间的通信是按预期工作的。

举个例子

假设我们有一个C类IP地址:192.168.1.0/24。C类地址的标准子网掩码是255.255.255.0,这意味着前24位是网络地址,后8位是主机地址。 现在,我们想要将这个C类网络划分为4个子网。

步骤 1:确定子网位数 要创建4个子网,我们需要足够的位数来表示这4个子网。一个位可以表示2个可能的值(0或1),所以我们需要2位来表示4个子网(2^2 = 4)。

步骤 2:计算新的子网掩码 我们已经知道原始的子网掩码是255.255.255.0,现在我们需要将其修改为包含额外的2位子网位。这些位将添加到主机地址部分的末尾。

原始子网掩码的二进制形式是 :

11111111.11111111.11111111.00000000

我们需要添加2位到主机地址部分,这意味着将主机地址部分的末尾2位设置为1,其余位保持为0。结果是这样的:

11111111.11111111.11111111.11000000

转换回点分十进制,我们得到新的子网掩码是:

255.255.255.128

步骤 3 :分配子网地址和主机地址

现在,我们可以为每个子网分配一个唯一的网络地址,并为每个子网保留足够的地址空间以供使用。

原始网络地址是:192.168.1.0

新的子网地址将是从192.168.1.1到192.168.1.3,每个子网可以使用的第一个主机地址。

  • 第一个子网:192.168.1.1/25

  • 第二个子网:192.168.1.9/25

  • 第三个子网:192.168.1.17/25

  • 第四个子网:192.168.1.25/25

每个子网的主机地址范围将是:

  • 第一个子网:192.168.1.1到192.168.1.62

  • 第二个子网:192.168.1.9到192.168.1.126

  • 第三个子网:192.168.1.17到192.168.1.190

  • 第四个子网:192.168.1.25到192.168.1.218

步骤 4 :配置默认网关

每个子网需要一个默认网关来处理无法在本子网内寻址的IP数据包。对于这个例子,默认网关可以是:

  • 第一个子网:192.168.1.1

  • 第二个子网:192.168.1.9

  • 第三个子网:192.168.1.17

  • 第四个子网:192.168.1.25

步骤 5 :测试和验证

最后,我们需要验证子网划分的正确性。可以通过ping测试或者使用traceroute/mtr等工具来检查数据包如何在不同的子网之间路由。

通过这个例子,我们可以看到如何通过增加子网位数来将一个大的C类网络分割成更小的、独立的子网。每个子网都可以被视为一个独立的网络,具有自己的网络地址和足够的地址空间来容纳该子网内的设备。

DHCP动态主机配置协议

DHCP(动态主机配置协议)是一种网络协议,用于自动分配IP地址其他网络配置信息给网络中的设备。

DHCP的作用和优势
  • 自动分配IP地址:DHCP可自动为网络中的设备分配IP地址,减少手动配置的工作量。
  • 集中管理:所有的网络参数,如IP地址、子网掩码、默认网关和DNS服务器等信息都由DHCP服务器统一管理和分配,便于网络管理。
  • 提高工作效率:避免了因手动配置IP地址可能出现的错误,并能快速适应网络变化。
  • 租约机制:DHCP通过租约机制,允许在一定时间后回收IP地址,提高了IP地址的使用效率
DHCP的主要角色
  • DHCP客户端:需要获取IP地址的设备,如计算机、手机等。
  • DHCP服务器:负责自动分配IP地址和其他网络参数的设备。
  • DHCP中继:在不同的网络段中,负责传递DHCP消息的设备。虽然在企业网络中一般不需要部署DHCP中继,但路由器本身就可以作为DHCP中继。
DHCP的工作原理
  • 发现阶段:客户端广播发送DHCP Discover报文,寻找DHCP服务器。
  • 提供阶段:DHCP服务器收到Discover报文后,会单播回复DHCP Offer报文,提供一个IP地址给客户端。
  • 选择阶段:客户端收到Offer报文后,会广播发送DHCP Request报文,选择一个IP地址。
  • 确认阶段:DHCP服务器收到Request报文后,会单播回复DHCP ACK报文,确认分配给客户端的IP地址。客户端使用此报文来确认分配给它的IP地址。
DHCP的配置
  • 全局DHCP实验的配置步骤:开启DHCP功能、配置IP地址池、配置路由器接口的IP地址和验证结果。
  • 接口DHCP实验的配置步骤:开启DHCP功能、配置接口IP地址、在接口上开启基于接口的DHCP功能、配置DNS地址和租期。
  • DHCP中继实验的配置步骤:在路由器上开启DHCP功能、配置DHCP服务器和DHCP中继。
DHCP的分配方式
  • 静态绑定:管理员手动在DHCP客户端上绑定IP地址,此地址永久被该设置的客户端使用。
  • 动态分配:DHCP服务器为客户端动态分配租期无限长的IP地址,只有客户端手动释放地址,这地址才能回收分配给其他客户端使用。
  • 带租期的动态分配:DHCP服务器为客户端分配带有租期时间的IP地址,客户端在租期到期前需要更新租约。

ARP地址解析协议

概念

ARP(地址解析协议)是一种用于将IP地址转换为物理地址(如MAC地址)的网络协议。ARP使用以太网电缆中的以太网地址进行通信,这是在计算机之间的通信中常用的网络传输机制。

ARP协议的工作方式是通过发送ARP请求并接收ARP响应来完成的。当一台计算机需要发送数据到另一台计算机时,它会首先将其IP地址解析为MAC地址。为此,它会发送一个ARP请求,请求将目标IP地址映射到其MAC地址。然后,另一台计算机(在这种情况下是ARP缓存中的主机)会响应这个请求,将其MAC地址和IP地址进行匹配,并将其MAC地址发送回请求计算机。请求计算机将使用这个MAC地址来发送数据。

ARP协议是一种重要的网络协议,它对于网络通信的正确性和效率至关重要。它允许计算机将IP地址(在网络上通信时使用的通用地址)转换为物理地址,从而实现了计算机之间的直接通信。

IP和MAC地址

ARP协议工作过程

  • A已知B的IP地址,需要获得B的MAC地址(物理地址)
  • 如果A的ARP表中缓存有B的IP地址与MAC地址的映射关系,则直接从ARP表获取
  • 如果A的ARP表中未缓存有B的IP地址与MAC地址的映射关系,则A广播包含B的IP地址的ARP query分组

在局域网上的所有节点都可以接收到ARP query

  • B接收到ARP query分组后,将自己的MAC地址发送给A
  • A在ARP表中缓存B的IP地址和MAC地址的映射关系

超时时删除

路由到另一个局域网

  • A创建IP数据包(源为A、目的为E)
  • 在源主机A的路由表中找到路由器R的IP地址223.1.1.4
  • A根据R的IP地址223.1.1.4,使用ARP协议获得R的MAC地址
  • A创建数据帧(目的地址为R的MAC地址)
  • 数据帧中封装A到E的IP数据包
  • A发送数据帧,R接收数据帧

网络地址转换(NAT)

概念

网络地址转换(NAT,Network Address Translation)是一种在互联网中广泛使用的技术,用于将私有网络(如家庭网络或小型企业网络)的IP地址转换为公共IP地址,从而将这些网络接入到公共网络中。NAT使得这些网络可以无需改变其现有的IP配置结构即可接入互联网,从而简化了网络配置和管理。

原理

NAT的工作原理是在路由器上进行IP地址的转换,将私有IP地址转换为公共IP地址,以便在公共网络上进行通信。当内部网络上的计算机发送数据包到公共网络时,路由器会将私有IP地址转换为公共IP地址。同时,路由器还会将私有IP地址与公共IP地址之间的通信记录下来,以便进行路由查找和数据包的转发。

类型

NAT有多种类型,包括静态NAT、动态NAT和端口NAT等。静态NAT会将内部网络中的一台计算机或设备固定地转换为公共网络中的一个IP地址;动态NAT则是一组计算机共享一个公共IP地址,每个计算机或设备使用不同的私有IP地址进行通信;端口NAT则是在转换时将私有IP地址和端口号一起转换为公共IP地址和端口号。

NAT在保护私有网络免受公共网络上的未经授权的访问方面也起到了重要作用。通过使用NAT,私有网络中的计算机只能通过路由器访问公共网络,而无法直接访问其他计算机或设备。这有助于保护计算机和设备免受未经授权的访问和攻击。

私有IP
1. A类私有地址:10.0.0.0 到 10.255.255.255
2. B类私有地址:172.16.0.0 到 172.31.255.255
3. C类私有地址:192.168.0.0 到 192.168.255.255
工作机制
  1. 地址映射:NAT设备维护一个地址映射表,该表将私有IP地址与公共IP地址和端口号相关联。每当本地网络中的设备发送数据包时,NAT设备将其私有IP地址和端口号替换为公共IP地址和端口号。
  2. 端口复用:NAT设备通常使用相同的公共IP地址和端口号来转发多个数据包。这称为端口复用。当多个本地网络中的设备需要通信时,它们可以使用相同的公共IP地址和端口号进行通信,而不会发生冲突。
  3. 代理转发:NAT设备充当代理服务器,将数据包从本地网络转发到公共互联网,并将响应从公共互联网返回本地网络。这使得本地网络中的设备能够访问公共互联网上的资源,而无需直接连接到公共互联网。
  4. 地址池管理:NAT设备还负责管理公共IP地址池。当公共IP地址被消耗完毕或需要重新分配时,NAT设备可以从地址池中选择一个新的公共IP地址分配给本地网络中的设备。
优劣势
优势
  • 节省IP地址:通过NAT,一个公共IP地址可以被多个本地网络设备共享,从而节省了IP地址资源。
  • 提高网络安全性:通过NAT,本地网络设备在公共互联网上的活动可以被隐藏起来,提高了网络安全性。
  • 方便远程访问和管理:通过NAT,远程用户可以从不同的地理位置对本地网络设备进行访问和管理,方便了远程访问和管理需求。
劣势
  • 隐藏了本地网络的真实连接:由于NAT将本地网络设备的IP地址转换为公共IP地址,外部网络无法直接访问到本地网络设备,这可能会隐藏了本地网络的真实连接,增加了网络管理和故障排查的难度。
  • 降低网络性能:在进行某些需要直接对接的操作时,NAT协议需要进行地址的转换,这可能会降低网络性能。
  • 不利于服务提供商的监控和管理:由于NAT的存在,用户使用服务提供商提供的网络资源的行为可能会被隐藏或混淆,这不利于服务提供商对用户行为进行有效的监控和管理。

ICMP: 互联网控制报文协议

概念

ICMP(Internet Control Message Protocol)是互联网控制报文协议,用于在IP主机、路由器之间传递控制消息。这些控制消息可以帮助网络诊断、网络配置、路径选择和流量控制等。

功能

ICMP报文是一种特殊的IP数据包,包含网络上的故障排查、故障排除、路径选择等的重要信息。通过发送ICMP请求和接收ICMP响应,主机和路由器可以在网络上实现差错报告和控制操作。

ICMP报文类型

ICMP 差错报告报文

  • 类型3:目的地不可达(Destination Unreachable)
  • 代码0:网络不可达
  • 代码1:主机不可达
  • 代码2:协议不可达
  • 代码3:端口不可达
  • 代码4:需要进行网络层的源路由
  • 代码5:需要进行主机层的源路由
  • 代码6:目的地网络未知
  • 代码7:目的地主机未知
  • 代码8:目的地协议未知
  • 代码9:目的地端口未知
  • 代码10:需要进行网络层的源路由
  • 代码11:需要进行主机层的源路由
  • 类型4:源抑制(Source Quench)
  • 类型5:重定向(Redirect)
  • 代码0:网络重定向
  • 代码1:主机重定向
  • 代码2:服务类型重定向
  • 类型11:TTL超时(Time Exceeded)
  • 代码0:数据包在传输过程中TTL值为0
  • 代码1:数据包在传输过程中因传输路径上的某中转换而TTL值为0

ICMP 询问报文

  • 类型8:回显请求(Echo Request)
  • 类型0:回显响应(Echo Response)
  • 类型13:时间戳请求(Timestamp Request)
  • 类型14:时间戳响应(Timestamp Response)
  • 类型17:地址掩码请求(Address Mask Request)
  • 类型18:地址掩码响应(Address Mask Response)
  • 类型15:路由器请求(Router Solicitation)
  • 类型16:路由器通告(Router Advertisement)
  • 类型128:数据包到达(Packet Arrival)
ICMP 报文格式
  • Type(类型):8位字段,表示ICMP报文的类型,用于区分不同的ICMP消息,如目的不可达、回显请求等。

  • Code(代码):8位字段,与类型字段一起使用,提供关于类型更多的信息。例如,在目的地不可达消息中,代码字段可以指出特定的不可达原因。

  • Checksum(校验和):16位字段,用于校验整个ICMP报文的完整性。发送方计算校验和,接收方在接收到报文后重新计算校验和,如果两次计算结果不一致,说明报文可能在传输过程中损坏

  • Identifier(标识符):16位字段,用于标识发送方的源IP地址,通常用于回显响应(Echo Response)和时间戳响应(Timestamp Response)中,以确保响应能够正确地返回到发送方。

  • Sequence(序列号):16位字段,通常用于回显请求(Echo Request)和回显响应(Echo Response)中,用于标识发送的报文序列中的顺序号。

  • Data(数据):可变长度的字段,包含与特定ICMP消息类型相关的数据。

    +------+------+------+------+------+------+------+------+
    | Type | Code | Checksum | Identifier | Sequence | Data |
    +------+------+------+------+------+------+------+------+

路由算法

1. 静态路由算法:

  • 手动配置路由表,不考虑网络的动态变化。

  • 适用于小型或相对静态的网络。

2. 动态路由算法:

  • 根据网络状态动态计算和维护路由表。

  • 常见动态路由算法包括:

  • 距离矢量路由算法(如RIP):路由器交换路由信息,基于距离矢量更新路由表。

  • 链路状态路由算法(如OSPF):每个路由器广播其链路状态,基于链路状态构建最短路径树。

  • 路径矢量路由算法(如BGP):路由器交换路径信息,以确定到达特定网络的最佳路径。

3. 响应式路由算法:

  • 只有在网络状态发生变化时才会更新路由表。

  • 适用于网络拓扑变化较少的情况。

4. 主动式路由算法:

  • 定期更新路由表,以保持网络的连通性。

  • 适用于网络拓扑变化频繁的情况。

5. 层次路由算法:

  • 将大型网络分割成多个较小的、管理更容易的部分。

  • 常见层次路由算法包括OSPF和BGP。

6. 负载均衡路由算法:

  • 旨在平衡网络流量,提高网络性能和可靠性。

  • 可以通过多种方式实现,如哈希算法、轮询等。

7. 基于策略的路由算法:

  • 根据预定义的策略(如QoS、安全等)来路由数据包。

  • 允许网络管理员灵活地控制网络流量。

路由算法设计时必须满足以下几个基本特性:

  • 正确性:路由算法必须保证能够找到从源到目的地的最佳路径,且不会丢失或重复路径上的任何数据包。
  • 收敛性:在网络状态发生变化后,路由算法应能快速地收敛到新的稳定状态,即所有路由器上的路由表都更新为同一正确配置。
  • 鲁棒性:路由算法应当能够处理网络中的故障,如路由器或链路故障,并能够迅速恢复。
  • 公平性:路由算法应公平地分配流量,避免某些流量路径被过度使用,而其他路径却被忽视。
  • 可扩展性(Scalability):随着网络规模的扩大,路由算法应能适应更多的节点和更复杂的拓扑,同时保持性能。
  • 效率(Efficiency):路由算法应尽可能高效地运行,包括处理速度快、占用资源少。
  • 实用性(Practicality):路由算法应易于实现、维护和调试。
  • 灵活性(Flexibility):路由算法应提供足够的灵活性,以支持不同的网络应用场景和网络策略。

根据路由算法是否随网络的通信量或拓扑自适应划分

静态路由算法

  • 静态路由算法是由网络管理员手动配置的,通常不随网络的通信量或拓扑变化而变化。
  • 适用于小型网络或者网络拓扑和流量需求相对稳定的环境。
  • 优点是简单、易于管理和维护。
  • 缺点是缺乏灵活性,无法自动适应网络的变化。

动态路由算法

  • 动态路由算法能够根据网络的通信量或拓扑结构的变化来自动调整自身的路由表。
  • 适用于大型和复杂的网络环境,其中网络拓扑和流量模式可能会频繁变化。
  • 常见的动态路由算法包括距离向量路由算法(如 RIP)和链路状态路由算法(如 OSPF)。
  • 动态路由算法通常更复杂,实现起来也更困难,但是它们提供了更好的网络可扩展性和鲁棒性。
距离向量路由协议
概念

一种路由选择算法,该算法中每个路由器维护一张路由表,这张表记录了到达每个网络的最短路径信息。距离向量路由器通过周期性地向邻居路由器发送自己的路由表来交换网络可达信息。

特点
  1. 路由表的交换:每个路由器定期向其邻居发送自己的整个路由表,包括到所有网络的距离(跳数)和出口接口。
  2. 收敛速度:当网络拓扑发生变化时,距离向量路由协议需要一定的时间来更新所有路由器的路由表,从而使网络收敛。这个过程可能相对较慢,尤其是在大型网络中。
  3. 防环机制:由于距离向量协议仅接收邻居路由器的信息,因此需要有防环(Spoofing)机制,以防止路由循环的发生。
  4. 简单性:相比链路状态路由协议,距离向量路由协议通常更简单、更易于实现。

常见的距离向量路由协议包括

  • RIP:使用距离向量算法,默认的最大跳数是15,超过15的被认为是不可达的。
  • EIGRP:是距离向量协议的增强版本,结合了距离向量的简单性和链路状态的某些特性。
  • HELLO协议:用于OSPF和IS-IS等链路状态路由协议中,用于发现和维护邻居关系。
链路状态路由
概念

一种动态路由选择算法,它基于每个路由器维护的链路状态数据库(Link-State Database, LSD)。链路状态路由器会收集所有直接连接的网络设备(包括路由器和交换机)的链路状态信息,并据此计算出到达网络中其他所有节点的最短路径。

特点
  1. 拓扑数据库:每个路由器维护一个拓扑数据库,包含网络中所有链路的状态信息,如接口的IP地址、成本(Cost)、状态(Up/Down)等。
  2. SPF(最短路径优先)算法:链路状态路由器使用SPF算法基于拓扑数据库计算到达每个网络的最短路径。
  3. 快速收敛:当网络拓扑发生变化时,链路状态路由协议可以快速地更新路由信息,通常在几秒钟内网络就会收敛。
  4. 无环路:链路状态协议通过确保每个路由器都有全网的拓扑信息,从而防止路由环路的发生。
  5. 复杂性:链路状态路由协议通常比距离向量路由协议复杂,实现起来更困难,并且需要更多的CPU和内存资源。
链路状态路由可分为五个部分

网络拓扑发现

  • 路由器通过发送和接收链路状态广播(如OSPF中的Hello packets)来发现网络中的其他路由器。
  • 路由器使用这些信息来建立邻居关系,并构建一个关于网络拓扑的初步视图。

链路状态数据库同步

  • 路由器之间通过发送链路状态更新(Link State Update, LSU)来交换完整的链路状态信息。
  • 这一步确保了每个路由器上的链路状态数据库(Link State Database, LSDB)保持最新和一致。

链路状态计算

  • 使用最短路径优先(Shortest Path First, SPF)算法(如Dijkstra算法)来计算到达网络中每个其他节点的最短路径。
  • 这会生成一张新的路由表,该表包含了到网络中所有可达节点的最佳路径。

路由表安装

  • 将计算出的最短路径安装到路由器的路由表中,以便数据包可以按照这些路径进行转发。

维护和优化

  • 链路状态协议还包括一系列机制来维护网络拓扑信息的准确性,如老化(Aging)和刷新(Refresh)机制。
  • 这些机制可以帮助路由器在网络拓扑发生变化时快速响应,并保持路由信息的最新。
层次路由
概念

层次路由(Hierarchical Routing)是一种网络路由策略,它通过将网络划分为多个层次来简化路由选择和优化网络性能。这种策略在大型网络中特别有用,因为它有助于减少路由表的复杂性并提高路由效率。

基本思路
  • 简化路由选择过程。
  • 提高网络的灵活性和可扩展性。
  • 最小化路由复杂性和管理开销。
  • 提供更好的服务质量和网络性能。
效果
  1. 简化路由表:通过在各个层次上进行路由聚合,层次路由将大型路由表分解成多个更小、更易于管理的表。这减少了路由器处理的路由条目数量,减少了路由表的大小和复杂性。
  2. 提高性能:由于路由器需要处理的路由信息减少,层次路由可以提高路由查找的速度和网络的整体性能。
  3. 增强可扩展性:层次结构使得网络更容易扩展。新的网络部分可以添加到现有层次中,而不会严重影响整体网络的性能和管理。
  4. 提高安全性:在层次化网络中,安全策略可以按层次实施,使得安全控制更加有效和集中。
  5. 减少流量开销:通过层次路由,流量可以通过预定义的路径高效地转发,减少了不必要的网络流量。
  6. 增强管理的可视性:层次路由使得网络管理更加清晰。每个层次可以由不同的管理员负责,这有助于提高管理和监控的效率。
  7. 快速收敛:层次路由协议通常能够快速响应网络变化,因为它们只涉及受影响的层次。
  8. 统一的网络策略:层次路由允许网络策略按照层次来实施,从而确保网络策略的一致性和可预测性。
  • 降低路由器成本:由于路由表的大小和复杂性降低,支持大量路由条目的高级路由器可能不再需要,从而降低了硬件成本。
  • 优化网络资源利用:通过在每个层次上实施负载均衡,可以更有效地利用网络资源。
  • 提高网络的健壮性:层次路由使得网络设计更加灵活,能够更好地应对网络故障和业务变化

看例子

广播路由
概念

能够处理广播网络中的路由问题,例如局域网(LAN)和广域网(WAN)。在广播网络中,每个网络设备都知道所有其他网络设备的存在,并且可以直接与任何设备通信。

特点
  • 广播域:广播路由在一个广播域内工作,广播域是能够接收单个广播消息的所有设备的集合。
  • 路由广播消息:广播路由器(Broadcast Router)负责将广播消息从一个网络段路由到另一个网络段。这通常涉及到网络地址转换(NAT)或协议转换。
  • 维护路由表:广播路由器需要维护一个详细的网络拓扑和地址映射表,以便正确地路由广播消息。
  • 限制广播风暴:在大型网络中,广播消息可能会导致所谓的"广播风暴",即大量重复的广播消息充斥网络,导致网络性能下降。广播路由器需要有机制来限制这种现象的发生。
涉及的技术
  • VLAN路由:在局域网中,VLAN(虚拟局域网)允许网络被逻辑上分割成多个广播域。路由器可以在不同VLAN之间进行路由,从而允许广播消息跨VLAN边界传输。
  • 三层交换机:三层交换机(Layer 3 Switch)具有路由功能,可以在不同的网络段之间转发广播消息。
  • 路由器:传统的网络路由器也可以处理广播消息的路由,尤其是在连接多个网络段时。
  • 隧道技术:例如,在广域网中,可以利用隧道技术(如GRE、IPSec VPN等)在不同的网络之间传递广播消息。

Internet路由协议

路由选择协议RIP
概述

路由信息协议是一种距离矢量路由协议,用于在自治系统(AS)内部交换路由信息。RIP是基于Bellman-Ford算法,但简化了其中的非负权重的处理,使其更适合于小型网络环境。

特点
  1. 距离矢量算法:RIP路由器通过交换路由表来学习网络拓扑和可达性信息。每个路由器将知道的所有路由信息定期发送给其邻居路由器。
  2. 跳数限制:RIP使用跳数(也称为度量值或metric)来表示到达网络中每个节点的距离。RIP的最大跳数限制为15,这意味着到任何网络的最大距离为15个路由器跳。
  3. 周期性更新:RIP路由器以固定的周期(默认为30秒)向邻居路由器发送路由更新信息。这个周期性更新过程称为路由泛洪(routing flood)。
  4. 收敛速度:RIP的收敛速度相对较慢,特别是当网络拓扑发生较大变化时。这是因为所有路由器都需要收到并处理更新信息,然后重新计算路由。
  5. 稳定性机制:为了防止路由环路,RIP使用了水平分割(split horizon)、毒性逆转(poison reverse)和触发更新(triggered update)等机制。
  6. 版本:RIP有两个版本,RIPv1和RIPv2。RIPv1不支持子网掩码,而RIPv2支持。RIPv2引入了多播更新(使用224.0.0.9),提供了更好的安全性。
工作过程

初始化和邻居发现

  • 当一个路由器启动时,它会初始化自己的路由表,并将路由表发送给其邻居路由器。
  • 路由器通过发送和接收Hello包来发现邻居路由器,并建立邻居关系。

定期更新

  • RIP路由器使用固定的更新周期(默认为30秒)来发送完整的路由表。这个周期性更新过程称为路由泛洪。
  • 路由器会将更新信息发送给所有邻居路由器,以保持路由信息的同步。

处理更新

  • 路由器接收到邻居路由器发送的路由更新后,会更新自己的路由表。
  • 在更新过程中,路由器会检查收到的路由信息,并更新自己的路由表。如果收到的路由信息表明某个网络不再可达,那么这个路由将被从路由表中删除。

路由收敛

  • 当网络拓扑发生变化时,如网络故障或新路由器的加入,RIP路由器会接收到更新信息,并重新计算路由。
  • 这个重新计算过程会导致路由表的更新,然后路由器将更新信息发送给所有邻居,以实现网络的路由收敛。

防止环路

  • RIP使用了水平分割(split horizon)和毒性逆转(poison reverse)机制来防止路由环路。
  • 水平分割意味着路由器不会向从某个接口接收路由信息的邻居路由器发送相同的路径。
  • 毒性逆转意味着如果路由器通过某个接口收到了自己之前发送的路径信息,它会将该路径的度量值设置为16(最大值),从而避免形成环路。

版本支持

RIP有RIPv1和RIPv2两个版本。RIPv2支持子网掩码,并且使用多播更新来提高效率和安全性。

BGP-外部网关路由协议
概念

边界网关协议是一种动态外部网关协议,主要用于互联网中自治系统之间的路由信息交换。BGP的主要作用是在不同AS之间建立可达性,以确保互联网的连通性。

分类
  • 内部网关协议 IGP: 有 RIP 和、OSPF、ISIS 等多种具体的协议
  • 外部网关协议 EGP:目前使用的协议就是 BGP

边界网关协议BGP

  • 目前互联网中唯一实际运行的自治域间的路由协议

BGP功能

  1. 外部路由选择:BGP负责在不同自治系统(AS)之间传输路由信息,从而允许数据包跨越多个AS进行传输。
  2. 路径选择:BGP基于一系列的属性(如AS路径、本地优先级、路由起源等)来选择最佳路径。网络管理员可以定义策略来影响这些选择。
  3. 路由聚合:BGP自动执行路由聚合,将多个具体的路由项聚合为更概括的路由条目,减少路由表的大小。
  4. 多协议支持:BGP可以传输多种不同网络协议的路由信息,包括IPv4、IPv6,以及一些专用协议(如MPLS标签交换)。
  5. 路由策略:BGP允许网络管理员实施复杂的路由策略,以控制数据的流向,例如路由过滤、路由重分配和路由反射。
  6. 服务器选择:BGP使用一系列的参数来决定从多个可能的连接中选择哪条路径。
  7. 多路径负载均衡:BGP可以同时使用多个路径,并在这些路径之间进行负载均衡。
  8. 防路由环路:BGP使用诸如AS路径长度检查、NEXT_HOP自环检测和路由反射等机制来防止路由环路。
  9. 可靠性和稳定性:BGP使用TCP作为传输协议,提供了一种健壮的协议机制来确保路由信息的可靠交换。
  10. 收敛速度:BGP具有较快的收敛速度,能够在网络配置发生变化时迅速更新路由。

路由通告

总结:

路由信息协议(RIP)

特点

  1. 距离矢量协议:使用距离矢量算法,基于跳数来确定最佳路径。
  2. 简单易用:配置和管理相对简单,适用于小型网络。
  3. 收敛速度慢:在网络拓扑变化后需要时间来路由收敛。
  4. 路由表大小:路由表可能会变得比较大。
  5. 最大跳数限制:最多支持15个跳,限制了大网络的规模。

工作方式

  • 路由器交换完整路由表信息。
  • 基于跳数计算到达特定网络的距离。
  • 使用水平分割和毒性逆转来防止路由环路。

边界网关协议

特点

  1. 外部网关协议:在自治系统(AS)之间交换路由信息。
  2. 复杂的路径选择:基于多种属性进行路径选择。
  3. 灵活性高:支持多样化的网络策略和安全控制。
  4. 收敛速度较快:能够快速响应路由变化。
  5. 支持多协议:可以传输多种网络协议的路由信息。

工作方式

  • 路由器交换包含路径属性的路径通告。
  • 使用AS路径、本地优先级和度量值等属性进行路径选择。
  • 在不同AS之间使用BGP会话进行路由信息交换。
  • 支持路由聚合和复杂的路由过滤。

对比总结

  1. 适用网络规模:RIP适合小型到中型网络,而BGP适合大型和复杂网络,如互联网。
  2. 收敛速度:RIP收敛速度慢,而BGP收敛速度较快。
  3. 配置和管理:RIP配置和管理相对简单,BGP则需要更复杂的配置和专业知识。
  4. 路由表大小:RIP的路由表可能会因为网络规模而变得很大,而BGP通过路由聚合减少路由表大小。
  5. 动态性:RIP是静态的,而BGP是动态的,可以适应网络变化。
  6. 网络策略:BGP提供了更多网络策略控制的灵活性,可以实施复杂的路由策略。

路由器的工作原理

路由器介绍

路由器是网络中的核心设备,它负责在不同网络之间转发数据包,确保数据能够从源点到目的地正确、高效地传输。

工作原理
  1. 路由选择:路由器根据路由表决定数据包应该从哪个接口转发到下一个目的地。路由表是路由器根据路由协议学习到的网络拓扑和可达性信息。
  2. 数据包转发:路由器接收数据包,检查其目的地地址,并根据路由表中的信息将数据包从适当的接口转发出去。
  3. 连接多个网络:路由器连接多个网络,如局域网(LAN)、广域网(WAN)和互联网,使得这些网络之间能够互相通信。
类型
  • 家用路由器:通常用于连接家庭网络设备,如计算机、手机和智能家居设备,并提供互联网接入。
  • 企业级路由器:适用于企业环境,提供更高级的路由、安全和网络管理功能。
  • 核心路由器:在网络的核心层工作,处理大量的高速数据流,通常用于大型互联网服务提供商和数据中心。
  • 边缘路由器:位于网络的边缘,处理外部网络(如互联网)和内部网络之间的连接。
核心功能
  • 控制层:运行各种路由协议:BGP、OSPF、RIP,学习去往不同目的的转发路径:路由表
  • 数据层:根据上述路由表,将收到的IP分组转发到正确的下一跳链路
路由器控制层
概念

负责处理与路由选择和网络协议相关的决策和过程。控制层不直接处理网络流量,而是负责建立和管理网络的路由表,以及决定数据包应该如何在网络中转发。

功能

路由协议

  • 路由器通过运行各种路由协议(如OSPF、BGP、RIP等)来收集网络拓扑信息和可达性信息。
  • 控制层处理路由协议的消息和更新,以及更新和维护路由表。

路径选择

  • 控制层根据路由协议提供的信息,计算出到达每个网络的最优路径。
  • 它使用算法(如最短路径优先算法SPF)来决定最佳路径,并更新路由表。

路由表管理

  • 路由器控制层维护一个路由表,该表包含了到达所有已知网络的路径信息。
  • 控制层负责路由表的创建、更新和删除操作。

路由策略

  • 网络管理员可以通过路由策略来影响路径选择过程,例如设置优先级、过滤路由和改变路径属性。
  • 控制层执行这些策略,以实现特定的网络服务和管理目标。

协议处理

  • 控制层处理各种网络协议,如IP、IPv6、MPLS等,确保路由器能够与不同类型的网络进行通信。
  • 它负责协议的初始化、维护和终止过程。

故障管理

  • 控制层监控网络的健康状况,检测和响应网络故障,如链路中断或路由器失效。
  • 它通过监控和告警机制来快速响应网络问题。

性能监控

  • 控制层收集和分析路由器的性能数据,如路由表大小、路由器负载和链路利用率。
  • 这些数据用于监控网络性能和指导网络优化。

安全管理

  • 控制层处理与网络安全相关的事务,如访问控制列表(ACL)的配置和维护。
  • 它确保只有授权流量被路由器转发。

优先级

|--------|-------|
| 路由选择 | 路由优先级 |
| 直连路由 | 0 |
| 静态路由 | 1 |
| eBGP路由 | 20 |
| OSPF路由 | 110 |
| RIP路由 | 120 |
| iBGP路由 | 200 |

路由器数据层
概念

直接负责处理和转发传入的数据包。数据层的目的是快速、高效地传输数据包,确保网络的流畅运行。

功能

数据包处理

接口接收:数据包到达路由器时,首先进入数据层,通过相应的接口接收。

链路层头部处理:数据层会去除链路层头部信息,提取出网络层报头。

查找转发

查找路由表:数据层通过查找路由表来确定数据包的目的网络以及相应的出口接口。

查找转发信息:基于查找到的信息,数据层确定数据的转发路径。

数据包转发

修改头部信息:可能需要在数据包的IP头或其他头部信息中添加或修改某些字段,如Time To Live(TTL)、检查和等。

转发数据包:数据层将数据包从适当的接口发送出去。

可扩展性和性能

高速硬件处理:数据层通常需要快速处理大量的数据包,因此依赖于高速的CPU和处理单元。

硬件加速:在一些路由器中,数据包处理的过程由专门的硬件(如ASIC芯片)进行加速。

QoS(服务质量)处理

根据服务质量策略,数据层可能需要对数据包进行分类和标记,以确保高优先级的数据包得到优先处理。

流量监控和分析

数据层可能需要记录流量数据,用于分析网络使用情况和识别潜在的安全威胁。

3种典型的交换结构

拥塞控制算法
概念

保网络的稳定性和效率。在数据传输过程中,网络中的数据包数量可能超过网络的容量,导致拥塞。拥塞控制算法的作用就是通过调整发送速率来避免或减轻这种现象,从而保持网络的稳定运行。

产生拥塞的原因
  • 主机发送到网络的数据包数量过多,超过了网络的承载能力
  • 突发的流量填满了路由器的缓冲区,造成某些数据包会被丢弃
拥塞控制算法

慢启动

这是TCP协议中的一种初始拥塞控制方法。在慢启动阶段,发送窗口的大小以指数增长速率增加,直到达到一个预设的最大值。

拥塞避免

当发送窗口达到最大值后,TCP进入拥塞避免阶段。在此阶段,发送窗口的增长速率减慢,通常以每往返时间(RTT)的1个最大报文段(MSS)的速度增加。

快重传和快恢复

TCP的快重传和快恢复机制用于快速恢复丢失的数据包,减少拥塞窗口缩小的需要。当发送方检测到三个重复的ACK时,它会立即重传丢失的数据包,而不是等待重传计时器到期。快恢复阶段会根据丢失的数据包数量来减少拥塞窗口。

选择性重传

SACK是一种扩展的拥塞控制机制,允许接收方告诉发送方哪些数据包已经收到,哪些数据包丢失。这使得发送方能够只重传丢失的数据包,而不是整个窗口。

拥塞窗口随机化

CWR是一种机制,允许发送方在慢启动阶段初始化拥塞窗口时随机化其大小,以减少网络中的同步效应。

拥塞通知

CN是另一个TCP扩展,它允许接收方通过发送ECN(Explicit Congestion Notification)标志的ACK来通知发送方网络拥塞。发送方接收到这些标志后,可以降低发送速率以减轻拥塞。

显式拥塞通知

ECN是一种在网络设备中实现的拥塞控制机制,它通过在IP包头中使用ECN标志来显式地通知发送方网络拥塞,而不是通过丢包来间接地指示拥塞。

基于最大带宽估计的拥塞控制

  • 这些算法基于对网络带宽的最大可能估计来调整发送速率,它们通常在慢启动和拥塞避免阶段使用不同的速率增加策略。

延迟确认

DelAck是一种策略,通过延迟发送ACK来减少TCP头部在网络中的数量,从而减轻拥塞。

流量调节
  1. 定义峰值流量
  2. 速率限制
  3. 优先级处理
  4. 实时流量管理
  5. 资源预留
  6. 排队和调度
  7. 拥塞避免
  8. 多协议支持

网络层小知识

漏桶算法

工作原理

  • 桶的创建:在网络设备(如路由器或交换机)上创建一个虚拟的"桶"。这个桶有一个固定的容量,用来存储准备发送的数据包。
  • 令牌的生成:网络设备以一个恒定的速率向桶中放入令牌(Token)。每个令牌代表一个可以发送的数据包。
  • 数据包的发送:当数据包到达网络设备时,设备会尝试从桶中取出一个令牌,以便发送数据包。如果没有令牌可用,数据包将被丢弃或排队等待直到有令牌可用。
  • 桶的漏出:令牌会在一定时间后从桶中"漏出",表示它们已经被使用。这意味着桶中的令牌数量会随着时间的推移而减少。
  • 桶的刷新:随着时间的推移,桶中的令牌会持续漏出,直到桶为空。然后,设备会重新开始放入令牌,重复上述过程。

局限性

  • 固定的发送速率:漏桶算法限制了数据包的发送速率,但对于突发流量,它可能不会提供足够的灵活性,因为突发流量在短时间内需要发送大量数据包。
  • 令牌的生成速率固定:漏桶算法的发送速率取决于令牌的生成速率,这意味着无法根据网络的实时状况动态调整发送速率。
令牌桶算法

一种常用于网络流量整形和速率限制的算法。它允许发送方以高于平均速率发送数据,但会限制发送方的发送速率不超过预设的上限速率。

工作原理

  • 令牌的生成:一个令牌桶以固定的速率向桶中填充令牌。每个令牌代表可以发送的一个数据包或一定量的数据。
  • 桶的维护:令牌桶有一个固定的容量。当桶满时,新的令牌会被拒绝,直到桶中有些令牌被消耗掉。
  • 数据的发送:发送方在发送数据前,需要从桶中取出令牌。如果令牌可用,则可以发送数据;如果没有令牌可用,则发送被阻塞。
  • 突发处理:令牌桶允许在短时间内发送多个令牌,从而允许突发发送。这使得令牌桶比漏桶算法更为灵活,更适合处理突发流量。

优点

  • 公平性和稳定性:它允许较高的突发数据发送,同时又不允许持续的高速发送,从而保证了网络资源的公平使用。
  • 突发处理能力:它可以在短时间内在桶中积累多个令牌,这使得它能够处理突发流量。

局限性:

  • 长期速率限制:尽管它能够处理突发流量,但它仍然限制了长期内的平均发送速率,这可能会对需要高速发送的应用产生影响。
  • 实现复杂性:令牌桶算法的实现需要精确地控制令牌的生成和消耗,这可能需要较复杂的逻辑和原子操作。
数据包调度

涉及到网络设备如何决定数据包的发送顺序和时间。在多通道和多接口的网络环境中,数据包调度算法对于提高网络效率、保证服务质量(QoS)和公平性至关重要。

分类

轮询调度

原理:所有接口或通道以固定顺序轮流发送数据包,每个接口或通道在每个轮询周期中只有一次发送机会。

优点:简单公平,每个接口或通道都能获得发送时间。

缺点:可能不适用于带宽不同的接口,也无法区分不同优先级的数据包。

优先级调度

原理:根据数据包的优先级分配发送机会。高优先级的数据包可以抢占低优先级的数据包的发送时间。

优点:可以保证关键应用和服务的高优先级处理。

缺点:可能不公平,低优先级的数据包可能会长时间得不到发送机会。

此外,还有许多其他的数据包调度算法,如:

  • 最短作业优先(Shortest Job First, SJF):优先调度预计需要最少处理时间的数据包。
  • 公平队列(Fair Queuing, FQ):通过为每个流分配一个独立的队列和调度器来保证公平性。
  • weighted fair queueing(WFQ):为每个流分配不同的权重,以实现不同级别的服务质量。
  • 令牌桶(Token Bucket):用于限制发送速率,同时允许突发发送。
  • 随机 Early Detection (RED):通过随机丢弃数据包来平滑突发流量。

三层交换

三层交换技术是介于传统的第二层交换技术和第三层路由技术之间的一种网络技术。它结合了二层交换的高速数据传输能力和三层路由的灵活路由能力,能够实现高速、高效的数据包转发。

三层交换技术的原理和特点如下:

工作原理

  • 高速转发:三层交换机使用硬件来实现高速的数据包转发,而不是像传统路由器那样完全依赖软件处理。
  • 路由功能:三层交换机具有路由功能,能够根据数据包的目的IP地址进行路由查找,并将数据包转发到正确的网络。
  • 子网划分:三层交换机允许网络管理员将网络划分为多个逻辑子网(VLAN),以提高网络的灵活性和可管理性。

优点

  • 高性能:三层交换机使用硬件加速和优化的路由算法,能够提供比传统路由器更高的数据包转发速度。
  • 灵活性:通过VLAN和路由功能,可以轻松地管理和扩展网络,同时保持较高的性能。
  • 简化网络架构:三层交换机可以替代传统的路由器和交换机,简化网络拓扑结构,降低管理成本。

应用场景

  • 企业网络:用于企业内部网络,连接不同的VLAN和子网。
  • 数据中心:在数据中心环境中,三层交换机用于连接不同的服务器和存储设备。
  • 服务提供商网络:在服务提供商的环境中,三层交换机用于连接不同的客户网络和数据中心。

虚拟专用网VPN

计算机网络用途分类

专用和公用

计算机网络专用实现

  • 使用专用链路:铺设、租用(费用高,不灵活)
  • 使用公共链路:不安全

虚拟专用网VPN

  • 专用网络的经济、可靠、灵活的解决方案
  • 利用安全隧道技术将专用网络在公共网络上扩展
计算机网络专用实现的例子
  1. 虚拟专用网络(VPN):

VPN是一种通过公共互联网或其他公用网络基础设施,为用户提供安全、加密的通信通道的技术。它允许远程用户或分布式机构的员工安全地接入组织的内部网络资源。VPN通过加密和隧道技术,确保数据传输的安全性和私密性,同时提供对内部网络资源的远程访问。

  1. 网络地址转换(NAT):

NAT是一种在IP地址稀缺或需要隐藏内部网络结构时使用的网络地址转换技术。它允许局域网(LAN)内的设备使用非公共的IP地址进行通信,并通过NAT设备(如路由器)将内部地址映射到公共的IP地址,实现与外部网络的通信。NAT有几种形式,包括静态NAT、动态NAT和网络地址与端口号转换(NAPT),后者允许多个内部地址共享一个公共IP地址。

  1. 软件定义网络(SDN):

SDN是一种新兴的网络架构,其核心思想是将网络的控制层(决定数据如何流动的逻辑)从数据层(实际转发数据的硬件)分离出来。通过中央控制器来管理和指令网络设备,SDN提供了更灵活的网络管理方式,简化了网络配置和自动化流程,并使得网络能够更快速地响应业务需求的变化。

  1. 广域网(WAN):

广域网是一种覆盖广泛地区的计算机网络,能够连接不同地理位置的局域网(LAN)和城域网(MAN)。WAN可以用于连接企业分支机构、远程数据中心以及为远程工作人员提供对企业内部网络资源的访问。根据提供的服务类型,WAN可以分为专用WAN和公用WAN,如互联网。

  1. 链路层协议:

数据链路层协议如高级数据链路控制(HDLC)和点对点协议(PPP),是在网络设备之间直接建立通信链路的协议。它们处理数据传输的细节,如帧的封装、同步、错误检测和修正。这些协议确保数据的可靠传输,并支持多种网络层协议的传输,如IP协议。

VPN的原理

虚拟专用网络(VPN)的原理基于在传统的公共网络,如互联网上,构建一个安全的专用网络环境,以保护数据传输的安全性和用户隐私。

  • VPN指利用公用网络架设专用网络的远程访问技术
  • VPN通过隧道技术在公共网络上模拟出一条点到点的逻辑专线,从而达到安全数据传输的目的

VPN对数据机密性和完整性的保护

vpn实现

用vpn实现专用网络的远程访问

ipv6和ipv4根本区别在于,ipv6是ipv4的四倍,也就是地址长度不再是32位,而是128位,什么概念呢,全世界沙子一个ip都够用。

传输层

概念

计算机网络的传输层是OSI七层模型中的第四层,它为网络中的主机提供端到端的通信服务。传输层的主要任务是为高层的应用程序提供透明的数据传输服务,并确保数据正确无误地从源主机传输到目的主机。

在OSI模型中,传输层位于数据链路层和网络层之上, Below the application layer. 它依赖于网络层提供的服务,例如路由,同时为高层的应用层提供稳定的数据传输环境。传输层通过使用端口号,区分不同的应用程序,保证它们能够在同一台主机上同时使用网络资源进行数据传输。

功能

  1. 端到端通信:传输层提供端到端的通信服务,它将网络层提供的数据包组合成更大的数据块,并在源主机与目的主机之间提供数据的传输。
  2. 进程通信:它允许主机上的不同进程通过网络进行通信,就像它们在同一台机器上一样,即使这些进程可能由不同的应用程序启动。
  3. 复用与分用:通过使用端口号,传输层实现数据复用与分用。多个应用程序可以通过复用共享网络连接,而数据到达目的地时,则通过端口号进行分用,确保数据能够送达正确的应用程序。
  4. 差错检测:传输层提供差错检测机制,确保传输的数据没有在传输过程中被破坏。TCP协议使用序列号和确认应答来实现这一点,而UDP则不提供这样的保证。
  5. 流量控制:传输层通过控制发送速率,以避免接收方因来不及处理接收到的数据而丢弃数据。TCP使用滑动窗口机制进行流量控制,而UDP不提供流量控制功能。
套接字

套接字是操作系统提供给应用程序的接口,以便它们可以在网络中发送和接收数据。传输层套接字基于传输层协议,如TCP(传输控制协议)和UDP(用户数据报协议),为网络编程提供了基础。

  1. 套接字的概念、字节流套接字:基于TCP协议,提供可靠的字节流服务。数据以字节流的形式传输,保证数据的完整性和顺序。

数据报套接字:基于UDP协议,提供尽最大努力交付的数据报服务。UDP不保证数据的完整性和顺序,适用于对实时性要求较高的场景。

  1. 套接字的使用: - 创建套接字:通过指定协议(TCP或UDP)来创建相应的套接字。 - 绑定地址和端口:应用程序必须绑定一个端口号,以便网络上的其他计算机可以识别和通信。端口号是一个16位的整数,范围从0到65535。 - 建立连接(对于TCP):在发送数据之前,TCP套接字需要建立连接。这通常通过三次握手过程完成。 - 数据传输:通过套接字发送和接收数据。 - 关闭连接(对于TCP):在数据传输完成后,需要通过四次挥手过程来关闭连接。

  2. 套接字的地址、IP地址:标识网络中的主机。 端口号:标识主机上的具体服务或应用程序。IP地址和端口号的组合唯一标识网络中的一个套接字。

编程

第一步:创建套接字

   // 对于TCP
   int socketfd = socket(AF_INET, SOCK_STREAM, 0);
   // 对于UDP
   int socketfd = socket(AF_INET, SOCK_DGRAM, 0);

第二部 绑定地址和端口

   struct sockaddr_in server_addr;
   memset(&server_addr, 0, sizeof(server_addr));
   server_addr.sin_family = AF_INET;
   server_addr.sin_addr.s_addr = htonl(INADDR_ANY);
   server_addr.sin_port = htons(port);
   
   // 绑定
   if (bind(socketfd, (struct sockaddr *)&server_addr, sizeof(server_addr)) < 0) {
       perror("bind");
       exit(EXIT_FAILURE);
   }

第三步 对于tcp,建立连接

   if (connect(socketfd, (struct sockaddr *)&server_addr, sizeof(server_addr)) < 0) {
       perror("connect");
       exit(EXIT_FAILURE);
   }

第四步 数据传输,发送

     char buffer[1024];
     // 填充buffer
     send(socketfd, buffer, strlen(buffer), 0);

接收

     int bytes_received;
     bytes_received = recv(socketfd, buffer, sizeof(buffer), 0);
     if (bytes_ceived == 0) {
         // 连接已关闭
     }

第五步关闭连接,对于tcp

     close(socketfd);
传输层提供的服务
  • 端到端通信:传输层负责在网络中的两个终端(通常是计算机)之间提供通信服务。它将数据从源主机传输到目的主机,无论这些主机在网络中相隔多远。
  • 数据完整性:传输层确保数据在传输过程中不被破坏。这通常通过校验和(checksums)来实现,用于检测数据在传输过程中是否发生了错误。
  • 数据顺序:对于面向连接的协议(如TCP),传输层确保数据按照发送的顺序到达目的地。这对于某些应用(如文件传输)至关重要。
  • 流量控制:传输层可以根据接收方的处理能力控制发送方的数据发送速率,以避免数据丢失或缓冲区溢出。TCP使用滑动窗口机制来实现流量控制。
  • 拥塞控制:传输层还负责监控网络拥塞情况,并根据网络条件调整数据传输速率。TCP使用拥塞窗口机制来实现拥塞控制。
  • 复用与分用:传输层通过端口号实现数据复用与分用。复用允许多个应用程序共享同一个网络连接,而分用确保接收到的数据能够送达正确的应用程序。
  • 错误恢复:对于面向连接的协议,传输层负责检测错误并采取措施恢复数据传输。TCP在检测到错误时会重新发送丢失的数据包。
  • 安全性:虽然传输层本身不提供加密服务,但它可以与其他协议(如SSL/TLS)结合使用,为数据传输提供加密和安全保障。
  • 服务质量(QoS):传输层可以根据应用程序的需求,提供不同的服务质量保证,例如,通过优先级设置和资源预留来保证关键应用的性能。
  • 多路复用:传输层允许单个网络连接上同时进行多个数据流,这对于支持多种并发服务和应用至关重要。

这里插一条,TCP和UDP区别

他们关系

  • 都属于TCP/IP协议族:TCP和UDP都是互联网协议套件TCP/IP的一部分,它们共同构成了现代互联网的基础。
  • 同属于传输层协议:它们都位于OSI模型的第四层,为应用程序提供网络服务,同时也依赖于下层的网络层协议,如IP协议。
  • 互补而非替代:尽管TCP和UDP在功能上有所不同,但它们在网络应用中是互补的。不同的应用根据其需求选择使用TCP或UDP。

区别

连接性:

TCP 是面向连接的,这意味着在数据传输之前,需要先建立一个稳定的连接。

UDP 是无连接的,数据包的发送不需要建立连接,每个数据包独立发送。

可靠性:

TCP 提供了可靠的服务,确保数据的顺序和完整性,丢失的数据包会被重新发送。

UDP 不保证可靠性,数据包可能会丢失或到达顺序错误。

速度和效率:

TCP 由于其可靠性机制,通常比UDP慢,因为它需要时间来建立连接、发送确认和处理错误。

UDP 通常更快速,因为它不需要这些额外的步骤,适合对实时性要求较高的应用。

头部开销:

TCP 的头部开销较大,因为它需要包含序列号、确认应答、窗口大小等信息。

UDP 的头部开销较小,因为它不需要这些额外的信息。

适用场景:

TCP 适用于要求可靠性的应用,如网页浏览、文件传输、电子邮件等。

UDP 适用于对速度和实时性要求高的应用,如在线游戏、实时视频会议、流媒体等。

错误处理:

TCP 会检测错误并采取措施,如重传丢失的数据包。

UDP 不提供错误恢复机制,依赖于应用层来处理错误。

流量控制:

TCP 通过滑动窗口机制进行流量控制,以避免发送方发送数据过快导致接收方处理不过来。

UDP 没有内置的流量控制机制,这可能造成接收方缓冲区溢出。

UDP的报文格式

TCP结构

传输层提供的服务

因特网的网络层提供**"尽力而为"**的服务:

  • 网络层尽最大努力在终端间交付分组,但不提供任何承诺
  • 具体来说,不保证交付,不保证按序交付,不保证数据完整,不保证延迟,不保证带宽等

传输层的有所为、有所不为:

  • 传输层可以通过差错恢复、重排序等手段提供可靠、按序的交付服务
  • 但传输层无法提供延迟保证、带宽保证等服务
传输层的基本服务复用和分用
复用

复用是指在单一的网络连接上,多个应用程序共享传输层提供的服务以发送数据。传输层实现复用的方法是使用端口号。每个应用程序在启动时分配一个唯一的端口号,这样传输层就可以通过端口号来识别不同的应用程序,并将接收到的数据正确地转发给相应的应用程序。这种机制允许多个应用程序同时使用相同的网络连接,而不会相互干扰。

分用

分用是复用的逆过程,它发生在接收端。当网络层将数据包递交给传输层时,传输层会根据数据包中的端口号信息来识别接收数据的应用程序。这个过程称为分用,它确保了每个应用程序接收到的数据是它自己发送的数据,而不是其他应用程序的数据。分用机制使得多个应用程序能够共享同一个网络连接,同时保持数据的独立性和完整性。

应用层

概念

应用层的主要目的是将数据提供给应用程序,并确保这些数据能够正确、有效地传输到目的地。它处理的是应用程序之间的通信问题,而不是网络之间的通信。应用层协议定义了如何交换数据以及数据交换的格式。

特点

  1. 服务至上:应用层为用户的应用程序提供网络服务,例如HTTP用于网页浏览,SMTP用于电子邮件发送,FTP用于文件传输等。
  2. 抽象性:应用层为应用程序提供了一个与网络细节隔离的接口,使得应用程序开发者无需关心数据如何在网络上传输。
  3. 端到端通信:应用层负责在网络的源端和目的端之间建立、维护和终止通信会话。
  4. 协议多样性:应用层包含多种协议,以支持不同类型的应用程序和网络服务。

功能

  1. 数据格式化:应用层将应用程序的数据转换为适合网络传输的格式,并在接收端将网络数据转换为应用程序可以使用的格式。
  2. 会话管理:应用层负责建立、管理和终止应用程序之间的会话。
  3. 表示和编码:应用层处理数据的表示和编码问题,以确保数据在网络中能够被正确理解和处理。
  4. 安全性:应用层可以实现用户认证、数据加密等安全措施,以保护数据在传输过程中的安全性。
  5. 错误处理:应用层检测和处理应用程序层的错误,并向用户报告错误信息。
  6. 交互性:应用层为用户提供交互界面,使用户能够方便地使用网络服务。

应用进程通信方式

客户/服务器方式

应用层的许多协议是基于C/S方式,例如,在移动互联网环境下,每个应用APP都是一个客户端

  • 客户(client)和服务器(server)是指通信中所涉及的2个应用进程
  • 客户/服务器方式描述的是应用进程之间服务和被服务的关系
  • 客户是服务请求方(主动请求服务,被服务)
  • 服务器是服务提供方(被动接受服务请求,提供服务)

C/S方式可以是面向连接的,也可以是无连接的

面向连接时,C/S通信关系一旦建立,通信就是双向的,双方地位平等,都可发送和接收数据

客户/服务器模型的特点
  • 分布式处理:在C/S模型中,客户端和服务器的处理任务是分开的。客户端负责用户界面和部分数据处理,服务器负责数据存储和复杂计算。
  • 网络通信:客户端和服务器通过网络进行通信,通常使用TCP/IP协议或其他网络协议。
  • 模块化设计:C/S模型采用模块化设计,客户端和服务器各自专注于特定的功能,有利于系统的维护和扩展。
  • 灵活性和可扩展性:C/S模型可以根据需要增加或减少服务器和客户端的数量,具有一定的灵活性和可扩展性。
  • 客户端依赖性:在C/S模型中,客户端通常需要知道服务器的地址和端口号,以便建立连接和发送请求。
对等方式
  1. 对等方式是指两个进程在通信时并不区分服务的请求方和服务的提供方
  • 只要两个主机都运行P2P软件,它们就可以进行平等、对等的通信
  • 双方都可以下载对方存储在硬盘中的共享文档,如果权限允许的话
  1. 音频/视频应用推动了P2P对等通信方式的发展(BitTorrent)
  2. 音频/视频流量已占主要比
  3. P2P方式从本质上看仍然是使用了C/S方式,但强调的是通信过程中的对等,这时每一个P2P进程既是客户同时也是服务器

服务器进程工作方式

循环模式

在循环模式中,服务器进程在处理完一个客户端的请求后,会返回并等待下一个请求。

这种模式适用于请求处理时间短且不需要长时间保持连接的应用场景。

循环模式分为两种:

无连接循环方式:服务器在每个请求处理完毕后立即断开连接,等待下一个连接。

有连接循环方式:服务器保持与客户端的连接打开,直到客户端断开连接或超时。

并发模式

在并发模式中,服务器能够同时处理多个客户端请求,这通常是通过多线程或多进程实现的。

这种模式适用于需要同时处理大量请求或请求处理时间较长的应用场景。

并发模式也分为两种:

多线程并发方式:服务器为每个客户端请求创建一个新的线程,这些线程并发运行。

多进程并发方式:服务器为每个客户端请求创建一个新的进程,这些进程并发运行。

域名系统

域名系统(Domain Name System,DNS)是一个分布式数据库,用于将易于记忆的域名(如www.example.com)与难以记忆的IP地址(如192.0.2.1)进行转换。它使得用户可以通过输入域名来访问互联网上的资源,而不需要记住每个网站的IP地址。

域名解析

当用户在浏览器中输入一个域名时,会触发一次域名解析的过程。这个过程大致如下:

本地DNS缓存查询:首先,用户设备会检查本地DNS缓存,查看是否已经记录了该域名的IP地址。

本地DNS服务器查询:如果没有找到,用户设备会向本地DNS服务器发送请求。

递归查询:如果本地DNS服务器没有该记录,它会向更高级别的DNS服务器发送递归查询请求。

迭代查询:这个过程会一直向上查询,直到找到该域名的权威DNS服务器,或直到所有DNS服务器都查询完毕。

响应与缓存:一旦找到,权威DNS服务器会将IP地址返回给本地DNS服务器,本地DNS服务器再将其返回给用户设备,并缓存这个记录以供未来使用。

相关推荐
qq_243050792 小时前
dnsmap:DNS枚举 详细完整教程 Kali Linux&Termux入门教程 黑客渗透测试 信息收集
linux·网络·安全·web安全·网络安全·系统安全·ddos
芒果爱编程2 小时前
MCU、ARM体系结构,单片机基础,单片机操作
开发语言·网络·c++·tcp/ip·算法
小春学渗透4 小时前
DAY168内网对抗-基石框架篇&单域架构&域内应用控制&成员组成&用户策略&信息收集&环境搭建
网络·安全·架构·内网攻防
Pou光明5 小时前
1_linux系统网络性能如何优化——几种开源网络协议栈比较
linux·运维·网络·网络协议·开源
路-buan5 小时前
华为eNSP:VRRP的主备备份
网络·华为·智能路由器
feing.5 小时前
路由介绍.
网络
Tony聊跨境5 小时前
如何绕过IP禁令
网络·网络协议·tcp/ip·智能路由器·ip
C++忠实粉丝6 小时前
计算机网络之NAT、代理服务、内网穿透、内网打洞
网络·c++·网络协议·计算机网络·http·智能路由器
qq_254674416 小时前
华为 生产网解决方案,加速制造业数字化转型
网络
hanniuniu136 小时前
有效抵御网络应用及API威胁,聊聊F5 BIG-IP Next Web应用防火墙
网络·网络协议·tcp/ip