TCP UDP数据包传输大小

网络的分层区别

  1. 以太网是局域网
  2. 局域网 != internet

网络数据的传输过程

在网络中传输数据,数据包的大小依赖于链路层和物理层的传输能力,一般传输数据的过程是TCP或者UDP封装数据在数据的头尾加上TCP/UDP头部,之后到达IP网络层,同样在数据的头部加上IP头部,继续链路层对数据加上帧头部,之后以字节的形式发送数据到服务端,服务端收到数据首先在链路层解析去掉数据的帧头部,再上升到IP层去掉IP头部,之后到达TCP/UDP层去掉TCP/UDP的头部。

数据包传输分类

  1. 以太网中,其实主要是局域网中
  2. internet中,也就是普遍使用的公网

局域网TCP/UDP传输数据的最长长度

局域网的链路层传输数据的最大长度是1518bit,包括帧的头尾部长度18bit(头14+尾4),IP头部长度为20bit,TCP头尾部长度为20bit,UDP头尾部长度为8bit。所以TCP在局域网中传输数据的最长长度=1518-18-20-20 = 1460bit,UDP传输数据的最长长度 = 1518 - 18 -20 - 8 =1472bit

  1. TCP:1460bit
  2. UDP:1472bit

理论中传输数据的最长长度

  1. TCP是以数据流形式传输数据,所以使用send函数理论上没有大小限制。一般数据包太长的话会进行多次拆包传输,数据包短的话会放到下一次数据传输时发送。
  2. internet用UDP协议发送时,用sendto函数最大能发送数据的长度为:65535- IP头(20) - UDP头(8)=65507字节。用sendto函数发送数据时,如果发送数据长度大于该值,则函数会返回错误

猜你喜欢

转载自blog.csdn.net/qq_40910541/article/details/88848979