
获得徽章 3
#青训营笔记创作活动#
TCP针对丢包设计了一些机制,有两个角度,第一个是针对生产者和消费者的消费速度,另一个是针对两者通信的网络环境。
1.超时重传机制,太浪费资源,尽量避免
2.利用滑动窗口动态调整发送和接受之间窗口的大小实现流量控制,针对单个连接的数据处理能力
3.拥塞控制,TCP加码加量不断试探得出当前网络不出现丢包的最大数据量,针对多个连接的数据处理能力
除了上述措施尽量避免重传之外,还可以将重传发生时的重传数据量尽可能小,于是变产生了分段机制,数据包在传输层会被分为N个小于等于NSS的包,在网络层如果包大于MTU,仍会被继续分包。由于分段机制必然会导致数据包乱序的问题,所以最后还需要根据数据包的sequence进行乱序重排。
由于UDP没有分段机制,导致在发生重传时,UDP会比TCP更慢
TCP针对丢包设计了一些机制,有两个角度,第一个是针对生产者和消费者的消费速度,另一个是针对两者通信的网络环境。
1.超时重传机制,太浪费资源,尽量避免
2.利用滑动窗口动态调整发送和接受之间窗口的大小实现流量控制,针对单个连接的数据处理能力
3.拥塞控制,TCP加码加量不断试探得出当前网络不出现丢包的最大数据量,针对多个连接的数据处理能力
除了上述措施尽量避免重传之外,还可以将重传发生时的重传数据量尽可能小,于是变产生了分段机制,数据包在传输层会被分为N个小于等于NSS的包,在网络层如果包大于MTU,仍会被继续分包。由于分段机制必然会导致数据包乱序的问题,所以最后还需要根据数据包的sequence进行乱序重排。
由于UDP没有分段机制,导致在发生重传时,UDP会比TCP更慢
展开
评论
点赞
#青训营笔记创作活动#
减少用户点击获取服务器响应数据的时间的方案
1.http轮询,前端代码不断创建请求,缺点是请求数量多,请求间隔时间会导致明显卡顿
2.长轮询,增加http请求的超时时间,从而增大服务器接收到请求的概率,从而减少请求次数
上述场景均为客户端主动去向服务器要数据,TCP的两端是可以互相主动发送数据的,而http协议只是单方主动发送数据,所以基于TCP协议设计了websocket协议
经历三次TCP握手,http协议升级为websocket协议,建立连接用到http协议,之后就和http协议无关了。
同http协议相同,采用消息头加消息体的格式包装数据,从而解决tcp粘包问题
减少用户点击获取服务器响应数据的时间的方案
1.http轮询,前端代码不断创建请求,缺点是请求数量多,请求间隔时间会导致明显卡顿
2.长轮询,增加http请求的超时时间,从而增大服务器接收到请求的概率,从而减少请求次数
上述场景均为客户端主动去向服务器要数据,TCP的两端是可以互相主动发送数据的,而http协议只是单方主动发送数据,所以基于TCP协议设计了websocket协议
经历三次TCP握手,http协议升级为websocket协议,建立连接用到http协议,之后就和http协议无关了。
同http协议相同,采用消息头加消息体的格式包装数据,从而解决tcp粘包问题
展开
评论
点赞
#青训营笔记创作活动#
常见的针对服务器的限流方式包括计数器,滑动窗口,漏桶,令桶牌
计数器设置临界值判断固定时间段内是否超载,实现简单,但是在时间段末尾的高峰无法处理,容易被恶意攻击
滑动窗口针对计数器固定时间段进行切片,但是无法从根本上解决临界点问题
漏桶个人感觉像channel的缓存区,可以解决上述边界问题,但是不能单位时间多消费,不够灵活
令牌桶解决上述不能突发数据发送的问题,支持一次性拿多个令牌,而不是上述漏桶固定流出速度,从而允许一定程度的并发流量。是目前最常用的限流算法
常见的针对服务器的限流方式包括计数器,滑动窗口,漏桶,令桶牌
计数器设置临界值判断固定时间段内是否超载,实现简单,但是在时间段末尾的高峰无法处理,容易被恶意攻击
滑动窗口针对计数器固定时间段进行切片,但是无法从根本上解决临界点问题
漏桶个人感觉像channel的缓存区,可以解决上述边界问题,但是不能单位时间多消费,不够灵活
令牌桶解决上述不能突发数据发送的问题,支持一次性拿多个令牌,而不是上述漏桶固定流出速度,从而允许一定程度的并发流量。是目前最常用的限流算法
展开
评论
点赞