报文被拆分为多个分组发送

171 篇文章 36 订阅 ¥39.90 ¥99.00
TCP 是一种字节流(byte-stream)协议,流的含义是没有固定的报文边界。
假设你调用 2 次 write 函数往 socket 里依次写 500 字节、800 字节。write 函数只是把字节拷贝到内核缓冲区,最终会以多少条报文发送出去是不确定的,如下图所示:
情况 1:分为两条报文依次发出去 500 字节 和 800 字节数据,也有
情况 2:两部分数据合并为一个长度为 1300 字节的报文,一次发送
情况 3:第一部分的 500 字节与第二部分的 500 字节合并为一个长度为 1000 字节的报文,第二部分剩下的 300 字节单独作为一个报文发送
情况 4:第一部分的 400 字节单独发送,剩下100字节与第二部分的 800 字节合并为一个 900 字节的包一起发送。
情况 N:还有更多可能的拆分组合
上面出现的情况取决于诸多因素:路径最大传输单元 MTU、发送窗口大小、拥塞窗口大小等。
当前mtu:node1:/root#ifconfig -a
eth1      Link encap:Ethernet  HWaddr 00:0C:29:F2:0E:05  
          inet addr:192.168.137.2  Bcast:192.168.137.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:296  Metric:1
		  


一次收到了257的长度:

node1:/root#tcpdump -S -i eth1 '((tcp) and  (port 8080) )'
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth1, link-type EN10MB (Ethernet), capture size 65535 bytes


01:01:20.
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
电路交换、报文交换和分组交换是常见的数据通信传输方式,它们在不同的场合具有不同的适用性。 1. 电路交换: - 适用场合:对于需要稳定、实时、持续传输大量数据的应用场景,如电话通信和视频会议等。 - 工作原理:在通信建立阶段,建立一条专用通路用于数据传输,通信双方独占该通路,直到通信结束。 - 优点:实时性好,传输稳定,适用于对传输质量要求较高的场景。 - 缺点:资源占用较高,通路建立时间较长,不适用于短暂通信或数据量较小的场景。 2. 报文交换: - 适用场合:对于数据量较小且需要可靠传输的应用场景,如电子邮件和文件传输等。 - 工作原理:将数据划分为较小的报文,每个报文携带完整的源地址和目的地址信息,通过交换节点逐个传输。 - 优点:适用于不连续传输数据,具有灵活性和可靠性,能够处理不同大小的数据包。 - 缺点:报文传输效率相对较低,有较多的控制信息开销。 3. 分组交换: - 适用场合:对于需要高效、灵活、经济的大规模数据传输的应用场景,如互联网数据传输。 - 工作原理:将数据划分为较小的数据包(分组),每个分组携带部分源地址和目的地址信息,通过交换节点转发。 - 优点:资源利用率高,传输效率高,适用于大规模数据传输和多路复用。 - 缺点:传输过程中可能会有分组丢失或乱序,需要额外的控制信息进行错误处理和重组。 总的来说,电路交换适用于实时性要求高的场景,报文交换适用于小数据量的可靠传输,而分组交换适用于大规模数据传输的高效性。具体选择哪种方式需要根据应用场景的特点和需求来决定。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

scan724

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值