获得徽章 1
- #青训营笔记创作活动#
2月3日 打卡day8
TCP为了实现可靠性,引入了重传机制、流量控制、滑动窗口、拥塞控制、分段以及乱序重排机制。而UDP则没有实现,因此一般来说TCP比UDP快。其实现在TCP是通过滑动窗口机制来实现流量控制机制的。流量控制针对的是单个连接数据处理能力的控制,拥塞控制针对的是整个网络环境数据处理能力的控制。
Tcp就算真丢了包,那我也就只需要重传那一小段就好了,大大减小了重传的压力,这就是TCP的分段机制。而这个所谓的一小段的长度,在传输层叫MSS(Maximum Segment Size),数据包长度大于MSS则会分成N个小于等于MSS的包。
后发的数据包先到,那就先放到专门的乱序队列中,等数据都到齐后,重新整理好乱序队列的数据包顺序后再给到用户,这就是乱序重排机制。
TCP是面向连接的协议,而UDP是无连接的协议。这里的"连接"其实是,操作系统内核在两端代码里维护的一套复杂状态机。
大部分项目,会在基于UDP的基础上,模仿TCP,实现不同程度的可靠性机制。比如王者农药用的KCP其实就在基于UDP在应用层里实现了一套重传机制。
对于UDP+重传的场景,如果要传超大数据包,并且没有实现分段机制的话,那数据就会在IP层分片,一旦丢包,那就需要重传整个超大数据包。而TCP则不需要考虑这个,内部会自动分段,丢包重传分段就行了。这种场景下,其实TCP更快。
展开评论点赞 - #青训营笔记创作活动#
1月22日 打卡day7
很多网站都是https协议的,而这里访问的是HTTPS协议的baidu.com,里面的Host和实际发送的request body都会被加密。正因为被加密了,所以没办法通过http.host进行过滤。
可以先执行tcpdump抓包,在另外一个命令行窗口使用文中命令将加密的key导出到/Users/xiaobaidebug/ssl.key。再使用key文件去解密
HTTPS握手的过程中会先通过非对称机密去交换各种信息,其中就包括3个随机数,再通过这三个随机数去生成对称机密的会话秘钥,后续使用这个会话秘钥去进行对称加密通信。如果能获得这三个随机数就能解密HTTPS的加密数据包展开评论点赞 - #青训营笔记创作活动#
1月18日 打卡day6
作者分享了关于在工作中遇到的问题,查找、分解的方法。总的来说大概几个方面,包括了:
搜索
翻译
找文献
分解复杂句子
查找语法知识。
除此之外,百度没有搜谷歌,谷歌上不了搜必应。搜索引擎没有就去stackflow国外社区/csdn社区也一起搜搜,微软msdn也可以展开评论点赞 - #青训营笔记创作活动#
1月17日 打卡day5
Kafka 提供了大多数消息系统难以实现的消息顺序性保障及回溯消费的功能。
存储系统来说,它把消息持久化到磁盘,相比于其他基于内存存储的系统而言,有效地降低了数据丢失的风险,设是基于分布式的。
展开评论点赞 - #青训营笔记创作活动#
1月16日 打卡day4
HTTP1.1里,只要客户端不问,服务端就不答。基于这样的特点,对于登录页面这样的简单场景,可以使用定时轮询或者长轮询的方式实现服务器推送效果。但是于客户端和服务端之间需要频繁交互的复杂场景,比如网页游戏,都可以考虑使用websocket协议,实现全双工同时收发信息
展开评论点赞 - #青训营笔记创作活动#
1月15日 打卡day3
DHCP(Dynamic HostConfigurationProtocol,动态主机配置协议)自动生成IP,通过DHCP,在联网之后可以自动获取到本机需要的IP地址,子网掩码还有路由器地址。
展开评论点赞 - #青训营笔记创作活动#
1月14日 day2
客户端转服务端,最大的挑战不是学一门新语言,而是编程思维的改变。
DDD 领域驱动设计的编程思维是分布式微服务的基石。评论点赞 - #青训营笔记创作活动#
1月13日 打卡day1
常见的限流方式及其优缺点对比。
1.计数器:
优点:固定时间段计数,实现简单,适用不太精准的场景;
缺点:对边界没有很好处理,导致限流不能精准控制。
2.滑动窗口:
优点:将固定时间段分块,时间比“计数器”复杂,适用于稍微精准的场景;
缺点:实现稍微复杂,还是不能彻底解决“计数器”存在的边界问题。
3.漏桶:
优点:可以很好的控制消费频率;
缺点:实现稍微复杂,单位时间内,不能多消费,感觉不太灵活。
4.令牌桶:
优点:可以解决“漏桶”不能灵活消费的问题,又能避免过渡消费,强烈推荐;
缺点:实现稍微复杂,其它缺点没有想到。
5.Redis + Lua 分布式限流:
优点:支持分布式限流,有效保护下游依赖的服务资源;
缺点:依赖 Redis,对边界没有很好处理,导致限流不能精准控制。
展开评论点赞