🔌 第二章 用电信号传输TCP/IP数据
📄 一句话概括

包=切小的数据块+头部(目的地等控制信息)——交换机和路由器像分拣区,按头上的控制信息接力搬运。

📝 本节和前面几节的关系

2.4 节数据备好了;本篇从【整块发送】切换到【分包搬运】的世界观。

一、为什么切小

一条线路上多个通信共用——若独占发大文件,别人全卡死; 切小后大家轮流发,线路被公平分享。

二、头部决定去向

每个包头上写着目的地与序号; 包相当于信件,交换机与路由器是分拣处理区。

三、动手 Demo:包的套娃结构

出门的包由里到外三层信封:

for s in ['[数据][TCP头][IP头][MAC头]',
          ' 应用   传输   网络   链路']:
    print(s)

实跑输出:

--------------------------------------------------------------------
包的套娃结构
--------------------------------------------------------------------
  一个出门的包,由里到外三层信封:

    [数据][TCP头][IP头][MAC头]
      应用   传输   网络   链路

  每层头只写本层关心的:
  TCP 头管端口对账,IP 头管端到端,MAC 头管下一跳。

序号在 TCP 头里——分包后能拼回来,全靠它。

30 秒实验

  1. 算算 1MB 文件按 1460 字节分包有多少个。
  2. 想想如果包不切小,视频会议会怎样。
  3. 对照邮局分拣的类比,指出 IP 头和 MAC 头各像什么。

常见误区

  1. 以为包越小越好——头开销占比变大,效率反降。
  2. 以为分拣看的是数据内容——只看头部。
自测三问(点开对答案) 1. 为什么要分包? —— 共享线路、公平轮流。 2. 包像什么?分拣区像什么? —— 信件;交换机与路由器的分拣区。 3. 分包后靠什么拼回? —— TCP 头里的序号。

相关笔记