前言
关于本文
这篇文章记录了我自顶向下的学习过程
b站上中科大的郑烇老师是按这种方式教学的,配套教材是《计算机网络-自顶向下方法(第7版)》,机械工业出版社,2016。郑烇老师已经教了二十多年的计算机网络,很喜欢老师慢条斯理的教学风格哈哈。课程链接在这里:
郑老师的课件:
pan.baidu.com/s/1EElOrkkY… 密码:1958。
关于我自己的一些碎碎念
首先网络因为在生活里经常接触,不算是非常抽象的事物,所以相比较其它几个大件,要好理解很多。这里面的所有情形觉得很抽象的时候,我都喜欢类比交通,比如通信就是一辆车从这个地方开到另一个地方,拥塞了就是交通堵塞了。一层又一层的嵌套,都是为了能够完成好的通信。
我在ANU学的课程有点像自下往上的感觉(从物理层说起,然后传输层是在lab里理解,至少目前是这样哈哈),所以某种意义上也是互补的。
但是这一块我学的比较“潦草”,可能更多是为了应付考试和面试,写下来这篇文章也算是抛砖引玉,希望可以得到不同朋友的指导和启发,比如从事网络相关的工作人员通常会从哪个点开始深入呢?
第一章(这章是概述,看不懂也没关系,后面几章会展开的)
1.介绍Internet
互联网,我们都不陌生,每天都在用哈哈。
2.什么是协议?
协议是规则和标准,用于确定如何在网络中发送、确定和解释数据。整体来说,协议定义了数据通信的格式、顺序以及发送和接收方在交换数据时应当遵守的规则。
3.网络边缘,接入网络,物理媒体
网络边缘:连接到网络的设备,例如计算机、手机、服务器等。这些设备可以是终端用户设备,也可以是数据中心服务器。网络边缘的设备通常用于生成、接收和处理数据。例如,用手机浏览互联网时,手机就位于网络的边缘。
接入网络:接入网络是指连接网络边缘设备到主网络的部分。它的主要作用是将用户的设备接入到更广阔的网络中。接入网络可以是有线的,如通过光纤、同轴电缆或电话线连接的宽带接入,也可以是无线的,如蜂窝网络或Wi-Fi网络。接入网络通常由ISP(互联网服务提供商)管理,负责将用户的网络流量传输到核心网络。
物理媒体:这个顾名思义了,个人觉得比较重要的一点是,最终载体都是在传递某种“01信号”。eg: 铜、电线(双绞线、同轴电缆)、光纤或者无线信道(无线电波)等等。
4.Internet/ISP结构
互联网结构:主要包括端系统(比如个人电脑、手机、服务器等)、接入网络、互联网服务提供商(ISP)和核心网络。
ISP(互联网服务提供商):主要职责是提供互联网接入服务,根据不同职责给了不同的定义。
5.性能:丢失、延迟、吞吐量
影响网络通信性能的三大因素,都是可以顾名思义的概念。
丢失:一些数据包因为各种原因(信号干扰、硬件损坏)无法到达目的地。
延迟:数据包从源头到目的地的传输时间。
吞吐量:特定时间内网络能够成功传输数据的速率,通常以比特每秒(bps)计量。
6.层次模型和服务模型
也是根据不同功能划分的东西,分享两个常见的层次模型(注意:上层是依赖于下层的):
OSI(开放式系统互连)模型:
- 物理层
- 数据链路层
- 网络层
- 传输层
- 会话层
- 表示层
- 应用层
TCP/IP 模型:
- 网络接口层
- 网络层
- 传输层
- 应用层
服务模型:定义了一层网络在向它的上一层提供什么样的服务,包括数据传输的质量保证、传输速率、可靠性、安全性等方面。例如,TCP(传输控制协议)提供的是面向连接的、可靠的数据传输服务,而 UDP(用户数据报协议)提供的是无连接的、尽可能传输数据的数据传输服务(不保证可靠性)。在TCP/IP模型中,IP层负责将数据包从源点路由到目的地,而TCP层则负责确保数据的可靠传输。
7.历史
这部分我是直接跳过了哈哈,以后感兴趣再回过头来看看。
8. 各层的传输单位、连接方式和相关设备
本来没有写这块的,到最后感觉提前有这样一个类似整体的框架挺好的,读者可以先跳过去,之后感觉需要就回过头来看看:
物理层
- 传输单位:比特(Bits)。
- 连接方式:通过物理媒介传输原始比特流,如双绞线、光纤或无线信号。
- 相关设备:中继器(Repeater)和集线器(Hub)。这些设备用于放大和转发电信号,但不处理信号的内容。
链路层
- 传输单位:帧(Frames),在某些情况下可以是单元(Cells,如在ATM中)或电路(Circuits)。
- 连接方式:负责在直接相连的网络设备间传输帧,管理地址(如MAC地址)、错误检测和帧的封装与解封装。
- 相关设备:交换机(Switch)和桥接器(Bridge)。这些设备能识别和转发帧,根据MAC地址进行智能转发。
网络层
- 传输单位:数据包(Packets)。
- 连接方式:处理跨多个网络的数据传输,提供路由和寻址(如IP地址),使数据能够在复杂网络中找到最佳路径。
- 相关设备:路由器(Router)。路由器根据网络层的信息决定数据包的最佳路径。
传输层
- 传输单位:数据段(Segments)或数据报(Datagrams),具体取决于协议(如TCP为数据段,UDP为数据报)。
- 连接方式:确保数据的完整性和可靠性,可以处理错误恢复、流量控制和拥塞控制。
- 相关设备:传输层主要在软件中实现,侧重于端到端的通信和数据的正确顺序,不涉及具体的硬件设备。
应用层
- 传输单位:消息或数据。
- 连接方式:为应用程序提供网络服务,如Web浏览(HTTP)、电子邮件(SMTP)和文件传输(FTP)。
- 相关设备:虽然应用层主要是软件层面,但可以包括如网关、代理服务器和缓存等设备,这些设备提供数据的转发、过滤和缓存等服务。
第二章(从应用层开始了)
应用程序的体系结构:
也是根据不同功能给出的定义:
- 客户-服务器
- P2P
- 混合
应用程序需要的服务品质描述:
- 可靠性
- 带宽
- 延时
- 安全
Internet传输层服务模式:
- 可靠的、面向连接的服务:TCP
- 不可靠的数据报: UDP
流行的应用层协议:
1. HTTP(超文本传输协议):
HTTP请求:
- 常用方法: GET(请求)、POST(提交)、PUT(更新)、DELETE(删除)......
- URL:统一资源定位符,用于指定请求的资源
- 头部:包含请求的元数据,比如用户代理、接受的内容类型等等
- 主体:不是所有的请求都包含主体,通常只有POST或者PUT请求包含数据主体
HTTP响应:
- 状态码:200(成功)、404(未找到)、500(服务器错误)......
- 响应头:包含响应的元数据,比如内容类型、服务器信息
- 响应主体:服务器返回的实际数据
补充:
HTTP是互联网上应用最广泛的协议之一,是万维网(www)的基础,主要用于Web浏览器和网站服务器之间传递信息。
2. FTP(文件传输协议)
- 向远程主机传输文件或从当中接收文件
- 客户/服务器模式
- FTP客户端和FTP服务器通过端口21联系:并使用TCP为传输协议
使用场景:网站维护、文件共享、备份和存档
补充FTP的变种:
- SFTP(SSH文件传输协议):利用SSH(安全壳层)提供数据加密,更安全。
- FTPS (FTP Secure) : 使用SSL/TLS协议提供加密的FTP连接
3. Email
过程:
-
- 撰写:用户通过电子邮件客户端或Web界面写邮件
-
- 发送:用户点击发送后,邮件会被发送到SMTP服务器
-
- 路由:SMTP服务器将邮件路由到接收者的邮件服务器
-
- 存储:邮件在接收者的POP3或IMAP服务器上存储,直到接收者准备好接受它
-
- 接收:接收者的电子邮件客户端会从服务器获取邮件,允许用户阅读
补充:为了提高安全性,可以使用电子邮件加密
4. DNS(域名系统)
- 域名:互联网上某个网站的易记名称,如“google.com”
- IP地址:连接到互联网设备的数字标识,比如“192.168.1.1”
- DNS服务器:负责解析域名的服务器(把域名解析为IP地址) 注意:一个域名可以对应多个IP地址,一个IP地址也可以对应多个域名。
补充,我们在浏览器中输入一个网站时,发生的DNS查询过程:
-
- 输入一个网址并按下回车时,计算机首先要找到该网址的IP地址,这一过程开始于向本地服务器发起一个查询请求
-
- 本地DNS服务器通常由互联网服务提供商(ISP)维护。这个过程会先查缓存,然后开始递归查询。
-
- 首先是根服务器,然后TLD服务器,最后DNS服务器。
-
- 响应返回:一旦权威DNS服务器提供了域名对应的IP地址,该信息沿原路返回至最初发起查询的本地DNS服务器,然后再传递给我们的计算机。(中间服务器可以加缓存)
-
- 访问网站:一旦计算机知道了IP地址,就可以通过这个地址来访问服务器并加载网站
补充物理实现:
- DNS被设计为一个分布式数据库,意味着全球各地都部署了DNS服务器,这些服务器相互协作,共同维护域名与IP地址之间的映射关系
- 协议:UDP,DNS查询通常是小数据包,需要快速响应
5. P2P应用的关键特点
-
- 去中心化: P2P网络不依赖于中央服务器,节点之间直接交流
-
- 资源共享:每个节点可以提供和消耗资源,如带宽、存储空间和计算能力
-
- 可扩展性: 随着更多节点的加入,网络的总体资源增加,从而提高性能和可靠性
-
- 鲁棒性(自动化控制的朋友喜欢用这种说法,就是稳定性哈哈,这里指某个系统或者算法对于随机噪声、异常情况和攻击等意外干扰的抗干扰能力):因为没有单点故障
应用示例:
-
- 文件共享:用户之间共享文件,而不用上传到中央服务器
-
- 分布式计算
-
- 加密货币
-
- 内容分发
-
- 通信
-
- 网络游戏
6. CDN(内容分发网络):分布式网络基础设施的一种
工作原理:
-
- 分布式数据中心:CDN由多个数据中心组成,这些数据中心分布在全球的不同地理位置
-
- 内容赋值
-
- 智能路由: CDN通过算法确定离用户最近的数据中心来提供内容
-
- 缓存机制
关键优势:
-
- 提高加载速度
-
- 减少延迟
-
- 负载均衡
-
- 提高可用性
-
- 增强安全性
应用场景:
-
- 网页内容和媒体文件的分发
-
- 软件分发:加速软件和网页的下载
-
- 游戏
-
- 电子商务
TCP套接字步骤
首先介绍一下套接字(Socket): 可以看作是不同主机间通信的接口,主要由IP地址、端口号和协议类型组成,注意可能存在多线程或异步编程(并发处理)。
服务器端:
-
- 创建套接字: 使用系统调用套接字,通常是TCP协议
-
- 绑定套接字: 将创建的套接字与一个地址和端口号绑定
-
- 监听连接
-
- 接受连接:客户端尝试连接时,接受请求并创建一个新的socket
-
- 数据交换: 通过套接字读取(接收)数据和发送数据
客户端:
-
- 创建套接字
-
- 连接服务器
-
- 数据交换
-
- 关闭套接字
UDP套接字步骤
数据报(Datagram): UDP网络通信的基本单元,一个独立的自包含的消息
注意:
- UDP不像TCP那样在通信双方间建立一个连接,每个数据包(数据报)都是独立发送的
- 不可靠但是高效
- UDP支持发送单一数据报文到多个接收者(多播),甚至是网络中的所有设备(广播)
过程:
-
- 创建套接字
-
- 发送/接收数据
- 发送方使用套接字直接发送数据到指定的地址和端口
- 接收方则在指定的端口监听并接收数据
-
- 关闭套接字
第三章 (到了传输层)
前面我们已经知道了,套接字(socket)就是IP地址、端口号和协议类型的组合。
我们需要理解可靠传输层的工作原理主要来源于:多路复用和解复用、可靠数据传输、流量控制、拥塞控制。
多路复用
就是发送方把不同应用程序的多个数据流集中到单一的网络连接里,每个数据流通过套接字来标识自己“独特的身份”。
在传输层,来自不同应用程序的数据(比如来自不同浏览器标签或不同应用的数据)被封装成带有相应端口号的数据段,这些数据段随后被传递到网络层,并进一步封装成网络数据包进行传输。
解复用
指在接收端从单一网络连接中分发数据到正确的应用程序的过程。当数据到达目的地的传输层时,该层检查每个数据段的“独特身份”,通过“独特身份”,传输层能够确定哪个应用程序应该接收该数据。
郑烇老师讲的课里又细致讲解了多路解复用的原理,我在这里就不重复了。
可靠数据传输
是传输层的一个核心功能,尤其是在TCP(传输控制协议)中非常明显。为了实现这一点,涉及到几个关键机制:1.错误检测。2.确认应答和超时重传(确认(ACK)和否认(NACK)消息)。3.序列号。4.窗口机制。5.连接的建立和终止(三次握手和四次挥手)。这里有了基本概念,后面结合TCP具体例子很好理解。
这部分郑老师讲的非常详细,从完全没有规则,一步步增加限定,最后不断形成TCP的规则,读者如果去看郑老师的视频,注意不要被一些弹幕带偏了。因为有些朋友是看了自顶向下那本书的内容,得到了TCP规则的结论式内容,但是在某个点,郑老师还没有进一步增加限定。
流量控制
是防止快速发送方压倒慢速接收方的机制。换句话说,它确保发送方的数据传输速率不会超过接收方处理能力的限制,TCP这里用的就是“滑动窗口”机制。
拥塞控制
是为了避免过多的数据同时注入网络,从而防止网络资源(如路由器队列空间、带宽)过载。基本思想就是通过调整网络中数据传输的速率。当网络出现拥塞迹象时,减少发送数据的速率;当网络空闲时,逐渐增加发送速率。(减少的时候快速减少,增加的时候逐渐增加)
这里郑老师也是给出了很多场景和例子,具体内容可以在原课件里看到。
注意: 这里流量控制和拥塞控制给人直观感觉很相似,它们的区别主要在于(这里有很多关于机制的新概念,但其实都是顾名思义的东西):
1.作用目标不同: 流量控制的目标是防止发送方过快地发送数据,从而超出接收方的处理能力。它主要关注的是端到端之间的数据传输,确保接收方有足够的缓冲区来接收数据。拥塞控制则是为了防止过多的数据注入到整个网络中,导致整个网络环境的拥塞。这关注的是网络中的路由器和链路是否能够承载所有传输的数据。
2.反馈信息的来源不同:流量控制的反馈通常来自接收方。例如,在TCP中,接收方会在确认消息中告诉发送方其可用的缓冲区大小。拥塞控制的反馈则来源于网络本身,如数据包的丢失、网络的延迟等,这些通常是网络拥塞的迹象。
3.实现机制的不同:流量控制常用的机制如TCP的“滑动窗口”,直接受到接收方的窗口大小影响。拥塞控制则使用如慢启动、拥塞避免、快速恢复和快速重传等机制,这些算法基于整个网络路径的性能,而非单一接收端的能力。
TCP的可靠传输(重点来了,经常有面试题哦)
1. 段(Segment)结构
TCP传输的数据单元称为段(segment)。每个TCP段包含一个首部和数据部分。
- 首部:包含重要的控制信息,如源和目的端口号、序列号(用于数据排序和重组)、确认号(用于确认接收)、控制标志(如SYN和ACK),以及窗口大小(用于流量控制)。
- 数据部分:实际传输的应用层数据。
2. 可靠数据传输
- 序列号:确保数据的正确顺序和完整性。
- 确认和重传:接收方通过发送确认来告诉发送方它已经收到了数据。如果发送方在一定时间内未收到确认,它会重传数据。
- 校验和:用于检测数据在传输过程中的任何错误。
3. 流量控制
- 滑动窗口机制:TCP使用滑动窗口机制调整发送方的发送速率,窗口大小基于接收方的接收能力和网络的当前状况动态调整。
4. 连接管理
-
连接建立(三次握手) :
- 发送方发送一个带有SYN标志的段,表示开始建立连接。
- 接收方响应一个带有SYN和ACK标志的段,确认连接请求。
- 发送方再次发送一个带有ACK标志的段,完成连接建立。
-
连接终止(四次挥手) :
- 发起方发送FIN。
- 接收方确认这个FIN(发送ACK)。
- 接收方发送自己的FIN。
- 发起方确认接收到的FIN(发送ACK)。
TCP的拥塞控制(很多和上面是重复的,当复习一遍吧)
1. 拥塞感知和速率控制方法
TCP通过观察网络的行为(例如,数据包丢失和延迟)来感知拥塞。数据包丢失通常被视为网络拥塞的一个重要信号。通过调整其拥塞窗口的大小来控制数据传输的速率。拥塞窗口的大小决定了在等待确认之前可以发送的最大数据量。
2. 拥塞控制和流量控制的联合动作
流量控制与拥塞控制协同工作。流量控制基于接收方的接收能力调整数据流,而拥塞控制则是根据网络状况调整传输速率。
3. 策略概述
TCP慢启动: 是拥塞控制的一部分,其目的是在TCP连接开始时缓慢增加发送速率,以防止一开始就引发拥塞。
TCP拥塞控制:AIMD 加性增加/乘性减少(AIMD)是TCP拥塞控制的基本算法。加性增加指的是在网络状况良好时逐渐增加拥塞窗口的大小,而乘性减少则是在检测到拥塞时显著减少窗口大小。这里如何设置数值的细节,看郑老师的课件非常直观了,之后有时间可以再把这部分完善一下。
第四章(网络层的数据平面)
这里就来到了我们生活里经常提到的路由器(一种网络设备),也来到了计算机网络里经常提到的IP协议。
网络层的主要功能:
路由: 网络层会使用路由算法,来决定数据包从源头到目的地的最佳路径。
转发: 接收数据包并根据路由表将其发送到下一个目的地的过程,相当于在执行路由过程的决策。
接着郑老师是介绍了一下路由器的组成,我对硬件不是很感兴趣,所以跳过了。
互联网协议(IP:Internet Protoco):
IP数据报格式
这个可以看郑老师的课件,那个图片描述的很直观。
分片和重组
假设我们正在发送一个大文件从一个计算机到另一个计算机。这个文件首先被封装成一个大的IP数据报,然后通过网络发送。
-
分片:
- 如果路由器发现这个数据报太大,超过了MTU(最大传输单元)限制,它会将数据报分成更小的片段。
- 假设MTU为1500字节,那么一个4000字节的数据报可能会被分成三个片段(两个大小为1500字节,一个1000字节)。
-
传输:
- 这些片段独立传输,可能经过不同的路径,到达同一目的地。
-
重组:
- 在目的地,IP层会查看这些片段的标识、偏移量等信息,按照正确的顺序将它们重新组装成原始的4000字节数据报。
- 一旦所有片段都正确到达并被重组,上层的应用就可以处理这个数据报了。
IPv4地址
- IPv4地址是32位的数字,通常表示为点分十进制格式,例如192.168.0.1。
- 包括网络部分和主机部分,由子网掩码划分。
比如说:
- 有一个IP地址
192.168.1.10,其子网掩码为255.255.255.0(或/24,表示前24位是网络部分)。 - 网络部分是
192.168.1,表示这个IP地址属于192.168.1.x的网络。 - 主机部分是
.10,在该网络中唯一标识了一个特定的设备。
NAT:网络地址转换
- NAT用于将私有(非全球唯一)IP地址转换为公有IP地址。
- 常用于家庭和企业网络,允许多个设备共享同一个公有IP地址进行互联网访问。
- NAT有助于缓解IPv4地址耗尽的问题,并提供一定程度的安全性和隐私。
- 但破坏了IP协议的端到端原则,使得某些应用(如点对点通信和在线游戏)的实现更加复杂。
IPv6
- 相比较IPv4,有着更大的地址空间:
- IPv4:32位地址,提供约43亿个唯一地址。
- IPv6:128位地址,理论上可提供3.4×10383.4×1038个唯一地址。这是一个极其庞大的数字,理论上足以为全球每个设备分配一个唯一的地址。
- 采用了更简洁的首部格式,使得路由器和交换机处理数据包更高效。
- 支持无状态地址自动配置(SLAAC),无需额外的配置服务器(如动态主机配置协议:DHCP),设备可以自行生成自己的地址。
- IPv6 为移动设备提供了原生支持,允许设备在保持相同IP地址的情况下移动到不同的网络。比如一名员工可以从办公室到咖啡店再到家中,其设备保持相同的IPv6地址,同时维持不间断的网络连接。
通用转发和SDN
这部分我也就是了解了一下
通用转发(Generic Forwarding)
通用转发是一种网络转发机制的理念,强调在转发数据包时的灵活性和可编程性。它不依赖于特定的协议或数据包类型,而是可以根据网络策略或程序逻辑动态决定如何处理和转发数据包。
主要特点:
- 协议无关:通用转发不局限于特定的网络协议,可以处理多种类型的数据包。
- 可编程性:网络管理员可以编写规则或使用策略来定义数据包的处理方式,使网络更加灵活和响应快速。
- 高度自定义:允许对网络流量的控制和管理进行更细粒度的调整。
软件定义网络(SDN)
SDN是一种创新的网络架构,它将网络控制和转发功能分离,使网络控制更加集中化和灵活。
主要特点:
-
控制平面与数据平面的分离:
- 控制平面:负责整个网络的管理和决策。在SDN中,这一部分被集中化在一个或多个SDN控制器中。
- 数据平面:负责实际的数据包转发。在SDN中,转发设备(如交换机)成为简单的转发设备,按照控制器的指令执行。
-
集中管理:
- SDN控制器提供一个中心化的视角,用于全网的流量管理和配置。
- 这使得网络策略的实施、更新和维护变得更加简单和高效。
-
程序化网络和自动化:
- SDN使得网络的配置和管理可以通过软件编程实现,增加了自动化和灵活性。
- 支持快速部署新的服务和策略,对网络变化做出快速响应。
-
开放标准:
- SDN倡导使用开放标准和协议(如OpenFlow),以促进不同厂商设备的互操作性。
第五章(网络层的控制平面)
路由选择算法
郑老师的课是教了链路状态路由算法(Link State Routing Algorithm) 和 距离向量路由算法(Distance Vector Routing Algorithm) , 这篇文章主要是为了梳理网络知识,所以算法部分也只是简单提一下(当然实际上还是有很多其它算法的):
1. 链路状态路由算法(Link State Routing Algorithm)
- 原理:每个路由器发现其邻居并测量到邻居的链路成本,构建一个包含网络所有连接的完整地图。
- 算法:使用迪杰斯特拉(Dijkstra)算法来计算从一个节点到所有其他节点的最短路径(Dijkstra是第一个带给我小小震撼的算法哈哈,初次接触是在离散数学,后来上Java编程课的时候看到一道图论的题,当时研究这个算法研究了两整天,忘我的状态回想起来依旧美滋滋)。
- 示例:OSPF(开放最短路径优先)和IS-IS使用链路状态算法。
- 特点:提供更快的收敛和更好的拓扑适应性,但实现相对复杂,需要更多的处理能力和内存。
2. 距离向量路由算法(Distance Vector Routing Algorithm)
- 原理:每个路由器维护一个路由表,包含到达每个目的地的最优距离(通常是跳数)和下一跳路由器。
- 算法:使用贝尔曼-福特(Bellman-Ford)算法来计算最短路径。
- 示例:RIP(路由信息协议)使用距离矢量算法。
- 特点:简单,易于实现,但容易受到路由循环和“计数到无穷大”问题的影响。
BGP
ISP(Internet Service Provider)之间的路由选择主要通过BGP(边界网关协议)来实现。
穿插个题外话,这部分概念性的实现很多,我不是很感兴趣,所以只是大致写了下这一层在做什么,核心用到的理念是什么,细节方面反而没有做过多总结(比如我们知道要用Dijkastra算法,如何计算相邻节点的路径代价,如何用硬件实现以及传递数据时的使用的数据结构等等)。之后看考试和面试要求,再回过头来补充,期待有朋友可以分享更多。
第六章(链路层,这层和物理层的东西放一起)
这部分我们可以看到平时经常说的局域网的概念,路由器会在链路层和网络层之间工作。首先复习下帧的概念: 帧(Frame)是数据链路层的基本单位,用于在两个直接连接的网络设备之间传输数据。
差错检测和差错纠正
差错检测
-
奇偶校验(Parity Check):
- 最简单的差错检测方法之一。为每个数据单元添加一个额外的比特,使得整个单元(包括数据和奇偶比特)中1的总数是奇数(奇校验)或偶数(偶校验)。接收方检查收到的数据单元是否满足这一条件,以确定是否出现错误。
-
循环冗余检验(CRC):
- 一种更为复杂且可靠的差错检测方法。发送方通过特定的多项式生成一个CRC值,并将其附加到数据帧末尾。接收方使用相同的多项式计算CRC值,并与接收到的CRC值比较,以检测错误。
-
校验和(Checksum):
- 在发送数据之前,将数据划分为等长的段,计算这些段的和,并发送此和作为校验和。接收方计算收到的数据段的和,与校验和进行比较,以检测错误。
差错纠正
链路层的差错纠正机制通过引入冗余数据或重传请求来确保数据在传输过程中即使出现错误也能被正确接收和恢复:
1. 前向纠错(Forward Error Correction, FEC)
通过发送额外的冗余数据(通常称为纠错码)来实现差错纠正。即使一部分数据受损,接收方也可以利用这些冗余信息来恢复原始数据。无需进行重传即可纠正错误,这在实时或高延迟的通信环境中非常有用。
2. 汉明码(Hamming Code)
一种特定类型的FEC技术,通过特定的算法添加冗余位来实现差错纠正。汉明码可以检测并纠正单个位错误,并检测但不纠正双位错误。常用于计算机内存和一些数据通信系统。
3. 循环冗余检验纠错(CRC Error Correction)
尽管CRC通常用于差错检测,但它也可以与重传机制结合使用以实现差错纠正。在检测到错误时,可以请求重新发送受损的数据。
链路层协议
- 以太网:最普遍的链路层协议之一,定义了帧格式和物理层协议。
- PPP(点对点协议) :常用于直接连接两个网络节点的情况,如拨号上网和VPN连接。
- IEEE 802.11:定义了无线局域网(Wi-Fi)的标准。
媒介
有线媒介:
- 双绞线:在以太网(Ethernet)中常用的物理媒介,主要用于局域网(LAN)。
- 同轴电缆:早期的以太网中使用,现在主要用于有线电视和宽带互联网。
- 光纤:用于高速和长距离的通信,如数据中心、互联网骨干和跨洋通信。
无线媒介:
- Wi-Fi(无线局域网) :利用无线电波在空气中进行通信,常用于家庭和公共场所的网络接入。
- 蓝牙:短距离无线通信,用于连接个人设备如耳机、键盘、鼠标等。
- 蜂窝网络:通过移动电话网络提供无线互联网接入,覆盖范围广泛。
物理连接器和接口
- RJ45:常用于连接双绞线的物理接口。
- SC、LC、ST等光纤连接器:用于连接光纤。
- USB、Thunderbolt等:在个人设备中用于数据传输和外设连接。
链路虚拟化
虚拟化的技术很常见,本质就是物理资源有限,但是可以通过某种逻辑更加有效的利用有限的物理资源,链路的虚拟化在云计算领域应该经常用到。
结尾
到这里大部分内容就结束了,当然,不管是科大的课还是ANU的课(还没上,看课程大纲会讲一点)都提了下网络安全的相关概念,这部分概念走网络安全方向的朋友一定很感兴趣哈哈。
确实感觉自己和网络打交道比较少,应付考试和面试的目的为主,所以学的很潦草,希望可以得到更多朋友的提点。