一大波 Linux 学习笔记来啦

楼主是去年参加的校招,已经拿到 offer(baidu) 啦,现在分享一波学习笔记,希望能帮到做 C/C++/Linux 后台的同学,当然其他方向的同学有兴趣,也可以学习下啦!

希望同学们点进去后,最好能关注一下……^_^

然后,这里有一个学习交流群:610441700,喜欢 Linux 的同学可以加进来哟。

偷偷告诉你,群里有萌妹子 Linus 等你来调戏哦!

相关资源

一、保护模式

http://blog.csdn.net/column/details/15102.html

操作系统基本内功,是 Linux 内核学习的基础

二、多线程切换原理及其手工实现

http://blog.csdn.net/column/details/15084.html

让你在不掌握内核的情况下,快速学习到线程到底是怎么实现的。这一系列笔记教你从 0 到 1 写出一个用户级线程框架。

三、Unix/Linux 环境编程

博客专栏:http://blog.csdn.net/column/details/15043.html

文章目录:http://blog.csdn.net/q1007729991/article/details/52770103

耗时 7 个月完成的笔记,呕心沥血啊!每一篇都花了很大心血。

四、Unix/Linux 网络编程(正在更新)

博客专栏:http://blog.csdn.net/column/details/15153.html

文章目录:http://blog.csdn.net/q1007729991/article/details/69091877

学习网络编程的必备知识,现在正在更新 TCP 部分。


滑动窗口协议

在上一文中我们已经介绍了滑动窗口的基本概念,以及它的目的。本文我们就亲自动手实践一下。

1. 环境准备

Git 地址:https://git.oschina.net/ivan_allen/unp.git

  • 服务器:unp/protocol/tools/tcpserver/sink_serv.c,部署在 Linux 上。
  • 客户端:/home/allen/unp/protocol/tools/winclient/sink_client.cpp,部署在 Windows 上。

服务器之所以叫 sink_serv,是因为它就是个黑洞,它接收到数据后就直接扔了,即石沉大海了(实际上,代码中将接收到的数据打印在屏幕上了)。服务器每隔 500 毫秒从接收缓冲区读一次数据,一次最多读 1024 字节。

客户端每次向服务器发送 1024 字节的数据,本质上是向自己的发送缓冲区写入 1024 字节数据。连续发送 count 次,count 可以通过命令行参数指定。

2. 实验

  • 启动服务器

这里写图片描述 图1 服务器启动

从图 1 中我们看到服务器最后一个启动参数是 4096,它表示将接收缓冲区大小设置为 4096. 然而,内核在设置缓冲区大小的时候,会把缓冲区大小设置为这个值的 2 倍(具体原因请参考 man 手册),因此可以看到第 4 行打印 actual recvbufsize:8192.

  • 在 windows 上打开 OmniPeek 准备抓包,同时启动客户端
sink_client.exe 192.168.80.129 8000 8

参数 8 表示客户端连续发送 8 次数据,每次 1024 字节。

3. 抓包结果

这里写图片描述 图2 OmniPeek 抓包结果

这里写图片描述

图3 时序图

在时序图中,ACK n 表示对序号为 n 的 TCP 段进行确认。

这里写图片描述

图4 滑动窗口分析

图 4 中,我们用绿色表示发送方,蓝色表示接收方加送的信号。在一开始的时候,接收方通告了一个大小为 2920 大小的窗口,接下来发送方发送了 4 号报文,大小为 1024 B,然后接收方确认了 4 号报文,并通告了一个大小为 2920 大小的窗口。后面依此类推。

4. 总结

  • 掌握滑动窗口的工作原理

最后再次强调一下,学习滑动窗口,我们假设网络是理想的,不拥塞,只要发了数据,对方一定能收到。

#百度##C++工程师#
全部评论
233333333,牛逼,果断收藏了!
点赞 回复 分享
发布于 2017-12-29 10:50
请问楼主想了解函数调用时,栈帧怎么变化(esp,ebp指针),应该看哪本书,网上搜到的东西各式各样,想看点靠谱的
点赞 回复 分享
发布于 2017-04-12 18:14
谢谢 已收藏
点赞 回复 分享
发布于 2017-04-12 18:04
支持
点赞 回复 分享
发布于 2017-04-12 17:51
支持
点赞 回复 分享
发布于 2017-04-12 16:14

相关推荐

(黑话警告⚠️:hc=岗位数量, mt=导师, ld=直属领导, cr=代码审查)25年1月,我加入了字节某前端团队,并期望能在这里待到秋招并尝试转正。然而,就在上周,ld 找我1v1,告诉我,我的能力和团队预期不太匹配,并和我劝退。晴天霹雳吗?肯定是有的。那一刻,脑子里嗡嗡作响,各种情绪翻涌。但冷静下来想想,这几个月,自己在能掌控的范围内,确实有不少地方做得不尽如人意。所以,我想把这段不算成功的经历复盘一下,希望能给同样在努力转正的你提个醒,避开我踩过的坑。一、ld 的要求要注意刚进组时,ld就和我聊过转正的事。我当时发问:“咱们这儿有hc 吗?” ld没直接回答,只是说:“看能力,能力到了...
牛客上的彭于晏:过来人告诉你,入职后要做的第一件事儿不是说主动找活儿做,你要先学会融入团队,摸清ld的性格,投其所好。然后才是展示你的能力,能力上可以说技术或者业务,以业务能力为主,技术能力为辅。优先保证自己对业务需求的开发保证质量效率,然后再谈技术的问题,不要你觉得啥啥啥不行就想着整体优化了(发现校招生最喜欢干这事儿),我工作快5年了发现搞这种的最后都没啥好的结果,产出没有还引入新的bug,校招或者实习的水平看到的问题别人看不到嘛?为什么别人不去搞?浪费时间还没收益的事儿不要去做,技术上的能力体现在对于一个新需求,在不符合现在业务发展的架构设计上,你能拿出好的技术方案同时能考虑到后续业务发展逐渐将技术架构引入合理的架构,这是一个漫长的过程而不是一次性的
点赞 评论 收藏
分享
在看数据的傻狍子很忙碌:学生思维好重,而心很急,自己想想真的能直接做有难度的东西吗?任何错误都是需要人担责的,你实习生可以跑路,你的同事领导呢
点赞 评论 收藏
分享
05-30 13:04
已编辑
门头沟学院 算法工程师
智谱和米哈游都是ai大模型agent的业务钱的话还是米更多,几乎翻倍了,有没有老哥是两个公司其中一个的,能问问转正率咋样嘛,我问的hr回答都是做的好就可以转正暑期实习
码农索隆:选米哈游:短期高薪、敢承担风险、具备强创新能力,且愿押注游戏AI赛道。 选智谱:稳定性与行业通用能力积累,接受薪资差距以换取更稳妥的职业基础。
投递北京智谱华章科技等公司6个岗位 > 实习期间如何提升留用概率?
点赞 评论 收藏
分享
评论
18
256
分享

创作者周榜

更多
牛客网
牛客企业服务