传输层

传输层是承接应用层和网络层的关键一环,传输层基于网络层提供的服务将主机与主机之间的通信封装为端与端之间的通信,实现了两台主机进程之间的数据交付,并且为上层应用屏蔽了复杂的底层网络细节,建立了网络的抽象模型。围绕以上特性,本章探讨传输层使用的技术。 (1)传输层多路复用/分用功能与端到端传输 传输层通过 多路复用 和 多路分用 实现多个应用进程共享网络层服务。 多路复用:发送方传输层将多个应用进程的数据(来自不同套接字)封装成数据段,然后传递给网络层。 多路分用:接收方传输层根据数据段中的端口号,将数据交付给正确的套接字(即相应进程)。 端口:16 位整数(0–65535),用于标识主机上的特定进程。 熟知端口(0–1023):分配给标准服务,如 HTTP(80)、HTTPS(443)、FTP(21)、SSH(22)、DNS(53)。 注册端口(1024–49151):用户应用程序使用,需要向 IANA 注册。 动态/私有端口(49152–65535):客户端临时使用。 套接字(Socket):IP 地址 + 端口号的组合,唯一标识网络中的一个端点。套接字是应用层与传输层之间的编程抽象。 传输层提供两种核心服务模式:无连接的 UDP 和面向连接的 TCP。 (2)UDP(用户数据报协议) UDP 提供无连接、不可靠的数据传输服务,不保证顺序,不进行重传。 特点: 无连接:发送前无需建立连接,每个 UDP 数据段独立处理。 轻量:头部开销小(仅 8 字节),无拥塞控制和流量控制。 支持组播和广播。 应用场景:对延迟敏感、容忍丢包、实时性要求高的场景(如 DNS 查询、VoIP、视频直播、在线游戏)。 UDP 数据段格式: 源端口(2 字节)、目的端口(2 字节)、长度(2 字节,包括头部和数据)、校验和(2 字节,覆盖头部和数据及伪头部)。 校验和计算:包含 UDP 伪头部(源 IP、目的 IP、协议号、UDP 长度),用于检测从网络层到传输层的差错。 典型应用: 远程过程调用(RPC):客户调用远程服务时,UDP 的低延迟适合请求-响应交互。 实时传输协议(RTP):通常运行在 UDP 上,传输音视频媒体流,允许少量丢包。 (3)TCP(传输控制协议) TCP 提供面向连接、可靠、有序的字节流服务。 特点: 面向连接:数据传输前需经过三次握手建立连接。 可靠传输:使用序号、确认、重传保证数据不丢失、不重复、按序到达。 流量控制:基于滑动窗口机制,协调发送速率避免接收方缓存溢出。 拥塞控制:动态调整发送速率,避免网络过载。 全双工通信:支持双向同时传输数据。 TCP 数据段格式: 源端口、目的端口(各 2 字节) 序号(4 字节,本段第一个字节的序号) 确认号(4 字节,期望收到的下一个序号,表示之前的数据都已收到) 数据偏移(4 位,头部长度) 标志位:ACK(确认有效)、RST(复位)、SYN(同步序号)、FIN(终止连接)、URG(紧急指针有效)、PSH(立即推送) 窗口大小(2 字节,接收方给出的剩余缓存空间) 校验和(2 字节,覆盖头部、数据和伪头部) 紧急指针(2 字节,与 URG 配合) 选项(可变长,如最大段大小 MSS、时间戳、窗口缩放因子) 可靠传输机制: ...

August 27, 2025 · 2 min · farmer3-c

链路层

数据链路层的主要功能 数据链路层位于物理层和网络层之间,其主要功能包括: 成帧:将网络层交付的比特流封装成独立的帧,添加帧头和帧尾,以便接收方能识别帧的边界。 差错控制:通过检错码或纠错码检测(或纠正)传输过程中产生的比特错误,并可配合重传机制。 流量控制:协调发送方和接收方的速率,防止接收方缓存溢出。 介质访问控制(MAC):在广播型多路访问链路(如以太网、WiFi)上,决定哪个节点何时占用信道。 链路管理:建立、维护和释放数据链路层的连接(在面向连接的链路中)。 可靠传输:在不可靠的物理链路上,通过确认和重传机制实现数据的可靠交付。 本章对成帧的基本方法进行了详细的描述;针对错误的处理这一数据链路层的重要任务,介绍了检错和纠错的基本原理和典型的编码方法;详细介绍了奇偶检验、循环冗余校验、互联网校验等常用检错码,以及纠1位错的海明码、里所码、低密度奇偶检验等常用纠错码。 成帧的基本方法 成帧是指将原始比特流分割成若干独立的帧,以便接收方能准确提取每个帧的数据。常用方法: 字节计数法:帧头中使用一个字段表示帧的总长度(字节数)。接收方读取长度字段后,就知道从哪里结束。缺点:长度字段本身出错会导致帧同步丢失。 字节填充的标志字节法:使用特殊标志字节(如 FLAG=0x7E)表示帧的开始和结束。如果数据中出现了标志字节,则在其前面插入转义字节(如 ESC=0x7D)。接收方遇到转义字节则删除并还原数据。 比特填充的标志比特法(HDLC 常用):使用标志位序列 01111110 作为帧边界。发送方在数据中连续出现 5 个 1 后自动插入一个 0;接收方连续收到 5 个 1 后,若下一比特为 0 则删除该 0,若为 1 且再下一比特为 0 则视为标志。该方法避免了修改数据内容长度。 物理层编码违例法:利用物理层编码中的“非法”信号作为帧边界(例如曼彻斯特编码中不使用连续的相同电平)。仅适用于特定的物理层编码。 检错与纠错基本原理 检错码:在数据后添加冗余位(校验位),使得接收方能根据校验位判断数据是否出错。常见检错码:奇偶校验、循环冗余校验(CRC)、校验和(Checksum)。检错码无法确定错误位置,只能判断“有/无错误”。 纠错码:添加更多冗余位,使接收方能不仅检测错误,还能定位并纠正一定数量的错误比特。典型纠错码:海明码(纠1位错)、BCH码、里所(Reed-Solomon)码、低密度奇偶检验(LDPC)码。纠错码的编码效率(数据位/总位数)较低,适用于无法重传的场景(如深空通信、实时音频)。 常用检错码详解 奇偶校验:在数据后面附加一个比特,使整个数据中 1 的个数为奇数(奇校验)或偶数(偶校验)。可以检测奇数个比特错误,但不能检测偶数个错误,且无法纠错。 循环冗余校验(CRC):将数据视为多项式,用生成多项式相除,余数作为 CRC 码附加。接收方重新计算并比对余数。可以检测任意长度的大多数突发错误(取决于生成多项式),广泛用于以太网、WiFi、存储设备。 互联网校验和(Internet Checksum):将数据按 16 位字分组,进行二进制反码求和,结果取反。简单高效,用于 IP、TCP、UDP 头部校验。错误检测能力弱于 CRC,但便于在软件中快速计算。 常用纠错码简介 海明码(Hamming Code):通过在数据位之间插入校验位,使得数据位与校验位形成多个奇偶校验组。能够纠正单比特错误,并能检测双比特错误(扩展海明码)。最小码距为 3(或 4)。 里所码(Reed-Solomon, RS):非二进制纠错码,以符号(如 8 位字节)为单位进行编码,非常擅长纠正突发错误。广泛用于光盘、QR 码、卫星通信、数字电视。 低密度奇偶检验码(LDPC):使用稀疏校验矩阵,通过迭代置信传播译码,性能接近香农极限。用于 5G、WiFi 6(802.11ax)、10G 以太网等。 为了实现数据链路层上的可靠传输,本章介绍了利用停-等协议实现流量控制,利用肯定确认与重传机制处理信道上出现差错的情况。此外,为了提高信道利用率,本章介绍了滑动窗口协议的基本思想,在此基础上详细说明了回退 n 帧协议和选择性重传协议的工作原理,并对两者的滑动窗口大小进行了分析。 ...

August 27, 2025 · 2 min · farmer3-c

物理层

物理层负责比特流的透明传输 物理层是参考模型中的最底层,是最基础的一层。本章探讨传输比特所需要的介质和所使用的技术。 通信 信道 物理层通信:利用物理传输介质,将计算机中的比特流(0、1)转换为电信号、光信号或电磁波信号,在物理链路上实现透明、原始的比特流传输,不负责数据含义与纠错,只负责信号的发送与接收。 信道:在物理层中,传送信号的通路,是传输比特流的逻辑通道,包含传输介质和相关通信设备。 模拟和数字通信 数字和模拟通信的区别在于使用数字信号还是模拟信号进行传递消息。 模拟信号:代表信息的信号及其参数(幅度、频率或相位)随着消息连续变化的信号,它在幅度上连续,但在时间上可以连续也可以不连续。 波形连续,具有无穷多个幅度取值; 易受干扰,噪声会累积且难以去除; 不易加密,不易存储和处理(需先数字化); 典型例子:传统电话语音、模拟电视信号。 数字信号:不仅在时间上是离散的,而且在幅度上也是离散的信号,通常只取有限个离散值(如二进制信号取0和1)。 波形离散,只传送0和1; 抗干扰能力强,噪声不会累积(可通过中继器再生); 易加密、易存储、易纠错,与计算机系统天然兼容; 典型例子:以太网信号、USB信号、光纤通信信号。 并行和串行通信 串行通信:数据在传输过程中,逐位依次传输,一次只传输一个比特。数据通过单一的通信线路(如一根电线或一根光纤)按顺序发送和接收。 优点:节省线路资源,线缆成本低;远距离传输时不易出现信号间干扰(串扰)。 缺点:传输速率相对较低(需通过提高时钟频率来提升速率)。 典型应用:USB、RS-232、I²C、以太网(内部串行化)、SATA。 并行通信:数据在传输过程中,同时通过多条线路传输,一次可以传输多个比特。通常每条线路传输一个比特,多条线路同时传输数据。 优点:相同时钟频率下,数据吞吐量是串行的N倍(N为并行位数)。 缺点:线路多,成本高;远距离时不同线路的信号到达时间可能不一致(时延偏移),限制传输距离和速率。 典型应用:旧式打印机并口(Centronics)、IDE硬盘接口、芯片内部总线。 同步和异步通信 异步通信:收发双方时钟各自独立,以字符为单位传输,每个字符加起始位、停止位做同步。 特点: 按字符逐个发送,字符之间的间隔不固定; 无需统一的时钟信号,实现简单,成本低; 每个字符需要额外的起始位和停止位(通常每8位数据需2-3位开销),传输效率较低; 适用于低速、间歇性数据传输。 例子:串口RS-232、键盘输入、鼠标通信。 同步通信:收发双方使用统一时钟信号(可由单独时钟线或从数据信号中提取),以数据块/帧为单位连续传输,不需每个字符加起止位。 特点: 连续成块传输,数据块内比特间隔固定; 收发双方时钟需严格同步(使用同步时钟或锁相环); 传输效率高,额外开销仅为帧头帧尾(如标志位或同步字符); 硬件复杂,适合高速、大块连续数据传输。 例子:以太网、光纤通信(SONET/SDH)、USB高速模式。 单工、半双工和全双工通信 单工通信 定义:信息只能单向传输,一方固定发送,一方固定接收,不能反向。 例子:广播、电视、遥控器。 半双工通信 定义:双方都能收发,但同一时刻只能单向,不能同时发和收。 例子:对讲机、传统步话机、RS-485总线。 全双工通信 定义:双方可同时发送和接收,双向互不干扰。 例子:手机通话、以太网(使用独立收发线对)、微信语音通话。 信号传输特性与信道容量 通过信号的傅里叶分析,本章解释了其传输过程存在的衰减、失真等现象,引入了截止频率、物理带宽的概念以及它们对信号传输的影响。 傅里叶分析与信号失真 任何周期信号都可以分解为一系列不同频率的正弦波(基波和谐波)的叠加。当信号通过实际信道时,不同频率分量会经历不同的衰减和相移,导致接收端波形发生畸变。 幅度衰减:高频分量衰减通常比低频分量更严重,导致信号边沿变缓。 相位失真:不同频率的传输延迟不同,造成码间干扰。 信道带宽:信道的截止频率范围,只有频率落在带宽内的分量才能被有效传输。 信道带宽与截止频率 物理带宽:信道能够通过的最大频率与最小频率之差,单位为赫兹(Hz)。例如,话音信道带宽约为3.1 kHz(300 Hz~3.4 kHz)。 截止频率:信号功率衰减超过某一阈值(通常为-3 dB)的频率点。 影响:带宽越窄,可传输的高频分量越少,输出波形越接近“圆滑”,可能导致接收端无法区分相邻比特。 信道容量:奈奎斯特定理与香农定理 信道的物理带宽直接影响信道的传输性能,即它的传输速率,或者数字带宽。 奈奎斯特定理(无噪声信道) 对于无噪声、带宽为 B 赫兹的理想信道,最大数据速率为: 最大数据速率 = 2B * log2(M),其中 M 为信号电平数(如M=2,则速率为 2B bps)。 该定理给出了在避免码间串扰条件下的理论上限。 ...

August 27, 2025 · 2 min · farmer3-c

计算机网络概述

计算机网络在信息时代的作用 计算机网络已经成为信息社会的核心基础设施。它使得人们可以随时随地访问、处理和交换信息,极大地促进了数字化、网络化和智能化的发展。具体作用包括: 信息共享:用户可以通过网络访问分布在世界各地的信息资源(网页、数据库、文件等)。 通信协同:电子邮件、即时消息、视频会议等应用支持人与人、人与机器之间的高效协作。 远程访问:支持远程办公、在线教育、远程医疗等,打破了地理限制。 电子商务与金融:网络支付、网上银行、在线购物等改变了传统商业模式。 娱乐与媒体:流媒体、社交网络、在线游戏等丰富了人们的文化生活。 互联网概述 网络的网络 互联网是由众多计算机网络(局域网、城域网、广域网)通过路由器互联而成的“网络的网络”。其两大基本特点是: 连通性:任何接入互联网的用户(终端)之间都可以相互交换数据,仿佛彼此直接相连一样。这种连通性不受物理距离的限制。 共享性:指资源共享,包括信息(网页、文件)、软件(在线服务、云应用)和硬件(如远程打印机、算力资源)。共享使得资源利用率大幅提升,降低了成本。 互联网基础结构发展三个阶段 第一阶段(1969–1990):ARPANET 到互联网雏形 1969 年美国国防部建立 ARPANET,最初只有 4 个节点。 20 世纪 70 年代提出 TCP/IP 协议体系。 1983 年 ARPANET 全面采用 TCP/IP,标志着现代互联网的诞生。 80 年代中期美国国家科学基金会建立 NSFNET,成为主干网。 第二阶段(1990–2000):商业化与万维网兴起 1990 年 ARPANET 停止运行,NSFNET 成为骨干。 1991 年万维网(WWW)公开,浏览器出现,互联网向公众开放。 1995 年 NSFNET 退役,互联网完全由商业 ISP 运营,进入爆炸式增长。 第三阶段(2000 至今):移动互联网、物联网与高速宽带 光纤到户、4G/5G 移动通信普及。 智能终端、云计算、社交网络、流媒体成为主流。 物联网(IoT)将数十亿设备接入互联网,进入“万物互联”时代。 互联网的标准化工作 互联网的标准化由 IETF(互联网工程任务组) 等组织负责,遵循“ rough consensus and running code” 原则。主要成果以 RFC(Request For Comments) 文档形式发布。 Internet Standard:经过充分验证的正式标准(如 RFC 791 – IP、RFC 793 – TCP)。 Proposed Standard / Draft Standard:处于不同成熟度的草案。 此外还有 BCP(Best Current Practice)、Informational 等类型。 标准化过程公开透明,任何人均可提交提案,保证了互联网的开放性和快速演进。 互联网的组成 互联网从物理结构上由以下四类元素构成: ...

August 27, 2025 · 2 min · farmer3-c

计算机网络

计算机网络 概述 物理层 链路层 网络层 传输层 应用层 参考 计算机网络, 谢希仁 CS-Notes book

August 27, 2025 · 1 min · farmer3-c

什么是云计算

Definition 云计算是一种技术,它允许你通过互联网存储和访问数据及应用程序,而不是使用计算机的硬盘驱动器或本地服务器。在云计算中,你可以将不同类型的数据(如文件、图像、视频和文档)存储在远程服务器上,并随时从任何连接到互联网的设备访问它们。 基础设施:云计算依赖于互联网上托管的远程网络服务器来存储、管理和处理数据。 按需访问:用户可以按需访问云服务和资源,无需投资物理硬件即可进行扩展或缩减。 服务类型:云计算提供多种好处,如节省成本、可扩展性、可靠性和可访问性。它减少了资本支出,并提高了效率。 Architecture Of Cloud Computing 前端(用户交互增强) 云计算的用户界面由两部分客户端组成。瘦客户端使用网络浏览器,提供便携和轻量级的访问方式;而胖客户端则使用多种功能,提供强大的用户体验。 后端平台(云计算引擎) 云计算的核心是在后端平台,使用多个服务器进行存储和计算处理。应用程序逻辑的管理通过服务器进行,而有效的数据处理由存储提供。这些后端平台的结合提供了处理能力,以及管理和存储云端数据的能力。 基于云的交付和网络 通过互联网、内网和云间网提供按需访问计算机和资源。互联网具有全球可访问性,内网有助于组织内部服务之间的通信,而云间网则实现不同云服务之间的互操作性。这种动态的网络连接确保了云计算架构的一个基本组成部分,即保证轻松访问和数据传输。

1 min · farmer3-c

什么是边缘计算

Definition 本质上,边缘计算是指尽可能在数据产生和指令执行的地方进行计算。这种计算形式可能直接在客户端设备上进行——例如智能手机、监控摄像头、无人机或自动驾驶汽车——也可能在临近的网络节点进行,例如在蜂窝塔旁边的本地连接服务器或小型本地数据中心。重要的是,边缘计算是尽可能在数据源附近进行,以减少网络流量和延迟。 这是在 5G 通信和云计算可能已经普及的情况下进行的,因为将请求发送到中央服务器并获取响应所需的时间可能仍然过长,特别是对于时间关键任务,如自动驾驶汽车。合适的边缘设备,无论是边缘服务器还是强大的客户端设备,都能够绕过延迟、带宽和响应时间的问题。在隐私或安全问题可能存在的情况下,边缘计算也可能更可取。人工智能和物联网(IoT)等下一代智能技术的现代实例严重依赖于边缘设备的部署。 Example 想象一座由数十个高清 IoT 摄像机监控的建筑物。这些“笨拙的”摄像头仅仅输出原始视频信号,持续将信号串流到云服务器。在云服务器上,来自所有摄像头的视频输出都会通过运动检测应用程序,以确保仅将有活动的剪辑保存到服务器的数据库中。这意味着建筑物的互联网基础设施将承受持续且显著的压力,因为高容量的视频素材传输会消耗大量带宽。此外,云服务器上的负载极高,因为必须同时处理来自所有摄像头的视频素材。 现在,假设运动传感器计算移至网络边缘。如果每个摄像头都使用自己的内部计算机来运行运动检测应用程序,然后根据需要将素材发送到云服务器,这样会如何?这将导致带宽使用量显著减少,因为很多镜头永远不必传输到云服务器。 此外,云服务器现在仅负责存储重要素材,这意味着服务器可以与更多数量的摄像头通信而不会过载 Kubernetes Native Edge Computing Framework (project under CNCF) Reference 1.What is Edge Computing? Definition and Cases Explained 2.kubeedge 3.什么是边缘计算?

1 min · farmer3-c

我的第一篇文章

前言 一直想搭建一个自己的个人博客,苦于网上的教程说的云里雾里,于是未果。 忽然发现 Hux Blog,得以顺利搭建,将搭建过程作为第一篇博客发布。 详细搭建步骤 环境准备 首先需要安装必要的开发环境 : 安装Ruby和Bundler 安装项目依赖: $ bundle install 启动本地开发服务器 运行以下命令启动本地预览(默认端口4000): $ bundle exec jekyll serve # 或者使用 npm start 基础配置定制 修改_config.yml文件进行个性化配置 : ##### Site settings title: 你的博客标题 SEOTitle: 你的SEO标题 description: "博客描述" ##### SNS settings github_username: 你的github用户名 weibo_username: 你的微博用户名 ##### Build settings paginate: 10 # 每页文章数量 创建博客文章 手动创建 在_posts/目录下创建Markdown文件,包含YAML头文件 : layout: post title: "文章标题" subtitle: "副标题" date: 2015-01-29 12:00:00 author: "作者名" header-img: "img/post-bg-2015.jpg" catalog: true tags: - 标签1 - 标签2 使用Rake工具自动生成 使用命令自动生成文章模板: ...

1 min · farmer3-c

纠删码是什么

Definition 纠删码是一种系统设计中的数据保护方法,用于确保数据的可靠性和可用性。它通过将数据分割成更小的数据块,并使用数学算法创建额外的数据片段(称为校验数据),从而实现这一功能。这使得系统即使在某些数据块丢失或损坏的情况下也能恢复原始数据。 数据分片:原始数据被分割成多个数据块。 校验和生成:使用 Reed-Solomon 等算法生成额外的校验和块。 存储:数据和校验块被分布到不同的存储节点或设备上。 恢复:如果某些数据块丢失或损坏,系统可以使用剩余的数据块和校验数据来重建原始数据。 Reed-Solomon Encoding Matrix Example 数学家们已经几个世纪以来一直在研究矩阵代数、群论和信息论。Reed 和 Solomon 利用这些知识创造了一种看似神奇的编码系统。它可以将信息分解成 n 个部分,添加 k 个“校验”部分,然后从 (n+k) 个部分中的 n 个部分中重建原始信息。 下面的示例使用“4+2”编码系统,其中原始文件被分成四块,然后添加两块校验块。 原始数据 在这个例子中,文件的四个部分每个都是四个字节长。每个部分是矩阵的一行。第一个是“ABCD”。第二个是“EFGH”。以此类推。Reed-Solomon 算法创建一个编码矩阵,你用这个矩阵乘以你的数据矩阵来生成编码数据。该矩阵的设置方式是,结果的前四行与输入的前四行相同。这意味着数据保持完整,它实际上只是在计算校验位。 应用编码矩阵 结果是比原始矩阵多两行的矩阵。这两行是校验位。 编码矩阵的每一行都会生成结果矩阵的一行。因此编码矩阵的每一行都会生成文件结果的一部分。由于行是独立的,你可以划掉两行,方程仍然成立。 数据丢失:六行中有两行“丢失” 那些行完全消失后,看起来是这样的: 由于数学家多年来所做的所有工作,我们知道编码矩阵,即左侧的矩阵,是可逆的。存在一个逆矩阵,当它与编码矩阵相乘时,会产生单位矩阵。就像在基础代数中一样,在矩阵代数中你可以用相同的东西乘以等式的两边。在这种情况下,我们将用单位矩阵从左侧进行相乘: 将方程两边乘以逆矩阵 逆矩阵和编码矩阵相互抵消 重建原始数据 因此,要制作解码矩阵,过程是取原始编码矩阵,划去缺失部分的行,然后找到逆矩阵。接着,你可以将逆矩阵与可用的数据部分相乘,以重建原始数据。 Reference 1.Backblaze Open-sources Reed-Solomon Erasure Coding Source Code 2.Erasure Coding in System Design

1 min · farmer3-c