最近项目中遇到了问题,会偶然出现服务端返回不是客户端请求报文的情况 经过排查后发现,是客户端的http长链接网络库,在第一次发送超时的情况下,没有断开连接,而是用此长链接继续发送, A包发送但超时未响应,然后发送B包,这时收到了A包的响应,则就会认为A包的响应为B包的响应内容,这就导致了此后的htt ...
分类:
Web程序 时间:
2020-04-08 20:52:21
阅读次数:
81
无论走到哪里,都应该记住,过去都是假的,回忆是一条没有尽头的路,一切以往的春天都不复存在,就连那最坚韧而又狂乱的爱情归根结底也不过是一种转瞬即逝的现实。——马尔克斯<palign="center">本文已经收录至我的GitHub,欢迎大家踊跃star和issues。</p><h4align="center"><ahr
分类:
其他好文 时间:
2020-04-06 23:53:46
阅读次数:
94
No.30 今日概要 非阻塞IO模型 验证客户端合法性 socketserver模块 计算器 内容回顾 TCP协议的粘包问题 本质:接收的边界不清晰 解决方式:自定义协议 文件发送自定义协议 先发送报头字典的字节长度 再发送字典(字典中包含文件的名字、大小.....) 最后发送文件内容 TCP和UD ...
分类:
其他好文 时间:
2020-04-05 23:56:33
阅读次数:
106
No.29 今日概要 粘包问题 内容回顾 OSI七层协议 应用层 传输层(理解port) tcp 可靠、慢、全双工、数据长度大 三次握手:发了 syn/ack 信号 三次握手把一个回复和请求连接的两条信息合并成一条了 四次挥手:发了 fin/ack 信号 由于一方断开连接后,可能另一方还有数据没有传 ...
分类:
其他好文 时间:
2020-04-05 23:51:20
阅读次数:
72
更新记录 时间 | 版本修改 | | | 2020年4月2日| 初稿 | 我们从经典的计算机科学丛书上阅到的知识,都说: 。但是这个要怎么理解呢?在我没有接触底层的套接字相关逻辑时。我对此也没有特别的了解。直到阅读了套接字的相关逻辑源码,才对此有了一定的了解 TCP的发包和我们业务层所发出的协议数据 ...
分类:
其他好文 时间:
2020-04-02 01:15:39
阅读次数:
70
首先,我们通过一个DEMO来模拟TCP的拆包粘包的情况:客户端连续向服务端发送100个相同消息。服务端的代码如下: 客户端代码如下: java AtomicLong count = new AtomicLong(0); NioEventLoopGroup boss = new NioEventLoo ...
分类:
Web程序 时间:
2020-03-21 14:53:20
阅读次数:
69
进行 Socket 编程时经常会碰到 TCP 的粘包与半包问题,很多时候我们选用 netty 等框架而不直接采用原生的 Socket 编程也是因为 netty 帮我们将该类传输过程中可能出现的问题屏蔽掉了,使我们可以抽出更多精力来关注功能的实现,而不是挣扎在处理这些底层问题上。但尽管如此,我们也必须 ...
分类:
其他好文 时间:
2020-03-21 12:55:44
阅读次数:
52
客户端 1 from socket import * 2 3 tcp_server = socket(AF_INET, SOCK_STREAM) 4 tcp_server.bind(('127.0.0.1', 8080)) 5 tcp_server.listen(124) 6 coon, addr ...
分类:
其他好文 时间:
2020-03-20 00:38:58
阅读次数:
61
计算机网络问题在日常面试中经常被问到,很多人也是屡屡受挫,今日龙叔带领大家搞明白究竟
分类:
其他好文 时间:
2020-03-15 23:44:44
阅读次数:
78
以太网中存在一个对于帧的有效数据大小的限制,即 MTU,以太网的 MTU 为 1500 字节。一、断包就是说发送端一次发送的消息长度过大,如果超过了 MTU,那么 ip 会对其进行分片。在网络编程中,要避免出现 IP 分片。因为是 IP 层是没有超时重传机制的,如果 IP 层对一个数据包进行了分片,... ...
分类:
其他好文 时间:
2020-03-15 16:20:33
阅读次数:
78