ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

Linux 网络编程基础:网络分类、分层模型与数据封装

Linux 网络编程基础:网络分类、分层模型与数据封装 Linux 网络编程基础网络分类、分层模型与数据封装课程尚硅谷《嵌入式 Linux 应用层开发》第 6 章 Socket 编程依据2026-09-29 20:21 录音转写课程 PDF 第 244—254 页。本节边界这是 Socket 编程的理论入口暂未讲socket()、bind()、listen()、connect()等代码接口。1. 本节在网络编程路线中的位置录音首先说明计算机网络范围很大本课程不会完整讲完所有网络技术而是先建立后续 Socket 编程必需的框架。网络分类为什么要分层OSI 七层模型教学五层模型TCP/IP 四层模型PDU、SDU、PCI封装与解封装服务、接口、协议后续 Socket API本节最需要留下的主线是应用程序通过 Socket 接口使用传输层服务 → TCP 或 UDP 通过 IP 发送数据 → IP 数据包由链路层承载 → 接收端逐层解封装并交给目标应用2. 按地理范围划分网络类型英文典型范围常见示例个人区域网PAN几米到十几米蓝牙、近距离个人设备通信局域网LAN家庭、办公室、楼宇或校园以太网、Wi-Fi城域网MAN城市范围城域光纤网络广域网WAN跨城市、国家或洲际运营商骨干网、跨区域企业网范围分类描述的是覆盖尺度不代表四类网络之间存在绝对、不可重叠的技术边界。2.1 局域网和互联网不要混淆电脑连接家里的交换机或无线路由器后先进入一个局域网。能否访问公网还取决于路由、网关、运营商连接、地址转换和访问策略。电脑或开发板 → 家庭或公司局域网 → 默认网关 → 运营商网络 → Internet连接 Wi-Fi 只表示接入了无线局域网不自动保证已经连通互联网。3. 按拓扑划分网络拓扑基本结构主要特点总线型多个节点共享一条主干介质布线简单主干故障影响大星型所有终端连接中央交换设备易管理中央节点是关键点环型节点首尾相连形成环数据沿环传递故障影响取决于是否有冗余网状节点之间存在多条可选路径冗余和可靠性高成本与管理复杂度高网状拓扑还分为全网状和部分网状。互联网整体更接近由大量网络和路由器组成的部分网状结构并不是每台终端都直接连接所有其他终端。4. 其他分类方法4.1 按使用范围类型含义Internet全球互联的公网体系Intranet组织内部使用的网络和服务Extranet向合作伙伴等受控外部用户开放的部分内部资源内网并不天然安全。身份认证、授权、补丁、加密和访问控制仍然需要落实。4.2 按交换方式类型工作方式典型场景电路交换通信前建立并独占一条逻辑通路传统电话系统分组交换数据拆成分组经网络逐跳转发Internet 的基本方式报文交换节点存储并转发完整报文早期通信系统中的概念4.3 按通信关系广播一个节点发送的信息能被广播域中的多个节点接收点对点在两个端点之间建立直接或逻辑上的通信关系。现代交换式以太网中的普通单播帧通常只被转发到目标端口不能简单理解为“每个以太网帧都会让所有节点收到”。以太网仍支持广播帧和多播帧。5. 为什么网络必须分层网络通信同时涉及应用程序、操作系统、协议栈、网卡、交换机、路由器和物理介质。分层可以把复杂问题拆开每层处理一组相对明确的问题下层为相邻上层提供服务上层不需要理解下层全部实现细节同层的通信双方遵守同一协议某层实现可以替换而不必重写所有上层。例如应用程序通常只需要调用 Socket API不需要自己生成以太网帧、计算 IP 路由或直接控制网卡发送比特。6. 分层模型中的五个概念6.1 层 Layer把完整通信过程划分成多个功能层级。例如传输层负责应用之间的数据传递网络层负责跨网络寻址与转发。6.2 实体 Entity实现某一层功能的软件或硬件组件。同一层中位于通信两端的实体称为对等实体。6.3 协议 Protocol对等实体之间遵守的规则规定数据格式、字段含义、交互次序和错误处理方法。主机 A 的 TCP 实体 ← 按 TCP 协议进行逻辑通信 → 主机 B 的 TCP 实体6.4 接口 Interface相邻层之间调用功能的边界和方法。在 Linux 应用层开发中Socket API 是应用程序访问操作系统网络能力的重要接口。6.5 服务 Service下层能够为上层完成的功能。服务说明“能做什么”接口说明“怎样调用”协议规定通信双方“按照什么规则实现”。7. OSI 七层模型OSI 模型从下到上分为七层层级主要职责常见理解7 应用层为应用提供网络功能HTTP、FTP、SMTP 等6 表示层数据表示、编码、压缩、加密把数据转换成双方可理解的格式5 会话层建立、维护和结束会话管理通信过程4 传输层应用端点之间的数据传输TCP、UDP、端口号3 网络层跨网络寻址和路由IP、路由器2 数据链路层同一链路上的帧传输Ethernet、MAC 地址、FCS1 物理层传输比特和电气或光学信号网线、光纤、射频、PHYOSI 是理解职责边界的参考模型。实际互联网软件通常按 TCP/IP 协议栈讨论。7.1 数据链路层并不保证端到端可靠教材把数据链路层描述为“确保物理链路上的无误传输”适合作为入门简化但不能理解成端到端数据一定送达。以太网 FCS 能帮助检测链路帧错误错误帧通常会被丢弃是否重传、是否最终到达以及是否按序交付还取决于更高层协议和具体链路技术。8. 教学五层模型五层模型把 OSI 的应用层、表示层和会话层合并为一个应用层应用层 传输层 网络层 数据链路层 物理层它主要用于教学既保留了链路层和物理层的区别又比七层模型简洁。9. TCP/IP 四层模型本课程后续 Socket 编程主要使用 TCP/IP 四层视角TCP/IP 层主要协议或技术负责的问题应用层HTTP、FTP、SSH、SMTP、DNS 等应用数据的含义和交互规则传输层TCP、UDP把数据交给正确的应用端点网际层IPv4、IPv6、ICMP跨网络寻址和路由链路层Ethernet、Wi-Fi、PPP在当前物理网络上承载 IP 数据包9.1 三种模型怎样对应OSI 七层教学五层TCP/IP 四层应用、表示、会话应用层应用层传输层传输层传输层网络层网络层网际层数据链路层数据链路层链路层物理层物理层链路层模型用于帮助定位功能。实际协议并不总能完美、唯一地塞进某一层分析时应关注协议真正提供的能力。10. IP 地址、端口号和协议号分别负责什么老师使用“IP 找到电脑端口找到电脑中的程序”帮助入门。更准确的理解是IP 地址标识网络接口并参与路由选择协议号告诉 IP 层负载应交给 TCP、UDP、ICMP 等哪个上层协议端口号帮助 TCP 或 UDP 把数据交给主机中的具体 Socket操作系统再把 Socket 与相应进程关联。TCPUDP目的 IP 地址到达目标主机的网络接口IP 协议字段目标 TCP 端口目标 UDP 端口目标 Socket / 应用一条 TCP 连接通常由以下信息区分源 IP 源端口 目的 IP 目的端口 传输层协议所以同一个服务器端口可以同时服务许多客户端连接。11. TCP 与 UDP 的初步区别特征TCPUDP连接面向连接无连接数据形式连续字节流一个个数据报可靠性提供可靠、有序传递不保证送达、顺序或不重复消息边界不保留应用写入边界保留数据报边界常见取舍功能完整协议开销和状态更多简单、低开销应用自行处理可靠性需求TCP 的“可靠”表示协议会通过序号、确认、重传等机制提供可靠、有序的字节流服务不表示网络永远不会断开也不表示一次send()必然对应接收端一次完整recv()。录音在本节只做初步对比第 254 页开始进入 TCP 特性详细机制属于后续课程。12. PDU、SDU 与 PCI12.1 PDUPDUProtocol Data Unit协议数据单元是同层对等实体交换的数据单位。不同层常使用不同名称层常见 PDU 名称应用层消息或应用数据TCP 传输层TCP 报文段 SegmentUDP 传输层UDP 数据报 DatagramIP 网际层IP 数据包或 IP 数据报 Packet / Datagram数据链路层帧 Frame具体资料对 Packet、Datagram 等词的使用可能略有差异判断时应先看它所处的协议层。12.2 SDUSDUService Data Unit服务数据单元是当前层从上层接收、需要继续承载的数据。对当前层来说它是负载。12.3 PCIPCIProtocol Control Information协议控制信息是当前层为了实现自身协议功能而添加的控制信息例如源和目的地址源和目的端口协议类型序号、确认号和控制标志长度、校验信息。基本关系PDU PCI SDUPCI 常位于头部。某些协议还包含尾部例如以太网帧尾部的 FCS。13. 封装与解封装假设浏览器向网站服务器发送 HTTP 请求。13.1 发送端封装HTTP 请求数据加入 TCP 头部TCP 报文段加入 IP 头部IP 数据包加入以太网头部和尾部以太网帧网卡发送比特可以把每层动作理解为上层 PDU → 作为本层 SDU → 本层添加 PCI → 形成新的本层 PDU13.2 接收端解封装接收端按相反方向处理网卡接收帧 → 链路层检查并去除链路头尾 → IP 层检查目的地址并去除 IP 头 → TCP 根据端口和连接状态处理报文段 → 应用从 Socket 读取字节每层只解释自己负责的控制信息然后把负载交给上层。14. 服务、接口和协议的关系这三个概念容易混淆可以用一个问题分别对应概念回答的问题网络编程中的例子服务下层能为上层做什么TCP 提供可靠、有序的字节流传输接口上层怎样使用服务应用调用 Socket API协议通信双方怎样实现和互操作两端 TCP 按统一报文格式和状态机通信调用接口使用服务遵守 TCP 协议应用程序Socket API内核 TCP 实现远端 TCP 实现协议主要描述对等层之间的横向规则服务和接口描述相邻层之间的纵向关系。15. 与后续 Socket 编程的对应学完本节后后面的 API 才有明确位置后续概念本节理论对应socket()创建应用访问传输层服务的 SocketIP 地址指定本地或远端网络地址端口号指定主机中的服务端点SOCK_STREAM通常选择 TCP 字节流服务SOCK_DGRAM通常选择 UDP 数据报服务send/recv应用通过接口提交和取得数据网卡与驱动在链路层和物理层完成实际收发Socket 是操作系统提供给应用的编程接口。它本身不是 TCP、UDP 或 IP 协议但可以让应用选择并使用这些协议提供的能力。16. 可以立即做的观察练习在 Linux 中运行ipaddriproute ss-lntup观察ip addr中接口和 IP 地址的对应关系ip route中默认网关和路由条目ss -lntup中 TCP、UDP、本地地址和端口号同一个进程是否可能监听多个 Socket127.0.0.1与网卡实际地址有什么不同。这一步不要求写代码目的是把“接口、IP、传输协议、端口、进程”对应起来。17. 录音与教材表述校正转写中的“操作编程”应为“Socket 编程”或“套接字编程”。OSI 是网络体系结构参考模型不宜称为“法律上的标准”。TCP/IP 是互联网实际采用的协议族和实现框架。IP 地址不应简单等同于网址。域名可以解析为 IP 地址而 URL 还包含协议、主机、端口、路径等信息。IP 地址更准确地标识网络接口端口帮助传输层把数据分用到 Socket不是端口直接“找到进程”。数据链路层能检测某些链路错误但不能独自保证端到端可靠传输。TCP 提供可靠、有序的字节流不保留应用消息边界一次发送的数据可能被多次接收也可能与其他发送合并读取。UDP 不是“保证传过来但可能丢”。UDP 只提供数据报发送能力不保证交付、顺序和去重。现代交换式以太网的普通单播不会让所有节点都接收每个帧广播只适用于特定目的地址和广播域。网状网络可分全网状和部分网状互联网不是所有终端之间全部直连。教材把应用层写作“应用、表示、会话的简单合并”便于入门实际协议分层可能跨越理论模型边界。PDU、Packet、Datagram 等术语在不同资料中可能有宽泛用法应结合所在层和协议判断。18. 本节最低掌握标准学完后应能回答LAN 与 Internet 有什么区别为什么网络要分层OSI 七层、教学五层和 TCP/IP 四层怎样对应TCP/IP 四层各自解决什么问题IP 地址、传输层协议和端口号分别起什么作用TCP 与 UDP 的最基本区别是什么PDU、SDU、PCI 之间是什么关系什么是封装和解封装服务、接口和协议分别回答什么问题Socket API 在分层模型中的位置是什么最低实践要求能画出应用数据到以太网帧的封装顺序能解释“IP 找主机接口端口找 Socket”的含义能读懂IP:端口形式例如192.168.1.10:8080能使用ip addr、ip route和ss查看本机网络状态。19. PDF 页码与录音时间索引主题PDF 页码录音时间Socket 编程章节入口24400:05—00:55按地理范围和拓扑分类245—24600:56—03:22按用途、交换方式和通信方式分类246—24703:23—05:23分层原因及相关概念247—24805:25—08:49OSI 七层模型248—24908:50—13:43教学五层和 TCP/IP 四层模型249—25113:44—17:59PDU、SDU、PCI251—25218:00—20:07以太网通信的封装与解封装252—25320:08—21:31服务、接口与协议253—25421:32—22:52TCP 特性入口254教材下一部分录音尚未正式展开进一步核对资料IETF Internet StandardRFC 9293Transmission Control ProtocolIETF StandardRFC 768User Datagram Protocol20. 下一步学习下一阶段应按下面顺序继续IPv4 地址、子网掩码、默认网关和端口号主机字节序与网络字节序sockaddr_in地址结构TCP 的连接、可靠字节流和三次握手TCP 服务端socket → bind → listen → accept → recv/send → closeTCP 客户端socket → connect → send/recv → closeUDPsocket → sendto/recvfrom → close。这节不需要背下所有网络名词。先确保自己能解释四层模型、IP 与端口、封装过程后续写 Socket 程序时再把 API 放到对应层次中。
返回列表