【计算机网络】TCP 是否真的存在“粘包”?本地套接字&网络套接字的区别?

本文探讨了本地套接字与网络套接字的区别,重点分析了TCP是否真的存在粘包问题。尽管一些观点认为TCP作为流协议不存在粘包,但作者认为在特定情况下确实可能发生。粘包主要由接收方不及时接收和发送方缓冲区满导致。处理粘包的方法包括使用PUSH指令、优化接收进程和预处理线程。对于不需要分包的情况,通常是传输连续流数据时。
摘要由CSDN通过智能技术生成

1、本地套接字&网络套接字的区别

  • 通信对象:本地套接字是让单机中的进程进行通信;网络套接字是让网络中的进程进行通信;
  • 通信方式:网络套接字是通过绑定ip和端口,而本地套接字是绑定套接字文件的路径名。

除了以上两点外,基本相同。

2、TCP 是否真的存在“粘包”

参考链接:TCP粘包问题分析和解决(全)

“粘包”是什么? 指发送方发送的若干包数据到接收方接收时粘成一包,在接收缓冲区,后一包数据的头紧接着前一包数据的尾。

之前查了一些博文和资料,发现有的人说存在,有的人说不存在。
说不存在的:TCP是流不是包所以不存在粘包问题,也没有所谓的粘包概念。
说存在的:发送方将多个间隔较小、数据量小的数据合并成一个大数据块,然后进行封包发送,接收端难以分辨边界。

UDP是不存在的,因为UDP支持的是一对多的模式,接收端的skbuff(套接字缓冲区)采用了链式结构来记录每一个到达的UDP包。在每个包中就有了消息头(消息来源地址、端口等信息),这样的话对于接收端来说,容易区分边界。

我认为是存在的。

粘包出现的原因:

1、接收方。接收方不及时接收缓冲

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值