一、计算机网络体系结构
计算机网络&因特网:
**计算机网络定义:**将地理位置不同的具有独立功能的多台计算机及其外部设备,通过通信线路连接起来,在网络操作系统,网络关联软件及网络协议的管理和协调下,实现资源共享和信息传递的计算机系统
**计算机网络组成:**资源子网和通信子网
互联:计算机网络之间可以通过有线或无线的方式进行数据通信
自治:每一个独立的计算机有着自己的软件和硬件,可以单独运行
集合:至少需要两台计算机
因特网: 一种特殊的计算机网络,其定义可以从具体构成描述 和服务描述两个方面叙述。
**具体构成描述:**因特网是一种世界范围的计算机网络,即一个互联了遍及全世界的数亿计算设备的网络。
**服务描述:**为应用程序提供服务的基础设施
计算机网络体系结构
OSI参考模型
TCP/IP参考模型
数据传输方式
单工
只能单方向传输工作模式
双工
在同一时间,线路上只能允许一个方向的数据通过
全双工
双方都可以同时进行数据通信
按照传输对象(方式)分类
单播(1对1),多播(1对n),广播(1对all)
三种数据交换方式
路由器是实现分组交换的关键结构,其任务是转发收到的分组,这是网络核心部分最重要的功能。
传统两两相连范式:指每个设备都与其他设备直接相连,形成一个点对点的连接。这种方式通常用于小型网络或直接连接两个设备的情况。每个连接都需要独占的物理链路,因此成本较高。常见的两两相连的网络包括以太网。
电路交换
在通信开始之前,建立一条完整的通信路径(电路),并且在整个通信过程中保持该电路不变。这种方式适用于实时数据传输,如电话通信。在建立电路期间,资源被保留并独占使用,因此效率较低。常见的电路交换网络包括传统的电话网络。
分组交换
将数据分割成较小的数据包,通过网络独立传输,并在目标设备上重新组装成完整的数据。分组交换将数据包按需传输,通过共享网络资源提高了传输效率。常见的分组交换网络包括互联网。
发送过程
发送方
构造分组
发送分组
路由器
缓存分组
转发分组
简称为"分组转发"
路由器处理报文的过程
把收到的分组翻入缓存
查找转发表找出到某个目的地地址应该从哪个端口转发
把分组送到适当的端口转发出去
接收方
接收分组
还原报文
分组交换中的时延、丢包和吞吐量
时延:时延是数据从发送端到接收端所经历的时间。在分组交换网络中,时延可以分为以下几种类型:
- 传输时延:数据在传输介质上传输所需要的时间,取决于数据的长度和传输速率。
- 传播时延:数据在传输介质上传播所需要的时间,取决于传输介质的物理特性,如传播速度。
- 处理时延:数据在网络节点进行处理所需要的时间,包括路由决策、转发等操作。
- 排队时延:数据在网络节点的队列中等待处理所需要的时间,取决于网络节点的负载情况。
- 总时延:
丢包:丢包是指在传输过程中数据包丢失或损坏的现象。丢包可以由多种因素引起,如网络拥塞、传输错误、路由错误等。丢包会导致数据传输的错误和重传,从而降低网络的性能和吞吐量。
排队时延引起的丢包:1.缓冲区满导致的丢包 2.排队时间过长导致的丢包 3.拥塞控制导致的丢包 4.时延敏感应用丢包
端到端时延(不考虑拥塞):
吞吐量:吞吐量是指网络在单位时间内能够传输的数据量。在分组交换网络中,吞吐量受到多个因素的影响,包括网络带宽、传输速率、丢包率等。吞吐量是衡量网络性能的重要指标,高吞吐量表示网络能够高效地传输数据。
报文交换
报文交换中的交换节点也采用存储转发的方式,对报文的大小没有限制,这要求结点交换机有较大的缓存空间。
对比
网络协议(protocol)
协议(protocol):定义了在两个或多个通信实体之间交换报文的格式和顺序,以及报文发送、接收或其他实现所采取的操作
三要素 :语法、语义、同步(时序)
**语法:**用户数据与控制信息的结构格式
**语义:**需要发出的控制信息,以及完成的动作和做出的响应
**同步(时序):**实践实现顺序的详细说明
网络边缘&网络核心
**端系统(主机host):**与英特网相连的计算机和其他设备。分为客户(client)和服务器(server)
**网络核心:**提供信息交换的网络节点和通信线路
网络边缘&网络核心的 区别
位置:
网络边缘指离终端用户最近的网络基础设施,如WiFi接入点、基站等。它们位于网络的外围。
网络核心指运营商核心网中的路由器、交换机等核心设备,它们位于网络的内部核心区域。
功能:
网络边缘侧重于为终端用户和物联网设备提供网络接入服务。
网络核心负责传输和交换网络流量,实现不同网络区域和终端之间的连接。
性能:
网络边缘设备处理能力和带宽资源相对有限。
网络核心设备性能更强大,具有更高的处理能力和传输带宽。
应用场景:
网络边缘更适用于低延迟应用,如VR/AR、工业自动化等。
网络核心主要负责长距离和大流量的传输交换。
发展趋势:
网络边缘计算将边缘资源与终端更紧密集成,为低延迟服务提供支持。
网络核心将持续优化传输效率和服务质量,支持5G和大数据应用发展。
计算机网络的类型
按照覆盖范围分类
广域网(Wide Area Network)
连接不同地理位置的网络,比如互联网。使用公共通信基础设施,如电话线、卫星通信等。
城域网(Metropolitan Area Network)
连接一个城市或一个地区内的网络。使用专用通信线路。
局域网(Local Area Network)
连接一个单位或者一个建筑内的计算机。使用以太网或无线网络等技术。范围一般在几百米到几公里内。
个域网(Personal Area Network)
连接个人电子设备的短距离无线网络。范围一般在10米内。主要技术有蓝牙等。
按照拓扑结构分类
按传输方式分类
有线网络
使用同轴电缆、双绞线、光纤等物理介质进行数据传输。
无线网络
使用射频、红外线、蓝牙等无线技术进行短距离无线数据传输。
二、应用层
网络应用体系结构
客户-服务器体系结构(client-server architecture)
客户相互之间不直接通信
该服务器具有固定的、周知的地址,该地址称为IP地址
数据中心(托管大量主机):用于创建强大的虚拟服务器。
P2P体系结构(P2P architecture)
程序在主机对之间直接通信
自拓展性:每个对等方通过向其他对等方分发文件为系统提供服务能力;
进程通信
网络应用程序是由成对的进程组成,这些进程通过网络相互发送报文。
- 在两个端系统上的进程,通过跨越计算机网络交换报文而相互通信。
- 发送进程生成并向网络中发送报文。
- 接收进程接收这些报文并可能通过回送报文进行响应
客户和服务器进程
客户(client):发起通信的进程
服务器(server):在会话开始时等待联系的进程
对于web而言,浏览器是一个客户进程,Web服务器是一个服务器进程
进程寻址
进程寻址是指操作系统对进程进行标识和定的过程。在计算机中,每个进程都有一个唯一的标识符(PID),操作系统通过PID来找到和管理进程。
进程寻址的过程可以分为以下几个步骤:
创建进程:当用户或系统需要运行一个程序时,操作系统会为该程序创建一个新的进程。在创建进程的过程中,操作系统会为进程分配一个唯一的PID。
进程表:操作系统会维护一个进程表,其中记录了所有正在运行的进程的相关信息,包括PID、进程状态、内存地址等。
进程调度:操作系统根据一定的调度算法,从就绪态的进程中选择一个进行调度,使其进入运行态。
进程切换:当一个进程被调度执行时,操作系统会将CPU的控制权从当前进程切换到目标进程。这涉及到保存当前进程的上下文信息(包括寄存器的值、程序计数器等),并恢复目标进程的上下文信息。
内存管理:操作系统会为每个程分配一定的内存空间,用于存储进程的代码、数据和运行时的栈等。进程的内存地址空间由操作系统进行管理分配。
进程间通信:在多进程系统中,进程之间需要进行通信和数据交换。操作系统提供了一些机制,如管道、共享内存、消息队列等,用于进程间的通信。
因特网提供的通信服务
TCP服务
面向连接的服务:在应用层数据报文开始流动之前,TCP让客户和服务器相互交换运输层控制信息。
可靠的数据传输服务:通信进程能够依靠TCP,无差错、按适当顺序交付所有发送的数据。
TCP三次握手:建立TCP连接时使用的一种握手过程,用于确认通信双方的能力和同步初始序列号。三次握手中前两个部分所消耗的时间占用一个RTT(往返时间)。第三次握手所消耗的时间占用一个RTT。因此总的响应时间就是两个RTT加上服务器传输HTML文件的时间。
- **第一次握手:**客户端向服务器发送一个SYN(同步)包,其中包含客户端的初始序列号(ISN)。
- **第二次握手:**服务器收到SYN包后,会回复一个SYN-ACK(同步-确认)包,其中包含确认号(ACK)为客户端的ISN加1,同时服务器也会选择自己的ISN。
- **第三次握手:**客户端收到服务器的SYN-ACK包后,会回复一个ACK(确认)包,其中ACK的值为服务器的ISN加1。
**TCP四次挥手:**TCP连接的关闭过程,它由客户端和服务器之间四个步骤组成。这四个步骤分别是:
- **第一次挥手:**客户端向服务器发送一个FIN(结束)信号,表示客户端不再发送数据。
- **第二次挥手:**服务器收到FIN信号后,向客户端发送一个ACK(确认)信号,表示服务器已经收到了客户端的FIN信号。
- **第三次挥手:**服务器向客户端发送一个FIN信号,表示服务器不再发送数据
- **第四次挥手:**客户端收到服务器的FIN信号后向服务器发送一个ACK信号,表示客户端已经收到了服务器的FIN信号
UDP服务
UDP是一种只提供必要服务的轻量级运输协议,它仅提供最低限度的数据运输服务。
无连接的数据传输服务:传输数据不建立连接,因此也就不需要维护连接状态,包括收发状态等, 因此一台服务机可同时向多个客户机传输相同的消息。
不可靠的数据传输服务:UDP不保证报文可以到达接收进程,也不保证到达接收进程的报文不是乱序到达的。
常见的应用的应用层协议&支撑的运输协议
|--------|-------------------------------------|---------|
| 应用 | 应用层协议 | 支撑的运输协议 |
| 电子邮件 | SMTP[RFC 5321] | TCP |
| 远程终端访问 | Telnet[RFC 854] | TCP |
| Web | HTTP[RFC 7230] | TCP |
| 文件传输 | FTP[RFC 959] | TCP |
| 流媒体 | HTTP,DASH | TCP |
| 因特网电话 | SIP[RFC 3261]、RTP[RFC 3550]或专用的 | UDP或TCP |
应用层协议
HTTP协议(超文本传输协议)
HTTP协议(超文本传输协议)是一种用于在客户端与服务器之间传输数据的协议。它是互联网上最常用的协议之一,被广泛应用于网页浏览、文件传输、视频播放等各种网络应用中。
非持续连接的HTTP
非持续连接是指每次发起请求时都需要重新建立连接。在这种方式下,客户端发送一个请求,服务器收到请求后返回响应,并立即关闭连接。这种连接方式的优点是简单、快速,但缺点是每次请求都需要重新建立连接,增加了网络负担,尤其是在并发请求较多的情况下。
连接过程
假设访问的网页的URL为http://www.xxx.com/someDepartment/home.index
-
HTTP客户端进程在端口80发起一个到服务器www.xxx.com的TCP连接
-
HTTP客户经它的套接字向服务器发送一个HTTP请求报文。
-
HTTP服务器进程经它的套接字接收该请求报文,从其存储器中检索出对象somDepartment/home.index,在一个HTTP响应报文中封装对象,并通过套接字发送给用户。
-
HTTP服务器进程通知TCP断开该TCP连接。
5.HTTP客户端收到响应报文,TCP关闭
- 对每个应用的JPEG图形对象重复前4个步骤
持续连接的HTTP
持续连接是指客户端与服务器之间建立一条长时间保持的连接。在这种方式下,客户端可以连续发送多个请求,服务器也可以连续返回多个响应。这种连接方式的优点是减少了连接建立和关闭的开销,提高了网络传输效率。然而,如果连接时间过长,可能会导致资源浪费和连接过多的问题。
连接过程
-
HTTP客户端进程在端口80发起一个到服务器www.xxx.com的TCP连接
-
HTTP客户经它的套接字向服务器发送一个HTTP请求报文。
-
HTTP服务器进程经它的套接字接收该请求报文,从其存储器中检索出对象somDepartment/home.index,在一个HTTP响应报文中封装对象,并通过套接字发送给用户。
-
客户端接收到报文后保持TCP连接不关闭。在同一个TCP上发送额外的HTTP请求。
-
客户端或服务器主动发送FIN报文关闭TCP连接时,对方会返回ACK报文完成四次挥手释放连接。
HTTP报文格式
1、HTTP请求报文
来源:知乎@Robin
2、响应报文
来源:知乎@Robin
cookie(小型文本数据)
由于HTTP协议时无状态的,我们需要使用cookie的技术用来存储用户的状态
cookie有4个组件 :
- 在HTTP响应报文中的一个cookie首部行
- 在HTTP请求报文中的一个cookie首部行
- 在用户系统中保留的一个cookie文件,并由用户的浏览器进行管理
- 位于Web站点的一个后端数据库
Web缓存(代理服务器)
代表初始Web服务器来满足HTTP请求的网络实体。
工作流程:
- 浏览器创建一个到web缓存器的TCP连接,并向Web缓存器中的对象发送一个HTTP请求
- Web
- Web缓存器进行检查,看看本地是否存储了该对象副本。如果有,Web缓存器就向客户浏览器用HTTP响应
- 如果Web缓存器中没有该对象,它就打开一个与该对象的初始服务器的TCP连接。Web缓存器则在这个缓存器到服务器的TCP连接。Web缓存器则在这个缓存器到服务器向该Web缓存器发送具有该对象的HTTP响应
- 当Web缓存器接收到该对象时,它在本地存储空间存储一份副本,并向客户用HTTP响应报文发送该副本(通过用户浏览器和Web缓存器之间现有的TCP连接)。
DNS:因特网的目录服务
DNS(域名系统):一个由分层的DNS服务器实现的分布式数据库;一个是的主机能够查询分布式数据库的应用层协议。
DNS服务
假设用户主机上的一个浏览器请求URL www.someschool.edu/index.html。为了让用户主机准确地将HTTP报文发送的正确的Web服务器www.someschool.edu,DNS会进行以下工作:
- 同一台用户主机上运行着DNS应用的客户端
- 浏览器从上述URL中抽取主机名,并将主机名传递给DNS应用的客户端
- DNS客户向DNS服务器发送一个包含主机名的请求
- DNS客户最终会收到一份回答报文,其中含有该主机名的IP地址
- 一旦浏览器接收到来自DNS的该IP地址,它就向位于该IP地址80端口的HTTP服务器进程发起一个TCP连接
上述只是DNS提供的众多服务中最常用的服务,以下是DNS提供的常见服务:
域名解析
DNS服务的核心功能是将域名转化为IP地址,即域名解析。比如将www.example.com解析为192.0.2.1。
负载均衡
DNS可以将同一个域名映射到多个IP地址上,从而实现网站流量的负载均衡。
缓存
DNS服务器会缓存最近查询过的域名与IP地址映射关系,提高后续查询效率。
故障转移
DNS支持将同一个域名映射到多个备用IP地址,如果主IP失败就自动切换到备IP,实现故障转移。
安全功能
DNS支持配置安全功能,如DNSSEC防止DNS污染,DNS过滤功能屏蔽恶意网站等。
动态DNS
动态DNS服务可以自动更新常变IP地址,比如家庭宽带或云主机的公网IP。
反向查询
通过IP地址查询域名,即反向查询,用于Troubleshooting和信息查询等。
Whois查询
Whois服务提供域名注册信息查询服务,查询域名所有者等注册详细信息。
所以总体来说,DNS服务主要实现域名与IP地址的对应解析,并提供负载均衡、缓存、安全等附加功能。
DNS(将主机地址转换IP地址)工作机理概述
工作流程:
- 勇敢主机上的应用程序将调用DNS的客户端,并指明需要被转换的主机名称。
- 用户主机上的DNS接到后,向网络中发送一个DNS查询报文。
- 所有的DNS请求和回答报文使用UDP数据报文经端口53发送。
- 经过若干毫秒或若干秒的时延后,用户主机上的DNS接收到一个提供所希望映射的DNS回答报文。
- 这个映射结果则被传递到调用DNS的应用程序上。
分布式、层次数据库
至上而下的三个层次分布代表:
根DNS服务器。
- 存储并管理顶级域(如.com、.edu等)到具体顶级域名称服务器的映射关系。
顶级域(TLD)DNS服务器。
- 管理特定顶级域(如.com、.cn等)下的子域名信息。
- 每个顶级域各自设立管理机构运营对应的TLD名称服务器。
- 比如.com域名由美国商业网管理的TLD服务器提供解析服务。
权威DNS服务器。
也称为主DNS或原始DNS,直接管理某一域名及其相关资源记录信息。
对应域名注册机构会指定一台或多台权威DNS为该域名提供解析服务。
比如对于域名www.baidu.com,百度作为域名注册方,会指定内部DNS作为该域名的权威DNS服务器。
除了上面的三类重要DNS服务器,还有一类重要的服务器叫做本地DNS服务器。本地的DNS服务器并不属于服务器的层次结构,但是至关重要。
DNS缓存
DNS缓存可以分为两种类型:本地DNS缓存和递归DNS缓存。
本地DNS缓存:每个计算机或设备都会保存最近访问过的域名和对应的IP地址的记录。本地DNS缓存的生命周期较短,一般只有几分钟到几小时,根据TTL(Time to Live)设置。
递归DNS缓存:该缓存由Internet服务提供商(ISP)或企业网络中的DNS服务器维护。递归DNS服务器会将用户的DNS请求转发给其他DNS服务器,并保存查询结果,以便其他用户或设备进行访问。递归DNS缓存的生命周期较长,通常为几小时到几天。
DNS记录和报文
DNS 报文分为 请求 和 应答 两种,结构是类似的,大致分为五部分:
- 头部( header ),描述报文类型;描述报文类型和控制信息。(12字节)
- 问题节( question ),保存查询问题;保存需要查询的域名等信息。
- 答案节( answer ),保存问题答案,也就是查询结果;返回查询结果。
- 授权信息节( authority ),保存授权信息;提供域名的授权数据。
- 附加信息节( additional ),保存附加信息;给出附加的资源记录。
三、运输层(又称传输层)
概述:运输层服务
提供的服务
可靠的数据传输:运输层使用可靠的传输协议(如TCP)来确保数据的完整性、顺序性和可靠性。它通过序列号、确认和重传等机制来处理丢失、重复和损坏的数据。
流量控制:运输层使用流量控制机制来协调源和目标之间的数据传输速率,以防止目标端不堪重负而导致数据丢失。它通过发送/接收窗口大小的动态调整来实现流量控制。
拥塞控制:运输层使用拥塞控制机制来控制网络中的数据流量,以避免网络拥塞。它通过动态调整发送速率和接收速率来确保网络的稳定性和公平性。
与网络层的关系
运输层通过使用网络层提供的服务来实现数据的传输。运输层将数据分割为较小的数据块,并将这些数据块封装为网络层的IP数据包。然后,运输层将这些IP数据包发送到目标主机,并在接收端重新组装和重建这些数据块,最终将数据传递给应用层。因此,运输层依赖于网络层的路由选择和数据传输功能,以实现端到端的数据传输服务。
多路复用和多路分解
多路分解:将运输层报文段中的数据交付到正确的套接字的工作
多路复用:在源主机从不同套接字中收集数据块,并为每个数据块封装上首部信息从而生成报文段,然后将报文段传递到网络层,所有这些工作称为多路复用
无连接的多路复用与多路分解
无连接的多路复用是指在数据传输过程中,不需要建立连接的情况下,可以同时发送多个数据流,这些数据流被混合在一起传输,接收端根据一定的规则进行分解和恢复原始的数据流。
面向连接的多路复用与多路分解
面向连接的多路复用是指在数据传输之前,需要先建立连接,然后再将多个数据流混合在一起传输。
无连接的用户数据运输:UDP
由[RFC 768]定义的UDP只是做了运输层协议能够做的最少工作。除了复用/分解功能及少量的差错检测外,它几乎没有在IP协议上增加任何内容
UDP的优势
**无连接状态:**UDP是无连接的传输协议,不需要在发送数据之前建立连接。这意味着UDP在传输数据时不需要进行三次握手和四次挥手的过程,从而减少了延迟和资源消耗。
**分组首部开销小:**UDP的分组首部相对较小,只有8字节,而TCP的分组首部至少为20字节。这主要是因为UDP不需要维护连接状态、流量控制和拥塞控制等功能,减少了额外的开销。
**发送数据的应用层控制更为精细:**UDP在应用层可以更加灵活地控制发送什么数据以及何时发送。TCP是面向字节流的传输协议,数据被切割成一个一个的数据包进行传输,而UDP可以自由地将应用层的数据封装成数据包进行发送,可以根据具体的应用需求进行更精细的控制
UDP报文段结构(RFC 768标准)
解释:
- Source Port:源端口号,表示发送端口
- Destination Port:目标端口号,表示接收端口
- Length:UDP报文长度,包含UDP报文头和数据部分的长度
- Checksum:校验和,用于检测报文在传输过程中是否有错误
- data octets:数据段,包含实际需要传输的数据
- Source Port, Destination Port, Length,Checksum组成报文首部,每个部分占16比特;整个头部共占64比特(8字节)
面向连接的用户数据传输:TCP
TCP(Transmission Control Protocol)是一种面向连接的、可靠的传输协议,位于OSI模型的传输层。它提供了可靠的数据传输和流控制机制,确保数据的完整性、顺序性和可靠性。
TCP的优势
可靠传输 - TCP可以检测和纠正传输错误,如果数据包在传输过程中丢失或者损坏,它可以请求重传,确保数据准确无误地传送到对方。UDP没有这个机制,是不可靠的传输。
序列化 - TCP可以正确排序接收到的分段,还可以检测是否遗漏分段。UDP无此功能。
流量控制 - TCP可以控制发送速度,防止发送端发送数据过快导致接收端处理不及时。UDP没有流量控制机制。
拥塞控制 - TCP通过拥塞控制算法调整发送窗口大小,避免网络拥塞。UDP没有此机制。
端口多路复用 - TCP可以在一个端口上同时支持多个连接,而UDP只能一个端口对应一个服务。
安全性更强 - TCP连接需要三次握手建立,四次挥手断开,更安全可靠。UDP是无连接的。
性能更好 - TCP通过累积确认机制可以提高网络利用率,且可以按需调整分片大小,适应不同带宽网络。
TCP报文
TCP报文包含以下主要字段:
-
源端口(Source Port):发送方端口号,2字节。
-
目标端口(Destination Port):接收方端口号,2字节。
-
序列号(Sequence Number):数据包第一个字节的序列号,4字节。
-
确认号(Acknowledgment Number):期待接收的下一个字节序列号,4字节。
-
数据偏移(Data Offset):TCP头长度,4位。
-
保留位(Reserved):保留位,6位。
-
控制标志(Control Flags):SYN,FIN,RST,PSH,ACK,URG等控制位,6位。
-
窗口大小(Window Size):发送方允许接收方发送窗口大小,2字节。
-
校验和(Checksum):校验和,2字节。
-
紧急指针(Urgent Pointer):紧急数据指针,2字节。
-
数据(Data):可变长的数据字段。
TCP报文段首部还包含下列字段:
序号字段:32bit 。确认号字段:32bit。接收窗口字段16bit。首部长度字段4bit。选项字段。标志字段6bit。
序号和确认号
序列号(Sequence Number):
每个TCP段都有一个32位的序列号字段,用来标识该段内第一个数据字节在整个TCP会话中的位置。
序列号从0开始计数,每发送一个字节,序列号就增加1。
这样接收方就可以按顺序把各个段中的数据重新组装起来。
确认号(Acknowledgment Number):
每个TCP段都有一个32位的确认号字段,它表示接收方期待收到的下一个字节的序列号。
即确认号就是发送方上一个完整收到的段的序列号加1。
发送方根据确认号知道接收方已经成功接收的数据长度,以决定重传或者继续发送新数据。
工作原理:
- 发送方发送数据段,序号为X
- 接收方接收到后,发送确认段,确认号为X+1,表示已经接收到序列号X字节
- 发送方根据确认号,知道接收方已收到X字节,则可以继续继续发送序列号为X+1的新数据
- 如果某个数据段丢失需要重传,发送方根据确认号判断需要重传的数据范围
Telnet:序号和确认号的一个学习案例
Telnet:由RFC 854定义的网络管理协议。
作用:
序列号可以标识数据包顺序,避免乱序。
确认号确认收到的数据包序列号,发送端根据确认号判断数据是否成功送达。
如果确认号不连续,说明有数据包丢失,发送端可以进行重传。
所以通过序列号和确认号交互,telnet实现了可靠传输,可以检测和纠正传输错误。
TCP流量控制(滑动窗口)
定义:TCP的滑动窗口是一种流量控制机制,用于在发送方和接收方之间调整数据传输的速率。滑动窗口的大小决定了发送方可以连续发送的数据量,而接收方通过确认数据的方式告知发送方可以继续发送的数据量。滑动窗口的大小由接收方动态调整,它通过TCP报文中的窗口字段来表示。发送方根据接收方的窗口大小来决定发送数据的数量,发送方发送的数据会被分成多个TCP报文段,每个报文段的大小不超过窗口大小。
工作流程:
- 当发送方发送一个报文段后,会等待接收方发送的确认报文段。如果接收方正确接收到报文段并发送了确认,发送方会将窗口向前滑动,即窗口的起始位置向前移动。这样发送方就可以发送下一个报文段了。
- 如果发送方没有收到确认报文段,或者接收方的窗口大小变小,发送方会认为网络拥塞或接收方无法接收更多数据,此时发送方会减小发送速率,即减小滑动窗口的大小。
- 滑动窗口可以有效地控制数据传输的速率,避免了发送方发送过多数据导致网络拥塞或接收方无法处理的情况。同时,滑动窗口还可以提高数据传输的效率,允许发送方发送多个数据段而无需等待确认。
TCP拥塞控制
TCP拥塞控制是一种网络拥塞管理机制,它通过监测网络的拥塞状态并采取相应的措施来保证网络的稳定性和公平性。TCP拥塞控制主要包括四个机制:慢启动 、拥塞避免 、快速重传 和快速恢复。
慢启动:在TCP连接开始时,发送方将初始拥塞窗口设置为一个较小的值,然后逐渐增大拥塞窗口的大小,以测试网络的拥塞程度。每当发送方收到一个确认报文时,拥塞窗口的大小就会加倍,从而使得数据传输速率逐渐增加。
拥塞避免:一旦拥塞窗口的大小达到一个阈值(拥塞窗口阈值),发送方就会进入拥塞避免阶段。在该阶段,发送方每收到一个确认报文,拥塞窗口的大小就会增加1/MSS(最大报文段大小)的大小。这样可以使得数据传输速率缓慢增长,以避免网络拥塞。
快速重传:当发送方连续收到三个重复的确认报文时,说明接收方可能已经丢失了一个报文段。为了快速恢复丢失的数据,发送方立即重传丢失的报文段,而不是等待超时重传。
快速恢复:在进行快速重传后,发送方将拥塞窗口的大小减半,并将拥塞窗口阈值设置为当前拥塞窗口的一半。然后发送方继续以拥塞避免算法来增大拥塞窗口的大小,以逐渐恢复数据传输速率。
- 当拥塞窗口(cwnd)大小达到慢开始门限值(ssthresh)时开始启用拥塞避免算法,慢开始窗口线性增大
- 当出现三个重复的ACK时,TCP将慢开始门限设为此时拥塞窗口的一半并将拥塞窗口减半,启用拥塞避免算法。发送方执行快恢复和快重传算法
- 当出现,TCP将慢开始门限设置为此时拥塞窗口的一半,并将拥塞窗口设置为1,进入新的慢开始阶段。
四、网络层:数据平面
网络层:数据平面概述
网络层的数据平面负责实现网络层的主要功能,即将数据包从源主机传输到目的主机。数据平面主要包括以下功能:
路由选择:根据目的地址选择最佳路径将数据包传输到目的主机。
分组处理:将数据流划分为多个数据包,并在每个数据包中添加必要的头部信息,如IP头部信息。
数据包转发:根据路由选择算法将数据包转发到正确的目的地。
数据包过滤:根据一定的规则,过滤掉不需要传输的数据包,如防火墙功能。
数据包重组:将分散在不同数据包中的数据重新组合成完整的数据流。
路由器工作原理
路由器组成
来源:知乎@该用户已注册
- 输入端口
- 当交换机构的速率小于输入端口的汇聚速率时,在输入端口可能要排队
- Head-of-the-Line(HOL)blocking:排在队头的数据报阻止了队列中其他数据报阻止了队列中其他数据向前移动
- 交换结构
- 将分组从输入缓冲区传输到合适的输出端口
- N个输入端口:交换机构的交换速度时输入线路速度的N倍比较理想,才不会成为瓶颈
- 输出端口
- 输出端口存储从交换结构接收的分组,并通过执行必要的链路层和物理层功能在输出链路上传输这些分组。
- 由调度规则选择排队的数据报进行传输
- 路由选择处理器
- 执行控制平面功能
- 在传统路由器中,执行路由器选择协议,维护路由选择表与关联链路状态信息,并计算转发;
- 在SDN路由器中,负责与远程控制器通信,接收远程控制器计算的转发,并安装在输入端口;
输入端口处理和基于目的地转发
基于目的地转发是指路由器根据数据包的目标地址,选择适当的路径将其转发到下一跳。路由器通过查找路由表中的目标地址和相关信息,确定下一跳的路径。这个过程涉及到路由算法和路由协议的应用,以确保数据包能够按照最佳路径进行传输。
交换
交换是指路由器在转发数据包时,将数据包从输入端口传输到输出端口的过程。路由器使用交换矩阵或交换结构来实现数据包的交换。这种交换方式可以基于电路交换、报文交换或分组交换等不同的技术。
输出端口处理
输出端口处理是指路由器在将数据包从输入端口传输到输出端口时的处理过程。在此过程中,路由器会对数据包进行缓存、重新排序和重组等操作,以确保数据包能够以适当的顺序和完整性传输到输出端口。
何时出现排队
当数据包到达路由器时,可能会发生排队现象。这是因为路由器的处理能力有限,无法立即处理所有的数据包。当输入端口的数据包到达速率超过路由器的处理能力时,就会出现排队。路由器会将这些数据包存储在缓冲区中,并按照先进先出的原则进行处理。
分组调度
为了解决排队问题,路由器采用分组调度的技术。分组调度是指路由器根据一定的策略,从排队的数据包中选择优先级高的数据包进行处理。常见的分组调度算法包括先来先服务(FIFO)、最短作业优先(SJF)和最高优先级调度(HPF)等。
网际协议
IPv4
IPv4数据报格式
IPv4报文格式如下:
-
版本号(Version):占4位,表示IP协议的版本,IPv4的版本号为4。
-
报头长度(Header Length):占4位,表示IPv4头部的长度,以4字节为单位。
-
服务类型(Type of Service):占8位,用于指定数据包的优先级和服务质量。
-
总长度(Total Length):占16位,表示整个IPv4数据包的长度,包括头部和数据部分。
-
标识(Identification):占16位,用于标识数据包的唯一性。
-
标志(Flags):占3位,用于控制数据包的分片和重组。
-
片偏移(Fragment Offset):占13位,表示分片的偏移量。
-
生存时间(Time to Live):占8位,表示数据包在网络中的最大生存时间,用于防止数据包在网络中无限循环。
-
协议(Protocol):占8位,表示数据部分使用的协议,如TCP、UDP等。
-
头部校验和(Header Checksum):占16位,用于校验IPv4头部的完整性。
-
源IP地址(Source IP Address):占32位,表示数据包的源IP地址。
-
目的IP地址(Destination IP Address):占32位,表示数据包的目的IP地址。
-
选项(Options):可选字段,用于指定一些特定的处理要求。
-
填充字段(Padding):用于确保头部的长度是32位(4字节)的整数倍。
-
数据(Data):实际传输的数据部分。
从ISP获取一块IP地址
为了获得一块IP地址用于一个组织的子网内,网络管理员也许会首先于他的ISP联系,该ISP可能会从已分配给它的更大地址块中提供一些地址。
以下是常见的从ISP处获得IP地址的部分方式:
专线接入
大企业用户可以直接与ISP专线接入,获得一个或多个固定公网IP网段,自行在内部网络分配使用。
云服务器公网IP
用户可以在ISP或其他云服务提供商购买公网IP资源,如弹性IP。这种IP地址可以直接绑定到云主机上使用。
静态IP地址
这是最直接的获取方式,ISP会长期分配一个固定的公网IP地址给用户。这种IP地址可以直接用于主机连接Internet,但IP地址资源有限,费用也较高。
动态公网IP地址
ISP会动态分配一个公网IP地址给用户。每次连接Internet时,分配的IP地址可能不同。这种IP地址不适合运行服务器,但对普通用户来说足够使用。
获取主机地址:动态主机配置协议(DHCP)
动态主机配置协议(DHCP)是用于自动分配TCP/IP网络设置的网络协议DHCP广泛应用于家庭、小型企业网络以及大型企业部门网络,可以实现自动化和中心化管理的网络配置。它简化了TCP/IP网络的管理和维护工作。
DHCP主要功能和特点:
IP地址分配:DHCP服务器可以自动和动态地为客户端分配IP地址,避免手动配置。
租期管理:DHCP服务器可以限定IP地址的租期,过期后需要重新申请。
其他网络设置:除IP地址外,DHCP还可以自动为客户端分配子网掩码、默认网关、DNS服务器等网络设置。
资源管理:DHCP可以有效管理和重复利用有限的IP地址资源。
配置简单:客户端只需开启DHCP功能,无需手动配置IP等设置即可获取网络配置。
易于管理:网络管理员可以在DHCP服务器上进行统一管理和配置客户端网络设置。
DHCP工作过程:
客户端广播DHCP发现消息,寻找DHCP服务器。
服务器接收到后回应并提供可用IP地址。
客户端发送DHCP请求消息,要求分配IP地址。
服务器分配IP地址并回应,包含IP和其他网络设置。
客户端接收设置后即可使用,定期与服务器续约以保持配置。
IPv4编址
IPv4编址主要包括以下几个方面:
- IP地址结构:
IPv4地址采用点分十进制表示法,每个地址由4个十进制数组成,用点隔开,每个十进制数范围为0-255,表示一个8位的子网段,如192.168.1.1。
- IP地址分类:
按功能分为公用IP和私有IP。公用IP可以在Internet上唯一标识一个设备,私有IP仅在内部网络中有效。
- IP地址分配:
公用IP由IANA和RIR机构分配给ISP,ISP再分配给终端用户。私有IP分为3类:A类10.0.0.0-10.255.255.255、B类172.16.0.0-172.31.255.255、C类192.168.0.0-192.168.255.255。
- 子网掩码:
用于划分IP地址中的网络号和主机号两部分。如255.255.255.0表示前三段为网络号,最后一段为主机号。
- 网络地址与广播地址:
根据子网掩码,可以计算出网络地址(网络号全1)和广播地址(网络号全1主机号全1)。
- 端口地址:
每个IP连接需要一个端口号进行标识,范围为0-65535。其中0-1023为知名端口,1024-49151为注册端口,49152-65535为动态/私有端口。
寻址
计算机网络寻址是指在计算机网络中定位和标识网络中的计算机或设备的过程。寻址的目的是为了确保数据能够准确地传递给目标设备。
常见寻址形式:
-
IP 地址寻址:IP 地址是互联网中最常用的寻址方式。IP 地址是一个由四个 8 位二进制数组成的数值,用点分十进制表示,例如 192.168.0.1。IP 地址可以用于定位和标识网络中的计算机或设备。
-
MAC 地址寻址:MAC 地址是网络适配器网卡)的硬件地址,用来唯一标识网络中的设备。MAC 地址是一个由六个 16 进制数(0-9 和 A-F)组成的数值,例如 00:1A:2B:3C:4D:5E。MAC 地通常用于局域网内部的寻址。
-
URL 寻址:URL(统一资源定位器)是用来标识互联网上资源的地址。URL 包含了协议、主机名、路径等信息,例如 http://www.example.com/index.html。通过解析 URL,可以定位到特定的网页或资源。
-
域名寻址:域名是互联网上用来标识网站和服务器的人类可读的名称,例如 www.example.com。域名系统(DNS)将域名转换为对应的 IP 地址,从而实现通过域名进行寻址的功能。
-
端口号寻址:在计算机网络中,端口号用于标识特定的网络应用程序或服务。端口号是一个 16 位的整数,范围从 0 到 65535。通过指定目标设备的 IP 地址和端口号,可以准确地寻址到网络中的特定服务或应用程序。
网络地址转换(NAT)
网络地址转换(Network Address Translation,NAT)是一种网络地址转换技术。
NAT的主要作用和特点如下:
IP地址转换:NAT可以将内部网络的私有IP地址转换为公用全球唯一的IP地址,实现内外网通信。
地址资源节约:NAT可以有效节约IP地址资源,一个公用IP可以支持多个内部主机的互联网访问。
网络安全:NAT可以隐藏内部网络结构,增加网络安全性。
兼容性好:NAT技术与TCP/IP协议兼容性好,易于实现和部署。
NAT根据转换规则将数据包的源IP/端口或目的IP/端口进行地址转换:
源NAT:将内部主机的源IP和端口转换为NAT设备的IP和端口,用于内部主机访问外网。
目的NAT:将外部主机发来的数据包的目的IP和端口转换为内部主机的IP和端口,用于外部访问内部主机。
NAT根据转换时机分为静态NAT和动态NAT:
静态NAT:IP地址和端口映射关系固定不变。
动态NAT:IP地址和端口映射关系根据请求动态分配,会有时间限制后释放地址。
IPv6
IPv6:下一代IP版本,地址为128位,可支持更大的网络规模和更多的主机数量。
IPv6和IPv4的区别:
地址长度不同。IPv4地址长度为32位,地址空间为2^32个;IPv6地址长度为128位,地址空间为2^128个,足以满足未来几十年网络发展需求。
header结构不同。IPv6报头结构简化,去除了一些可选字段,使报头长度固定为40字节。
支持流量分类。IPv6增加了流量分类字段,可以为不同应用设置不同的服务质量。
支持自动配置。IPv6增加了状态less地址自动配置功能(SLAAC),可以实现无服务器自动分配IPv6地址。
支持扩展首部。IPv6允许在报头后增加可选的扩展首部,用于携带附加信息。
安全功能增强。IPv6增加了IPsec支持,提高了传输层安全性。同时支持ICMPv6报文增加节点可达性检测功能。
移除了IPv4兼容性选项。IPv6不再支持对IPv4的兼容转发等机制,纯粹基于IPv6协议栈运行。
支持移动性。IPv6增加了移动性支持(MOBIKE),更好支持移动节点的接入。
支持多播。IPv6增加了源特定多播和任播功能,更好支持多点传输应用。
管理简化。IPv6删除了一些历史遗留问题,如地址分类等,管理模式更加简化。
IPv6数据包格式
来源:CSDN@mcyuuji
IPv6格式如下:
-
版本:版本字段扩展为4位,标识IPv6协议版本号为6。
-
流标签:新增流标签字段,支持流量处理和多路径。
-
有效载荷:载荷格式与IPv4保持一致。
-
下一首部:标识数据报中的内容需要交付给哪个协议。
-
跳数限制:转发数据报的每台路由器将队该字段的内容减1.当跳数限制到达0时,则该数据报将被丢弃
-
源地址/目的地址:扩展为128位地址长度。
-
数据:IPv6数据报的有效载荷
-
拓展首部长度:新增4位次头长度字段标识扩展头部长度。
-
扩展首部:支持额外的选填头部,如路由、HOP限制等。
IPv6报文与IPv4报文的差别
-
版本:版本字段扩展为4位,标识IPv6协议版本号为6。
-
头长度:IPv6删除了头长度字段,因为IPv6头固定长度为40字节。
-
流标识:IPv6删除了流标识字段,因为它不再支持流量控制。
-
标志:IPv6删除了更多标志字段,如DF(不分段)、MF(更多片段)等字段。
-
片偏移:IPv6删除了片偏移字段,因为它不再支持分片。
-
生存时间:IPv6删除了生存时间字段,使用跳限制字段限定数据报的最大跳数。
-
头 checksum:IPv6删除了头校验和字段,因为它在链路层提供了完整性保护。
-
源地址/目的地址:扩展为128位地址长度。
-
优先级:新增一字节的流量类字段,支持8个优先级值。
-
流标签:新增流标签字段,支持流量处理和多路径。
-
次头长度:新增4位次头长度字段标识扩展头部长度。
-
扩展头部:支持额外的选填头部,如路由、HOP限制等。
-
有效载荷:载荷格式与IPv4保持一致。
泛化转发和SDN
基于OpenFlow的泛化转发
泛化转发
泛化转发是指计算机网络中一种特殊的数据包转发方式,它可以将数据包从一个接口转发到多个接口,而不需要对每个数据包进行单独的处理。这种转发方式通常用于多播或广播数据包的传输,可以提高网络的效率和性能。
在计算机网络中,泛化转发通常由路由器或交换机来实现。当一个数据包需要被广播或多播时,路由器或交换机会将数据包复制并转发到所有需要接收该数据包的接口上。这样可以避免每个接口都要单独处理数据包,提高了数据包的转发效率。
泛化转发在计算机网络中起着重要的作用,特别是在广播或多播数据包的传输中。它可以帮助网络管理员更好地管理网络流量,提高网络的性能和可靠性。
OpenFlow协议
OpenFlow是一种网络通信协议,应用于SDN架构中控制器和转发器之间的通信。软件定义网络SDN的一个核心思想就是"转发、控制分离",要实现转、控分离,就需要在控制器与转发器之间建立一个通信接口标准,允许控制器直接访问和控制转发器的转发平面。
OpenFlow引入了"流表"的概念,转发器通过流表来指导数据包的转发。控制器正是通过OpenFlow提供的接口在转发器上部署相应的流表(匹配较操作做转发表在OpenFlow中称为流表),从而实现对转发平面的控制。
流表的每个表项包括:
- 首部字段值的集合,入分组将与之匹配。
- 计算器集合(当分组与流表项匹配时更新计算器)。
- 当分组匹配流表项时所采取的操作集合。
匹配
首先需要对接收到的信息进行匹配,以确定应该将信息转发给哪个处理程序或系统。
操作
一旦确定了转发的目标,就需要进行相应的操作来实现转发。操作可以包括将信息打包成特定格式的数据包、修改信息的格式或内容、调用特定的接口或服务等
中间盒
**定义:**在源主机和目的主机之间的数据路径上,执行除了IP路由器的正常标准功能之外的其他功能的任何中间的盒子。
作用:
- NAT转换:NAT盒实现了专用网络寻址、重写数据报首部IP地址和端口号
- 安全服务:防火墙基于首部字段值或重定向分组来阻塞流量,从而进行附加处理。入侵检测系统能够检测预先确定的模式,并相应地过滤分组。
- 性能增强:这些中间盒向能够提供所需服务的服务器集合之一,执行诸如压缩、内容缓存和负载均衡等服务的服务请求
五、网络层:控制平面
概述
每路由器控制:每台路由器中都有一个路由选择组件,用于与其他路由器中的路由选择组件通信,以计算其转发表的值。
路由选择算法
静态路由和动态路由
**静态路由:**由网络管理员手动配置路由表,指定每个目的网络的下一跳路由器。静态路由是一种简单的路由协议,适用于小型网络,路由表不会频繁变动的情况。静态路由的优点是配置简单,不需要额外的计算机资源,缺点是不够灵活,无法应对网络拓扑的变化。
**动态路由:**路由器自动学习网络拓扑信息,根据路由协议算法计算出最佳路径,并更新路由表。常见的动态路由协议有RIP、OSPF、BGP等。动态路由的优点是自动学习网络拓扑,能够应对网络拓扑的变化,缺点是配置复杂,需要额外的计算机资源。
两种路由选择算法
**集中式路由选择算法:**用完整的、全局性的网络只是计算出从源到目的地之间的最低开销路径
**分散式路由选择算法:**路由器以迭代、分布式的方式计算出最低开销路径
链路状态路由选择算法(Dijkstra/LS)
记号:
- D(v):到算法的本次迭代,从根源节点到目的节点v的最低开销路径的开销
- p(v):从源到v沿着当前最低开销路径的前一节点(v的邻居)
- N':节点子集;如果从源到v的最低开销路径已知,v在N'中
计算步骤:
-
初始化:将起始节点标记为已访问,并将起点到所有其他节点的距离设置为无穷大,将起点到自身的距离设置为0。
-
对于当前节点,计算它到相邻节点的距离,如果相邻节点未访问,则更新其距离。
-
选取距离最近的未访问的节点作为下一个当前节点,并将其标记为已访问。
-
重复步骤2和3,直到所有的节点都被访问为止。
-
在完成后,每个节点的距离即为从起点到该节点的最短距离。
-
如果需要记录最短路径,可以在算法执行时,每当更新一个节点的距离时,同时记录从起点到该节点的路径,最终得到的即为最短路径。
来源:知乎@鹅厂程序小哥
距离矢量路由选择算法(DV)
记号:
:从x到y的最小开销的估计
:节点x到相邻节点v的开销
:节点x维护的距离矢量
节点x维护它相邻节点v的距离矢量:
距离矢量路由选择算法的实现步骤如下:
初始化:每个节点开始时都会初始化自己的距离矢量表,包括到达其他节点的距离信息。初始时,节点本身到自己的距离为0,到其他节点的距离为无穷大(或者一个较大的值)。
发送距离矢量表:每个节点周期性地将自己的距离矢量表发送给邻居节点。
接收距离矢量表:节点接收邻居节点发送的距禿矢量表,并根据接收到的距离信息更新自己的距离矢量表。
更新距离矢量表:节点通过比较接收到的距离信息和本地的距离信息来更新自己的距离矢量表。如果接收到的距离信息比本地的距离信息小,则更新本地的距离信息,并将这个更新的信息发送给邻居节点。
选择最佳路径:节点根据更新后的距离矢量表来选择到达其他节点的最佳路径。
循环:重复步骤2到步骤5,直到网络中的所有节点的距离矢量表收敛到稳定状态,即不再发生变化。
来源:知乎@晒月亮的孩子
链路开销改变与链路故障
链路开销变化:当网络中某条链路的开销发生变化时,例如带宽变窄或者延迟增加,这会影响到节点之间的距离信息。为了应对这种情况,节点需要及时更新自己的距离矢量表,并将更新后的信息发送给邻居节点。这样可以确保网络中的路由信息能够及时地反映链路开销的变化,从而选择更合适的路径。
链路故障:当网络中某条链路出现故障时,例如链路断开或者节点宕机,这会导致节点无法到达该链路上的目的节点。为了应对这种情况,节点需要及时更新自己的距离矢量表,将受影响的链路标记为不可达,并将更新后的信息发送给邻居节点。这样可以确保节点能够选择其他可用的路径,避免发送数据到不可达的目的节点。
增加毒性逆转
在距离矢量路由选择算法中,为了解决毒性逆转问题,可以引入毒性逆转机制。毒性逆转是指当某条链路故障时,节点需要将经过该故障链路到达的目的网络的距离值设置为无穷大,以避免数据包在网络中循环传输。
具体而言,当节点检测到某条链路故障时,可以将经过该链路到达的目的网络的距离值设置为无穷大(或者一个较大的值),并将更新后的距离信息发送给邻居节点。这样可以确保邻居节点知道该链路不可达,并且避免选择经过该链路的路径。
因特网中自治系统内部的路由选择OSPF
OSPF(Open Shortest Path First)是一种基于链路状态的路由选择协议,用于在IP网络中选择最佳路径。OSPF协议是一个开放的标准,被广泛应用于企业网络和互联网中。
以下是OSPF协议的一些主要特点和工作原理:
链路状态协议:OSPF是基于链路状态的路由选择协议,它通过交换链路状态信息来构建网络拓扑图,然后使用Dijkstra算法计算最短路径。
区域化设计:OSPF网络被划分为若干个区域(Area),每个区域内部使用链路状态信息进行路由计算,不同区域之间使用汇总路由信息进行路由选择,这种设计能够减少路由计算的复杂性和网络中的路由更新信息。
支持VLSM:OSPF支持可变长度子网掩码(VLSM),能够更有效地利用IP地址空间。
动态路由选择:OSPF能够根据网络拓扑的变化动态地选择最佳路径,当网络发生变化时,OSPF能够快速地适应并更新路由表。
路由优先级:OSPF支持路由器之间的邻居关系,通过指定路由器的优先级,可以影响邻居关系的建立和路由信息的分发。
安全性:OSPF支持认证机制,能够确保路由信息的安全性和可靠性。
OSPF协议的工作原理可以简单概括为:
路由器发现邻居:路由器通过向相邻路由器发送Hello消息来发现邻居路由器。
构建链路状态数据库:每台路由器收集邻居路由器发送的链路状态信息,构建链路状态数据库。
计算最短路径:路由器使用Dijkstra算法基于链路状态数据库计算最短路径,并构建路由表。
路由信息交换:路由器通过向邻居路由器发送链路状态更新信息来交换路由信息,并及时更新路由表。
优点:
安全(Security):能够鉴别OSPF路由器之间的交换;
多条相同开销的路径(Multiple same-cost paths):允许多条路径;
对单播与多播路由选择的综合支持(Integrated support for unicast and multicast routing);
支持在单个AS中的层次结构(Support for hierarchy within a single AS);
ISP之间的路由选择:BGP
定义:BGP(Border Gateway Protocol)是一种用于在互联网中交换路由信息的协议。它是一种路径矢量协议,用于在不同的自治系统之间交换路由信息,以便确定最佳路径来转发数据包。BGP协议是互联网上最重要的路由协议之一,它负责维护整个互联网的路由表,并确保数据包能够按照最佳路径进行传输。BGP协议的设计使得它能够灵活地处理大规模网络的路由信息,并具有很高的稳定性和可靠性。
BGP协议的作用:
从邻居多供应商(AS)获得前缀的可达性信息
确定到该前缀的"最好的"路由
BGP协议的优点包括:
灵活性:BGP协议具有灵活的路由选择能力,可以根据网络管理员的需求进行定制化配置。
可靠性:BGP协议使用了可靠的路由选择算法,能够确保数据包按照最佳路径进行传输,提高网络的稳定性和可靠性。
可扩展性:BGP协议能够有效地处理大规模网络的路由信息,支持互联网规模的路由表。
支持多路径:BGP协议支持多路径路由选择,可以根据不同的策略选择最佳的路径。
BGP协议的缺点包括:
复杂性:BGP协议的配置和管理相对复杂,需要网络管理员具有较高的技术水平。
安全性:BGP协议存在安全漏洞,可能受到路由欺骗等攻击。
收敛速度慢:在网络拓扑发生变化时,BGP协议的路由收敛速度较慢,可能导致数据包丢失或延迟。
控制平面和数据平面不分离:BGP协议的设计中控制平面和数据平面不分离,可能导致一些安全和管理上的问题。
软件定义网络(SDN)的控制平面
SDN控制器和SDN网络控制应用程序:
- **通信层:**SDN控制器和受控网络之间的通信。
- **网络范围状态管理层:**由SDN控制平面所作出的最终决定,将要求控制器具有有关网络的主机、链路、交换机和其他SDN控制设备的最新状态信息。
- **对于网络控制应用程序层的接口:**控制器通过它的"北向"接口与网络控制应用程序交互。
SDN体系结构具有4个关键特征:
- **基于流的转发。**SDN控制的交换机的分组转发工作,能够基于运输层、网络层或链路层首部中任意数量的首部字段值进行转发。
- **数据平面与控制平面分离。**数据平面由网络交换机组成;控制平面由服务器以及决定和管理交换机流表的软件组成。
- **网络控制功能。**位于数据平面交换机外部。
- **可编程的网络。**通过运行在控制平面中的控制应用程序,该网络是可编程的。
OpenFlow协议
OpenFlow协议运行在SDN控制器和SDN控制的交换机或其他实现OpenFlow API的设备之间。OpenFlow协议运行在TCP之上,使用6653的默认端口号。
OpenFlow报文
从控制器刘翔受控交换机的重要报文如下:
- 配置。该报文允许控制器查询并设置交换机的配置参数。
- 修改状态。该报文由控制器所使用,以增加/删除或修改交换机流表中的表项,并且设置交换机端口特性。
- 读状态。该报文被控制器用于从交换机的流表和端口收集统计数据和技术器值。
- 发送分组。该报文被控制器用于在受控交换机从特定的端口发送出一个特定的报文。
从受控交换机流向控制器的重要报文如下:
- 流删除。该报文通知控制器已删除一个流表项了。
- 端口状态。交换机用该报文向控制器通知端口状态的变化。
- 分组入。用于向控制器发送匹配的分组 。
六、链路层和局域网
概述
链路层是计算机网络协议栈中的第二层,也被称为数据链路层,它负责将网络层的数据包转换成物理层的比特流,以便在物理介质上进行传输。
链路层提供了多种重要的服务,包括:
成帧(Framing):链路层将从网络层接收到的数据包封装成帧,即在数据包的前后添加起始标记和终止标记,以及进行字节填充等操作,使得数据包在物理介质上传输时能够被正确识别和处理。
链路接入(Link Access):链路层负责控制多个设备在共享介质上的访问,以及进行介质访问控制,确保在共享介质上的数据传输是有序的和公平的。
可靠交付(Reliable Delivery):链路层可以提供可靠的数据传输服务,通过使用确认和重传机制,确保数据在链路上的可靠传输,以及保证数据包的顺序传递。
差错检测和纠正(Error Detection and Correction):链路层可以使用差错检测码(如CRC)来检测数据包在传输过程中是否发生了错误,并且在一些情况下,也可以进行错误纠正,以保证数据的完整性和准确性。
这些服务使得链路层能够在物理介质上传输数据包时,提供可靠的、有序的、高效的数据传输服务,从而满足了不同网络应用对数据传输的需求。
差错检测和纠正技术
奇偶校验
发送方
奇校验:原始码流+校验位 总共有奇数个1
偶校验:原始码流+校验位 总共有偶数个1
接收方:
数一数数据中是否有奇/偶数个1
二维奇偶校验
二维奇偶校验是一种错误检测和纠正技术,通常用于在传输数据时检测和纠正单个比特错误。它是在数据中添加额外的校验位,以便在接收端检测出传输过程中发生的错误,并进行纠正。
如图:
途中采用了二维奇校验(列校验 和行校验均采用奇校验)。通过行和列的分别校验,我们可以锁定(2,2)位置上数值为1的比特损坏了,变成了0 ,之后就可以进行纠正。
循环冗余检测 (CRC)
网络运输层中使用校验和而链路层中使用CRC进行比特检验。相比于校验和,CRC提供了更加强的差错保护。
生成多项式
发送方发送了一个d比特的数据D,发送方必须附带一个r位的监督码R(CRC)组合成d+r比特模式使得模2算术恰好能被G(之前与发送方商定的r+1比特的模式)整除,之后再发送给接收方。接收方使用接收到的d+r比特除以G,若余数非0,则表示出现差错。
来源:CSDN@是琼琼球吗
多路访问链路和协议
多路访问协议所期望就具有的特点:
- 当仅有一个节点发送数据时,该节点具有R bps的吞吐量;
- 当有M个节点发送数据时,该节点吞吐量为R/M bps。这不必要求M个节点中的每一个节点总是有R/M的瞬间速率,而是每一个节点在一些适当定义的时间间隔内应该有R/M的平均传输速率。
- 协议是去中心化的;也就是说不会因为某个主节点故障而使整个系统崩溃
- 协议是简单的,使实现不昂贵
信道划分协议
分时多路复用(TDM)
它将不同的信号按照时间顺序依次发送,每个信号占据一个特定的时间段。这样多个信号可以通过同一通信通道进行传输,而且每个信号在不同的时间片段进行传输,避免了信号之间的干扰。
频分多路复用(FDM)
它将不同的信号按照频率分配到不同的频段上进行传输。每个信号占据不同的频率范围,这样多个信号可以通过同一通信通道进行传输,而且每个信号在不同的频段进行传输,避免了信号之间的干扰。
随机接入协议
在随机接入协议中,一个传输节点总是以信道的全部速率R bps进行发送。
时隙ALOHA(最大效率:1/(2e))
假设:
- 所有帧由L比特组成
- 时间被划分成长度为L/R秒的时隙。
- 节点只在时隙起点开始传输帧
- 节点使同步的,每个节点都知道时隙何时开始
- 如果在一个时隙中有两个或更多个帧碰撞,则所有节点在该时隙结束之前检测到该碰撞事件
令概率为p,在每个节点中ALOHA的操作如下:
- 当节点有一个新帧要发送时,它等到下一个时隙开始并在该时隙中传输整个帧
- 如果没有碰撞,该节点成功地传输它的帧,从而不需要考虑重传该帧。
- 如果有碰撞,该节点在时隙结束之前检测到这次碰撞。该节点以概率p在后续的每个时隙中重传它的帧,直到该帧被无碰撞地传输出去。
载波侦听多路访问(CSMA)
在CSMA中,每个用户在发送数据之前,先检测信道上是否有其他用户正在发送数据,如果有,则等待一段时间再尝试发送。如果信道上没有其他用户发送数据,那么该用户就可以发送数据。如果多个用户同时尝试发送数据,就会发生碰撞,这时每个用户都会等待一个随机的时间后再次尝试发送数据。
具有碰撞检测的载波侦听多路访问(CSMA/CD) (效率= )
运行步骤:
- 适配器从网络层一条获得数据报,准备链路层帧,并将其放入帧适配器缓存中。
- 如果适配器侦听到信道空闲,它开始传播帧。在另一方面,如果适配器侦听到信道正在忙,它将等待,直到听到没有信号能量时才开始传输帧。
- 在传输过程中,适配器监视来自其他使用该广播信道的适配器的信号能量的存在。
- 如果适配器传播整个帧而未检测到来自其他适配器的信号能量,该适配器就完成了该帧。在另一方面,如果适配器在传输时检测到来自其他适配器的信号能量,它中止传输
- 中止传输后,适配器等待下一个随机时间量,然后返回步骤2
轮流协议
"轮流协议"通常指的是轮询协议(Polling Protocol),这是一种用于多个设备共享资源的协议。在轮询协议中,有一个主设备(通常是控制器或服务器),它轮流向每个从设备发送询问,以确定它们是否有数据要发送或接收。一旦主设备轮询到某个从设备,该从设备就可以发送或接收数据。当主设备轮询完所有从设备后,整个轮询过程会重新开始。
轮询协议的优点是能够提供公平的资源分配,每个设备都有机会发送或接收数据,而且可以有效地避免数据碰撞。然而,轮询协议也有一些缺点,例如当设备数量较多时,轮询的开销会很大,同时设备的响应时间也可能较长。
链路层寻址与ARP
MAC地址
MAC地址(Media Access Control Address)是一个唯一的硬件地址,用于标识网络设备的物理地址。MAC地址是由48位二进制数组成,通常表示为12位十六进制数,例如:00:0a:95:9d:68:16。
MAC地址是在制造网络设备时,由设备制造商分配的。每个网络设备都有一个唯一的MAC地址,这样可以确保在网络中不会出现重复的地址。MAC地址通常是写在网络设备的网卡上,也可以通过操作系统或网络管理工具查看。
在数据链路层中,数据包的源地址和目的地址都是使用MAC地址来标识的。当数据包从一个网络设备发送到另一个网络设备时,路由器或交换机会根据目的MAC地址将数据包转发到正确的设备。因此,MAC地址在局域网中起着重要的作用,是实现局域网通信的基础。
地址解析协议(ARP)
地址解析协议(ARP,Address Resolution Protocol)是一种用于将IP地址映射到MAC地址的通信协议。在TCP/IP网络中,当一个设备需要发送数据到另一个设备时,它需要知道目标设备的MAC地址,以便将数据包正确地发送到目标设备。
ARP协议的工作原理如下:
当一个设备知道目标设备的IP地址,但不知道目标设备的MAC地址时,它会发送一个ARP请求广播到局域网中,询问该IP地址对应的MAC地址。
局域网中的所有设备都会接收到这个ARP请求,但只有目标设备会响应,发送包含自己MAC地址的ARP响应给请求设备。
一旦请求设备收到了目标设备的ARP响应,它就会将这个映射关系(IP地址和MAC地址的对应关系)存储在自己的ARP缓存中,以便将来的通信中使用。
ARP协议在局域网中起着非常重要的作用,它帮助设备解析IP地址和MAC地址之间的映射关系,从而实现了设备之间的通信。ARP协议是TCP/IP协议族中的一个基本协议,几乎所有的局域网通信都依赖于它来进行地址解析。
以太网
以太网帧结构
以太网帧具体结构
主要的结构 | ||
---|---|---|
名称 | 字节数 | 作用 |
数据(Payload) | 46~1500 | 包含了传输的实际数据 |
目的地址(MAC destination address) | 6 | 指示数据帧的目标设备的MAC地址 |
源地址(MAC source address) | 6 | 指示数据帧的发送设备的MAC地址 |
长度/类型字段(Length/type) | 2 | 指示上层协议的类型(如IP协议、ARP协议等)或者指示数据部分的长度 |
CRC | 4 | 用于检测数据传输过程中是否发生了错误 |
前同步码(Preamble) | 8 | 用于同步接收方的时钟 |
以太网技术
- 使用了以太网帧格式,并且向后兼容10BASE-T与100BASE-T技术。这使得吉比特以太网和现已安装的以太网设备基础很容易集成。
- 允许点对点链路以及共享的广播信道。
- 使用CSMA/CD来共享广播信道。
- 对于点对点信道,允许在两个方向上都以40Gbps全双工操作。