看Netty对粘包半包问题的理解

只要看到netty相关的内容,总会出现对粘包半包等问题疑惑。开发这么久的web服务,也没看到tomcat内部有这部分逻辑呀?难道是netty搞复杂了?寻遍全网以及和大佬的求证,肤浅的解答一下自己的疑惑:

1.Http协议的作用

tomcat作为web服务器,一般都通过http协议进行通信。根绝http协议的定义,通过请求行、请求头、消息体等定义可以很方便解析到对应数据,因此我们只需要在传输层解析到对应的数据结构即可。看netty对http协议的支持,也可以在代码中看到encoder/decoder的设置。大概没有在这个过程中,有过粘包半包的探究。

2.粘包半包问题来源-tcp协议

TCP/IP (Transmission Control Protocol/Internet Protocol) 即传输控制协议/网间协议,是一种面向连接的、可靠的、基于字节流的传输层(Transport layer)通信协议。

TCP的性质,不能区分消息起止。我相信当你开始探究粘包半包问题时,大概率都是从一些教学视频过来的,那么他么之前将了什么代码:socket

–socket–

我也找了一些关于socket的定义:

  • Socket 是对 TCP/IP 协议的封装,Socket 本身并不是协议,而是一个调用接口(API)
  • Socket 的出现只是使得程序员更方便地使用 TCP/IP 协议栈而已,是对TCP/IP协议的抽象,从而形成了我们知道 的一些最基本的函数接口,比如 create、listen、connect、accept、send、read和 write 等

所以我们直接通过socket编程,发送消息时,就需要考虑到粘包半包的这个问题了。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值