news 2026/4/14 16:45:39

【高级网络】Sockets(概念+API+TCP/UDP流程)+7层数据流与格式+Socket Examples(hello/ACK/终止符0x1b案例)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
【高级网络】Sockets(概念+API+TCP/UDP流程)+7层数据流与格式+Socket Examples(hello/ACK/终止符0x1b案例)
  • Lecture02 Part1:7层数据流与格式
  • Lecture02 Part2:Sockets(概念+API+TCP/UDP流程)
  • Lecture02 Part3:Socket Examples(hello/ACK/终止符0x1b案例)
  • Tutorial02:复习点与练习说明

Part 1:Data flow & format in OSI 7-layer(七层数据流与数据格式)

1) 核心概念 ①:每层“包装”一次(Encapsulation/Decapsulation)

中文(通俗版)
网络传数据像“快递打包”:

  • 你写的内容是payload(真正数据)
  • 经过每一层都会加一层“包装/头部header”(有时还有尾部trailer)
  • 到对方后再一层层拆包装(decapsulation),最后把原始数据交给应用

English (plain)
Networking is like shipping a package: each layerencapsulatesdata by adding its own header (and sometimes trailer). The receiverdecapsulateslayer by layer to recover the original payload.

好记口诀

发送:层层加壳(封装)
接收:层层剥壳(解封)


2) 核心概念 ②:每层数据单位名字(PDU)会变

你文件里给了非常标准的表(很爱考):

OSI层中文理解PDU 名称(考试常考)English
L7 应用层 / L6 表示层 / L5 会话层应用数据Payload / DataData
L4 传输层端到端传输Segment(TCP) / Datagram(UDP)Segment/Datagram
L3 网络层跨网络路由PacketPacket
L2 数据链路层同一链路传输FrameFrame
L1 物理层发送比特BitsBits

考试点:经常会出“给你一个名词,让你说是哪个层”:Frame=2层,Packet=3层,TCP segment=4层,Bits=1层。


3) 核心概念 ③:OSI vs TCP/IP(7层 vs 4层)

文件里明确对照:OSI 7层(App/Pres/Session/Transport/Network/DataLink/Physical)
TCP/IP 4层(Application/Transport/Internetwork/Network Access)

中文(通俗版)
TCP/IP 把 OSI 的 5/6/7 合并成 Application,把 1/2 合并成 Network Access。
English:TCP/IP collapses OSI layers: (5-7)→Application, (1-2)→Network Access.


4) 易错点:ARP 属于哪层?

文件里特别写了:ARP 是二层协议,但用三层 IP 地址

一句话记忆
ARP = “用IP问MAC”,所以逻辑上像三层,位置上在二层跑


Part 1 考试怎么出(高频)

  1. 画图/描述:封装与解封的过程(每层加什么)
  2. PDU匹配题:frame/packet/segment/bits 分别在哪层
  3. OSI vs TCP/IP 对照填空题
  4. ARP 属于哪层?为什么会用到IP?(二层协议、用三层地址)

Part 1 企业怎么用

  • 故障定位(troubleshooting):你看到“丢包/重传/CRC错误/ARP失败”就能迅速判断大概在哪层出问题。
  • 性能优化:把“应用慢”拆成 L7应用、L4重传、L3路由绕路、L2冲突/错误、L1链路质量等原因。


Part 2:Sockets(Socket概念 + API + TCP/UDP流程)

1) Sockets 是什么?为什么要用?

中文(通俗版)
写网络通信系统如果你从 L1 写到 L7:编码/调制/纠错/IP/ARP/DNS/TCP/UDP…会累死。
Socket 就像“操作系统提供的网络工具箱”,你用 API 就能直接使用成熟协议栈。

English
Sockets are an OS-providedtoolbox/APIso you don’t implement everything from layer 1 to 7. You reuse tested protocol stacks (TCP/IP, UDP, etc.).


2) Socket 的关键分类(很爱考)

文件里讲得很清晰:

  • Connection-based vs Connectionless:先建连接(TCP)还是每个包都带目的地(UDP)
  • Stream vs Packet/Message:连续字节流(TCP)还是有边界的数据报(UDP)
  • Reliable vs Unreliable:可靠传输(TCP) vs 可能丢/乱序(UDP)

一眼记忆
TCP = 连接 + 流 + 可靠
UDP = 无连接 + 报文 + 不可靠


3) Socket 三要素:domain / type / protocol

中文:Socket 用 domain、type、protocol 来描述。常见:

  • Domain:AF_INET(IP+port),AF_UNIX(本机路径)
  • Type:SOCK_STREAM(TCP),SOCK_DGRAM(UDP)
  • protocol:通常填0,让type决定

English: sockets are characterized by domain, type, protocol (e.g., AF_INET + SOCK_STREAM + TCP).


4) API 心智模型:打电话类比(老师给的类比,必背)

文件里直接用“买手机/拿号码/接电话”等类比,非常适合考试用:

API中文理解英文类比
socket()买手机(创建socket,返回fd)buy a phone
bind()绑定号码(绑定IP+port)get a number
listen()开启排队等待(允许多少排队)call waiting
accept()接电话(服务器接入连接)answer
connect()拨号给服务器call
send/recv说/听(传数据)speak/listen
shutdown()半关闭/结束通话某个方向partial close
close()彻底挂断释放资源hang up

5) TCP 服务器/客户端流程(最最爱考)

TCP Server(顺序背):socket → bind → listen → accept → send/recv(循环)→ shutdown → close
TCP Client:socket → connect → send/recv(循环)→ shutdown → close

English
Server: socket→bind→listen→accept→send/recv→shutdown→close
Client: socket→connect→send/recv→shutdown→close


6) accept 三种服务器风格(高频对比题)

文件给了三种:

  1. Iterative server:一次只服务一个连接(简单但低性能)
  2. Forking server:accept后fork子进程处理(能用多核但共享状态难)
  3. Concurrent single server(select):select管理多个socket,减少切换,较复杂但不靠多进程

7) 端口与连接的关键概念(超容易考)

  • 连接用 5-tuple 表示:from IP, from port, protocol, to IP, to port

  • 端口范围

    • 0~1023 通常需要root权限绑定
    • 1024~5000 well known(课件这么写)
    • 5001~65535 临时端口(ephemeral)

8) 辅助API(名字解析/字节序/地址转换)

文件列了这些(常见填空/解释题):

  • gethostname / gethostbyname(DNS name→IP)
  • htons/htonl/ntohs/ntohl(主机序↔网络序,大端)
  • inet_pton / inet_ntop(字符串IP↔二进制IP)

9) UDP(无连接)流程要点

UDP:socket →(bind可选)→ sendto/recvfrom(循环)→ shutdown → close
并且:UDP socket 也可以 connect(之后用 send/recv),还可能收到 ICMP 异步错误。


Part 2 考试怎么出(高频清单)

  1. 写出 TCP server/client 的 API 顺序(带解释)
  2. 区分 TCP vs UDP(connection/stream/reliable)
  3. accept 三种风格对比优缺点
  4. 解释 shutdown vs close(partial close vs release resources)
  5. 解释 5-tuple 为什么能区分连接
  6. 字节序函数、inet_pton/ntop 是做什么的

Part 2 企业怎么用

  • 你做任何网络应用(后端服务、游戏服务器、IoT网关、消息系统)底层都依赖 socket。
  • 性能工程:选择迭代/多进程/多路复用(select/epoll)是服务器架构核心决策。
  • 可靠性:TCP适合交易/文件;UDP适合实时语音视频/游戏(但要在应用层补可靠或容错)。


Part 3:Socket Examples(案例:hello/ACK/终止符0x1b)

1) 案例需求(用一句话说清)

中文:服务器周期发“hello”,客户端收到回“ACK”(可带数据),双方打印通信信息;结束时服务器发一个控制字符0x1b(ESC)通知终止,双方关闭并退出。
English: server periodically sends “hello”; client replies with “ACK” (optional data); both print messages; server ends by sending 0x1b (ESC) then both close sockets and exit.

2) 运行顺序的坑(必考小坑)

必须先启动 server,因为 server 在等 accept;你先跑 client 会 connect 报错(没人接)。

3) 测试地址(loopback)

同一台机器测试:IP 用127.0.0.1(loopback)。
(Tutorial 也强调 loopback 用法)

4) 端口与实现要点

示例端口:8886;server 不用指定 IP(bind INADDR_ANY),client 要指定 server IP+port。


Part 3 考试怎么出

  1. 给你需求,让你写“逻辑流程图/伪代码”:server 先 listen/accept,再循环 send/recv,收到终止标志关闭。
  2. 问:为什么要先启动 server?(client connect 需要 server accept)
  3. 问:0x1b 是什么?为什么用它?(ASCII ESC 作为控制命令)
  4. 问:127.0.0.1 做什么用?(本机回环测试)

Part 3 企业怎么用

  • 这就是“心跳/握手/终止控制”的最小模型:

    • hello = 心跳/请求数据
    • ACK = 确认/回传
    • 终止控制 = 协议状态机结束信号
      企业里常见在:设备管理、IoT采集、长连接服务、游戏房间协议等。


Tutorial02 PDF:你在实践里要掌握什么(复习清单)

重点复习点(按Tutorial列的)

  • Socket 概念:OS提供的通信端点(endpoint)
  • Socket 类型:datagram(UDP)、stream(TCP)、raw sockets(绕过传输层)
  • Server API 列表:socket/bind/listen/accept/connect/send/recv/shutdown(电话类比)
  • 示例程序行为:127.0.0.1 测试;client 每2秒发随机数,发16次后发“EXIT”;server 收到 EXIT 结束
  • 编译运行:gcc 编译,先跑 server 再跑 client

这一讲的“最强速记卡片”(建议你直接背)

中文 8 句背完

  1. 发送封装:每层加头;接收解封:每层拆头。
  2. PDU:L2 frame,L3 packet,L4 TCP segment/UDP datagram,L1 bits。
  3. ARP 在二层跑,但用三层IP找二层MAC。
  4. Socket = OS提供的网络工具箱/API,不用从L1写到L7。
  5. TCP server:socket-bind-listen-accept-send/recv-shutdown-close。
  6. TCP client:socket-connect-send/recv-shutdown-close。
  7. 连接用5-tuple区分(src/dst IP+port+protocol)。
  8. 实验:先跑server;本机测试用127.0.0.1;0x1b或EXIT作为终止信号。

English 8-line cheat sheet

  1. Encapsulation adds headers; decapsulation removes them.
  2. PDUs: frame(L2), packet(L3), segment/datagram(L4), bits(L1).
  3. ARP runs at L2 but uses L3 IP to resolve MAC.
  4. Sockets are OS APIs/toolbox for TCP/IP networking.
  5. TCP server flow: socket→bind→listen→accept→send/recv→shutdown→close.
  6. TCP client flow: socket→connect→send/recv→shutdown→close.
  7. A connection is identified by a 5-tuple.
  8. Run server first; test with 127.0.0.1; use ESC/EXIT to terminate.
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/14 16:45:11

终极解决方案:Auto-Unlocker 专业解锁VMware macOS虚拟机限制

终极解决方案:Auto-Unlocker 专业解锁VMware macOS虚拟机限制 【免费下载链接】auto-unlocker Unlocker for VMWare macOS 项目地址: https://gitcode.com/gh_mirrors/au/auto-unlocker Auto-Unlocker是一款专为VMware Workstation和Player设计的开源解锁工具…

作者头像 李华
网站建设 2026/4/14 16:36:34

Win11一键部署OpenClaw 无需命令行本地AI智能体搭建

前言 OpenClaw(小龙虾)是2026年现象级的本地AI自动化工具,不需要联网、不需要云端账号,只靠自然语言指令就能让AI自动帮你处理电脑上的所有重复工作。 安装前重要提醒(99% 失败都源于这里) ⚠️ 安装 / …

作者头像 李华
网站建设 2026/4/14 16:33:00

Token经济学七问——一份关于AI新经济的入门地图

它能否像用电量、货运量一样,成为宏观经济的先行信号? 2026年3月31日,OpenAI宣布完成新一轮融资,同时披露了一个重要数据:用户每分钟调用API接口的Token量超过了150亿,这样计算下来一天是21.6万亿。 1 刚好…

作者头像 李华