网络初步(四)——数据包详解

问题: 数据在网络中是如何传递的?
  • 1.在同一个子网络中,数据以广播的方式传递

MAC地址/网卡地址: 信息在传递过程中,会附带接收方和发送方的 MAC 地址.

  • 2.在不同的子网络中,数据以路由的方式传递

路由: 信息在不同的子网络中传递!(以一种最佳(最短/最快)的路径来传递信息!)

// 数据中必须包含很多信息: 接收方和发送方的 MAC 地址 / IP 地址/ 端口号!


数据链路层:(以太网数据包)

数据包: 是从 数据链路层引入的!规定数据包: 标头部分和数据部分:

数据链路层中,一个非常重要的协议——以太网协议:局域网协议 这一个协议部分内容位于数据链路层,还有一部分,位于网络层

  • 以太网数据包:

标头: 18 字节:主要包含了 接收方 和 发送方的 MAC 地址!
数据: 就是分组之后需要传递的数据!
不超过 1500 字节

上层变动完全不影响下层结构! --- 网络分层!

数据包嵌套:上层协议的数据包嵌套在下层协议数据包的数据部分!


网络层: (IP数据包)

  • IP 数据包:将 IP 数据包嵌套在 以太网数据包的 数据部分!

标头: 双方的 IP 地址. 20 字节!
数据: 需要传递的数据! 不超过 65535 个字节!


传输层: (TCP/UDP数据包):

  • 相同点:
    都是将端口号添加到标头中,嵌套在IP数据包的数据部分。
  • 不同点:
    UDP数据包的标头部分,是最简单的数据包标头, 8个字节 ,就包含双方的 端口号
    TCP 数据包:标头部分比较复杂: 肯定是包含端口号的, 包含一些质询信息(防止丢包)

标头: 双方的端口号

数据: 数据

为了保证一个传输层数据包恰好能嵌套在一个 IP 数据包的数据部分,总大小不超过 65535个字节!


应用层: 需要传递的数据! 数据可以无限大!

比如: IP 数据包的长度是 5000(20标头+ 4980个数据) 个字节! 分成4个包: 1500(20标头 + 1480数据) 1500(20标头 + 1480数据) 1500(20标头 + 1480数据) 500(20标头 + 540数据)

分包/拆包: 需要将数据包拆分成一个个的小包,分别嵌套在对应的数据包中!

分包之后,利于数据传递!

客户端接收到数据之后,接收到的时一个个拆分之后的数据包! 需要将接收到的数据包按顺序组合在一起,才能得到完整的数据!

Socket(套接字/插座): 是一个"通信模型"!不属于七层协议! 解决不同"主机"之间"应用程序"的通信问题!

Socket 模型: "主机" + "端口" 就是 Socket模型!

最常见的 Socket 模型就是 TCP(端口到端口之间的通信)/IP(解决的时主机到主机之间的通信) 和 UDP/IP

推荐阅读更多精彩内容