一句话说透计算机网络里面的数据在各层之间是怎么传递的

350 阅读3分钟

一句话总结:
数据传递就像“套娃快递”——发送端层层加包装,接收端层层拆包裹,每层只关心自己的任务,最终把数据准确送到目的地!


一、发送端:层层加包装(封装)

假设你用微信发送消息“你好”:

1. 应用层(用户界面)

  • 任务:把“你好”按协议(如HTTP)打包成应用数据。
  • 动作:相当于你写好信,塞进信封,写上“收件人:微信服务器”。
  • 数据单元消息(Message)

2. 传输层(快递员)

  • 任务:确保消息可靠传输(TCP)或快速发送(UDP)。

  • 动作:给信封贴上“运输标签”(TCP头),包含:

    • 源端口(你的微信端口,如5000)
    • 目标端口(微信服务器端口,如80)
    • 序列号(防止乱序,比如标记这是第1个包裹)
  • 数据单元段(Segment,TCP)/ 数据报(Datagram,UDP)

3. 网络层(物流公司)

  • 任务:规划路线,找到对方的IP地址。

  • 动作:再套一个大箱子,贴上“物流标签”(IP头),包含:

    • 源IP(你的手机IP,如192.168.1.100)
    • 目标IP(微信服务器IP,如106.11.22.33)
  • 数据单元包(Packet)

4. 链路层(货车司机)

  • 任务:把包裹送到下一站(如路由器)。

  • 动作:再套一个本地运输箱,贴上“本地地址标签”(MAC头),包含:

    • 源MAC(你的手机Wi-Fi MAC地址)
    • 目标MAC(路由器MAC地址)
  • 数据单元帧(Frame)

5. 物理层(高速公路)

  • 任务:把帧变成电信号/光信号,通过网线或Wi-Fi发送。
  • 动作:货车把箱子搬上高速,变成一串0和1的信号流。
  • 数据单元比特流(Bits)

二、接收端:层层拆包裹(解封装)

微信服务器收到信号后反向操作:

1. 物理层

  • 任务:把电信号/光信号还原成比特流。
  • 动作:高速公路卸货,把信号转成0和1的序列。

2. 链路层

  • 任务:检查MAC地址,确认是发给自己的。
  • 动作:拆掉最外层的本地运输箱(去掉MAC头),留下IP包。

3. 网络层

  • 任务:检查IP地址,确认目标正确。
  • 动作:拆掉物流箱(去掉IP头),留下TCP段。

4. 传输层

  • 任务:检查端口号,把数据交给对应的应用(如微信服务程序)。
  • 动作:拆掉运输标签(去掉TCP头),留下原始消息。

5. 应用层

  • 任务:解析消息内容,显示“你好”到对方手机。
  • 动作:拆开信封,读取信件内容。

三、关键比喻

层级发送端动作接收端动作核心关注点
应用层写内容,装信封读内容,显示给用户数据内容(HTTP/消息)
传输层贴运输标签(端口号)拆标签,确认交给哪个程序端到端可靠传输(TCP)
网络层贴物流标签(IP地址)拆标签,规划全局路线跨网络寻址(IP)
链路层贴本地地址(MAC地址)拆标签,送下一站相邻节点传输(MAC)
物理层装箱上高速(转信号)卸货还原信号物理介质(网线/Wi-Fi)

四、为什么分层设计?

  1. 各司其职:修路(物理层)的不用管物流(网络层)怎么规划路线。
  2. 灵活升级:Wi-Fi 6(物理层)升级不影响微信(应用层)的使用。
  3. 简化问题:程序员只需关注某一层的实现(如写APP不用懂网卡驱动)。

五、总结口诀

“数据传递像套娃,发送层层加标签。
物理通电发信号,链路MAC送隔壁。
网络IP找全局,传输端口保送达。
应用拆包读内容,分层协作真高效!”