
tcp
varyall
这个作者很懒,什么都没留下…
展开
-
TCP/IP的三次握手与四次挥手详解
TCP((Transmission Control Protocol)传输控制协议,是一个面向连接的协议。在运用此协议进行数据传输前都会进行连接的建立工作(三次握手);当数据传输完毕,连接的双方都会通知对方要释放此连接(四次挥手)。认识TCP标志位tcp标志位有6种标示:SYN(synchronous建立联机)ACK(acknowledgemen转载 2016-12-21 21:13:05 · 355 阅读 · 0 评论 -
im 系统架构问题
1、android,ios,web端调用haproxy2、比如客户端发了消息,然后服务端返回过程中断掉了网,出现了未发送的红点,这个时候如何确定保证唯一性,也就是不能发重复的消息,去重?ios和android都有一个唯一id生成功能,能够保证去重3、比如刚开始用户a在 im1机器上面,突然间网络断开了,等im1连接到了im2机器上面的时候这个时候用户是和im1交互呢,还是和im2交互呢?每个用户和...转载 2018-05-23 18:06:02 · 1632 阅读 · 0 评论 -
图解Netty之Pipeline、channel、Context之间的数据流向。
以下所绘制图形均基于Netty4.0.28版本。一、connect(outbound类型事件) 当用户调用channel的connect时,会发起一个outbound类型的事件,该事件将在pipeline中传递(pipeline.connect),首先由tail handler处理,该handler只是将事件透传给下一个outbound类型的用户Handler(如果有),事件依次传递...转载 2018-06-21 21:50:37 · 1085 阅读 · 0 评论 -
【转】Netty之解决TCP粘包拆包(自定义协议)
1、什么是粘包/拆包 一般所谓的TCP粘包是在一次接收数据不能完全地体现一个完整的消息数据。TCP通讯为何存在粘包呢?主要原因是TCP是以流的方式来处理数据,再加上网络上MTU的往往小于在应用处理的消息数据,所以就会引发一次接收的数据无法满足消息的需要,导致粘包的存在。处理粘包的唯一方法就是制定应用层的数据通讯协议,通过协议来规范现有接收的数据是否满足消息数据的需要。2、解决办法 ...转载 2018-06-14 16:43:22 · 682 阅读 · 0 评论 -
利用Netty构建自定义协议的通信
在复杂的网络世界中,各种应用之间通信需要依赖各种各样的协议,比如:HTTP,Telnet,FTP,SMTP等等。在开发过程中,有时候我们需要构建一些适应自己业务的应用层协议,Netty作为一个非常优秀的网络通信框架,可以帮助我们完成自定义协议的通信。一般而言,我们制定的协议需要两个部分:Header : 协议头部,放置一些Meta信息。Content : 应用之间交互的信息主体。例如:| Vers...转载 2018-06-14 22:34:21 · 4390 阅读 · 7 评论 -
netty4用最简单的协议解决一个半包问题
有时候简化实现别人的代码,有助于你更好的理解代码,不要一味地读源代码。问题来源客户端往服务器发送小文件解决思路1、使用netty(废话)2、只是用ByteBuf3、自定义一种协议,用最小的网络代价完成数据传送实现其实netty有很多的定义好的协议来解决各种各样的问题,这篇文章来自《netty权威指南》作者李林峰,详细介绍了netty的编解码框架,以及一些常用的编解码协议。在解决这个问题的时候,我遇...转载 2018-06-15 00:00:40 · 1149 阅读 · 0 评论 -
netty实战-自定义解码器处理半包消息
概述在李林锋的Netty系列之Netty编解码框架分析中介绍了各种解码器,也推荐组合LengthFieldBasedFrameDecoderByteToMessageDecoder12这两个解码器来处理业务消息。但是有时候为了灵活性,会直接选择继承ByteToMessageDecoder1来处理业务消息,但是直接继承ByteToMessageDecoder,则需要自己处理半包问题。在李林锋的【n...转载 2018-06-15 00:01:31 · 744 阅读 · 0 评论 -
Netty 超时机制及心跳程序实现
Netty 超时机制的介绍Netty 的超时类型 IdleState 主要分为:ALL_IDLE : 一段时间内没有数据接收或者发送READER_IDLE : 一段时间内没有数据接收WRITER_IDLE : 一段时间内没有数据发送在 Netty 的 timeout 包下,主要类有:IdleStateEvent : 超时的事件IdleStateHandler : 超时状态处理ReadTimeout...转载 2018-06-19 12:35:19 · 751 阅读 · 0 评论 -
TCP粘包,UDP不存在粘包问题
有关TCP和UDP 粘包 消息保护边界在socket网络程序中,TCP和UDP分别是面向连接和非面向连接的。TCP的socket编程,收发两端(客户端和服务器端)都要有一一成对的socket,因此,发送端为了将多个发往接收端的包,更有效的发到对方,使用了优化方法(Nagle算法),将多次间隔较小且数据量小的数据,合并成一个大的数据块,然后进行封包。这样,接收端,就难于分辨出来了,必须提供科学的拆包...转载 2018-07-05 00:21:01 · 939 阅读 · 0 评论 -
20-TCP 协议(滑动窗口——基础)
相信大家都遇到过这样的场景:同学 Luffy 给你打电话,让你记下一串手机号码,可是你记忆力不太好,你跟 Luffy 约定,一次只最多只能报 4 个数字,Luffy 念一遍,如果你听到了就把他说的话重复一遍。接下来:你:你一次最多报 4 个数字,多了我记不住啊!Luffy:139你:139 (Luffy 知道你听到了)Luffy:7548你:7538 (很明显你听错了)Luffy:不对,是7548...转载 2018-05-16 16:04:51 · 649 阅读 · 0 评论 -
TCP滑动窗口机制
我们可以大概看一下上图的模型:首先是AB之间三次握手建立TCP连接。在报文的交互过程中,A将自己的缓冲区大小(窗口大小)3发送给B,B同理,这样双方就知道了对端的窗口大小。A开始发送数据,A连续发送3个单位的数据,因为他知道B的缓冲区大小。在这一波数据发送完后,A就不能再发了,需等待B的确认。A发送过来的数据逐渐将缓冲区填满。这时候缓冲区中的一个报文被进程读取,缓冲区有了一个空位,于是B向A发送一...转载 2018-05-16 15:07:36 · 401 阅读 · 0 评论 -
《TCP/IP详解:卷一》-TCP部分讲解
TCP/IP协议作者:Danbo 2015-7-2 本文为参考TCP/IP详解卷一,某些知识点加上了作者自己的理解,如有错误,欢迎指正,可以微博联系我!TCP包格式和IP包格式如下:TCP的正常建立与关闭建立连接TCP协议提供可靠的面向连接服务,采用三次握手建立连接。第一次握手:建立连接时,客户端发送SYN包(syn=j)到服转载 2016-12-21 21:14:42 · 1201 阅读 · 0 评论 -
TCP报文格局详解
TCP和谈只定义了一种报文格局 建立、拆除连接、传输数据应用同样的报文 TCP报文格局TCP报文段首部(20个字节) 源端口和目标端口:各占2个字节,16比特的端标语加上32比特的IP地址,共同构成相当于传输层办事接见点的地址,即“插口”; 这些端口可用来将若干高层和谈向下复用;序号字段和确认序号字段: 序号:占4个字节,是本报文转载 2016-12-22 13:29:54 · 1346 阅读 · 1 评论 -
【转】关于TCP 半连接队列和全连接队列
摘要: # 关于TCP 半连接队列和全连接队列 > 最近碰到一个client端连接异常问题,然后定位分析并查阅各种资料文章,对TCP连接队列有个深入的理解 > > 查资料过程中发现没有文章把这两个队列以及怎么观察他们的指标说清楚,希望通过这篇文章能把他们说清楚一点 ### 问题描述 JAVA的client和server,使用socket通信。server使用NIO。关于TCP 半...转载 2018-03-12 11:01:41 · 478 阅读 · 0 评论 -
tcp的半连接与完全连接队列
队列及参数server端的半连接队列(syn队列)在三次握手协议中,服务器维护一个半连接队列,该队列为每个客户端的SYN包开设一个条目(服务端在接收到SYN包的时候,就已经创建了request_sock结构,存储在半连接队列中),该条目表明服务器已收到SYN包,并向客户发出确认,正在等待客户的确认包(会进行第二次握手发送SYN+ACK 的包加以确认)。这些条目所标识的连接在服务器处于Syn_REC...转载 2018-03-24 19:07:05 · 1170 阅读 · 0 评论 -
TCP建立连接三次握手和释放连接四次握手
TCP建立连接三次握手和释放连接四次握手 【尊重原创,转载请注明出处】http://blog.youkuaiyun.com/guyuealian/article/details/52535294 在谈及TCP建立连接和释放连接过程,先来简单认识一下TCP报文段首部格式的的几个名词(这里只是简单说明,具体请查看相关教程) 序列号seq:占4个字节,用来标记数据段的顺序,TCP把连接中发送的所...转载 2018-03-24 21:00:28 · 2441 阅读 · 1 评论 -
TCP三次握手-backlog队列问题
TCP三次握手-backlog队列问题.md概述之前有同事做压力测试时,发现无论如何都无法突破128并发的问题,经排查发现该服务器ACCEPT QUEUE队列都为128,限制了网络的并发。TCP三次握手Linux内核协议栈为一个TCP连接管理使用两个队列,一个是半链接队列SYN QUEUE(用来保存处于SYN_SENT和SYN_RECV状态的请求),一个是ACCEPT队列 ACCEPT QUEUE...转载 2018-03-24 21:01:07 · 2375 阅读 · 0 评论 -
【TCP/IP详解 卷一:协议】TCP的小结
前言:TCP学习的综述在学习TCP/IP协议的大头:TCP协议 的过程中,遇到了很多机制和知识点,详解中更是用了足足8章的内容介绍它。TCP协议作为 应用层 和 网络层 中间的 传输层协议,既要为下面的网络层协议保证连接的可靠性(IP协议)弥补不足,又要作为 应用层进程向网络层发送数据的中转站(作为多路复用/解复用器)。这就使得我们在审视TCP这个协议的过程中,需要横向和纵向地看待TCP连接:横向...转载 2018-05-17 11:52:44 · 2502 阅读 · 0 评论 -
TCP滑动窗口控制流量的原理
TCP的滑动窗口机制 TCP这个协议是网络中使用的比较广泛,他是一个面向连接的可靠的传输协议。既然是一个可靠的传输协议就需要对数据进行确认。TCP协议里窗口机制有2种:一种是固定的窗口大小;一种是滑动的窗口。这个窗口大小就是我们一次传输几个数据。对所有数据帧按顺序赋予编号,发送方在发送过程中始终保持着一个发送窗口,只有落在发送窗口内的帧才允许被发送;同时接收方也维持着一个接收窗口,只有...转载 2018-05-16 00:29:13 · 1120 阅读 · 0 评论 -
TCP报文格式详解
TCP报文是TCP层传输的数据单元,也叫报文段。1、端口号:用来标识同一台计算机的不同的应用进程。1)源端口:源端口和IP地址的作用是标识报文的返回地址。2)目的端口:端口指明接收方计算机上的应用程序接口。TCP报头中的源端口号和目的端口号同IP数据报中的源IP与目的IP唯一确定一条TCP连接。2、序号和确认号:是TCP可靠传输的关键部分。序号是本报文段发送的数据组的第一个...转载 2018-07-31 22:40:12 · 520 阅读 · 0 评论