![](https://img-blog.csdnimg.cn/20201014180756923.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
网络
会飞的猪宝宝啊
这个作者很懒,什么都没留下…
展开
-
详解TCP三次握手与四次挥手
一、TCP三次握手和socket详解1.TCP连接第一次:cli发送SYN包(SYN = j)到ser,并且进入SYN_SEND状态,等待服务器确认;第二次:ser收到SYN包,必须确认客户的SYN(ACK = j+1),同事自己也发送一个SYN包(SYN = k),即SYN+ACK,此时ser进入SYN_RECV状态;第三次:cli收到ser的SYN+ACK包,向ser发送确认包...原创 2018-11-15 22:50:42 · 308 阅读 · 0 评论 -
关于Linux TCP接收缓存以及接收窗口的一个细节解析
TCP窗口 关于TCP的接收缓存以及通告窗口,一般而言懂TCP的都能说出个大概,但是涉及到细节的话可能理解就不那么深入了。由于我最近的工作与TCP有关,顺便又想起了很久之前遇到的一个问题:明明在接收端有8192字节的接收缓存,为什么收了不到8000字节的数据就ZeroWindow了呢?当时我的解决方案是直接扩大接收缓存完事,然后就没有然后了。后来深挖了一下细节,发...转载 2018-11-18 17:02:01 · 1135 阅读 · 0 评论 -
TCP的流式服务与拆包粘包
TCP的流式服务客户端发送字节流时,tcp会保证服务器端按照顺序接受到全部的字节流,其他诸如数据包的大小等,tcp协议对我们来说是透明的,我们可以完全不考虑。我们发送数据和接受数据只用send或者recv函数,只需要关注其返回值,直到发送了多少数据或者接收到多少数据。其他的通通不管,在TCP通讯中,我们也不需要关心数据包的大小,个数,我们只需要在客户端建立一个缓冲区不断发送,在服务器端建立一个...原创 2018-11-18 17:29:49 · 794 阅读 · 4 评论 -
TCP全解
网络模型TCP/IP协议族TCP协议简介TCP是一个面向连接的传输层协议,虽然TCP不属于ISO制定的协议集,但由于其在商业界和工业界的成功应用,它已成为事实上的网络标准,广泛应用于各种网络主机间的通信。作为一个面向连接的传输层协议,TCP的目标是为用户提供可靠的端到端连接,保证信息有序无误的传输。它除了提供基本的数据传输功能外,还为保证可靠性采用了数据编号、校验和计算...原创 2018-11-18 23:18:46 · 335 阅读 · 0 评论 -
客户端client 突然断电了,那么服务器如何快速的知道呢
(1)使用定时器(适合有数据流动的情况)。(2)使用socket选项SO_KEEPALIVE(适合没有数据流动的情况)。心跳包的发送,通常有两种技术:心跳包技术:心跳包之所以叫心跳包是因为:它像心跳一样每隔固定时间发一次,以此来告诉服务器,这个客户端还活着。事实上这是为了保持长连接,至于这个包的内容,是没有什么特别规定的,不过一般都是很小的包,或者只包含包头的一个空包。方法1:应用层自己实...原创 2018-11-22 00:14:50 · 2407 阅读 · 0 评论 -
一致性哈希算法
为什么要用一致性哈希算法?首先我们先介绍哈希算法!哈希算法假如有三台服务器编号0、1,2,有三张图片分别是S0、S1、S2,现在为了分担缓存压力,想要三张图片均匀的缓存到三台服务器上。现在将缓存下来的键进行哈希算法:但是哈希算法也有缺点,假如现在增加服务器,从原来的的三台变成了四台,情况就会改变就是因为哈希算法的缺陷很大,所以有了一致性哈希算法一致性哈希算法...原创 2018-11-17 17:57:01 · 159 阅读 · 0 评论 -
send/recv与socket
send函数不论是客户端还是服务器端应用程序都用send函数来向TCP连接的另一端发送数据。客户端程序一般用send函数向服务器发送请求,而服务器则通常用send函数来向客户程序发送应答。当调用send函数时,send先比较待发送数据的长度len和套接字s的发送缓冲区,如果len大于发送缓冲区的长度,该函数返回错误SOCKET_ERROR;如果len <= s的发送缓冲区,那么s...原创 2018-11-18 16:31:34 · 412 阅读 · 0 评论 -
Guava官方文档-RateLimiter类
RateLimiter 从概念上来讲,速率限制器会在可配置的速率下分配许可证。如果必要的话,每个acquire()会阻塞当前线程直到许可证可用后获取该许可证。一旦获取到许可证,不需要再释放许可证。校对注:RateLimiter使用的是一种叫令牌桶的流控算法,RateLimiter会按照一定的频率往桶里扔令牌,线程拿到令牌才能执行,比如你希望自己的应用程序QPS不要超过1000,那么RateL...转载 2019-09-03 15:36:03 · 108 阅读 · 0 评论