
TCP/IP网络协议栈源码学习
文章平均质量分 92
Ch_ty
这个作者很懒,什么都没留下…
展开
-
Linux操作系统学习笔记(二十二)网络通信之发包
一. 简介 本文将分析网络协议栈发包的整个流程,根据顺序我们将依次介绍套接字文件系统、传输层、网络层、数据链路层、硬件设备层的相关发包处理流程,内容较多较复杂,主要掌握整个流程即可。二. 套接字文件系统 在前文中已经介绍了套接字socket和文件描述符fd以及对应的文件file的关系。在用户态使用网络编程的时候,我们可以采用write()和read()的方式通过文件描述符写入。套接字文件系统的操作定义如下,读对应的是sock_read_iter(),写对应的是sock_read_iter()s原创 2020-11-23 21:19:36 · 1436 阅读 · 0 评论 -
Linux操作系统学习笔记(二十一)网络通信之三次握手
一. 前言 三次握手的基本知识在前文中已说明,本文从源码入手来详细分析其实现原理。二. 基本过程和API 一个简单的TCP客户端/服务端模型如下所示,其中Socket()会创建套接字并返回描述符,在前文已经详细分析过。之后bind()会绑定本地的IP/Port二元组用以定位,而connect(), listen(), accept()则是本篇的重点所在,即通过三次握手完成连接的建立。三. 源码分析3.1 bind 首先来看看bind()函数。其API如下所示int bind(int原创 2020-10-24 21:47:00 · 656 阅读 · 0 评论 -
C++利用SIO_GET_INTERFACE_LIST查询网关
网关原创 2020-03-14 11:42:32 · 475 阅读 · 0 评论 -
TCP拥塞控制算法BBR源码分析
BBR是谷歌与2016年提出的TCP拥塞控制算法,在Linux4.9的patch中正式加入。该算法一出,瞬间引起了极大的轰动。在优快云上也有众多大佬对此进行分析讨论,褒贬不一。 本文首先对源码进行了分析,并在此基础上对BBR算法进行总结。1.源码分析/* Bottleneck Bandwidth and RTT (BBR) congestion control * ...原创 2018-04-19 23:38:34 · 9667 阅读 · 3 评论 -
网络协议栈学习之socket, sock_common, sock, 和 sk_buff
一直很好奇socket是如何实现的,底层的数据结构又是如何,因此在这里对socket的数据结构进行分析原创 2018-06-12 22:47:44 · 2886 阅读 · 0 评论 -
debug心得(持续更新)
本文持续更新,记录debug的岁月里的心(keng)得(die)。 1. 写完代码记得多看几次,避免手抖导致的错误。编译器可以检测出一些明显的错误,但是不能检测出一些问题,比如a[recv] = x;a[send] = y;写成了:a[recv] = x;a[recv] = y;或者a[recv] = x;a[recv] = x;不仔细看,在一大堆代码里有...原创 2018-08-17 21:58:23 · 1252 阅读 · 2 评论 -
libutp 开源库使用心得
1. 前言 libutp是bittorrent使用的可靠udp库,开源代码在此。该可靠udp最大的特色在于带宽避让:不同于TCP以及其他可靠UDP尽可能抢占带宽资源。因此很适宜使用在下载场景之中以保证其他网络通信流畅。 本文不涉及libutp的源码分析,仅仅对于该库的使用谈一点点经验。2. 使用经验libutp的文件数量不多,编译的时候可以单独成库编译也可以和自己的项目放在一起编译。...原创 2018-10-30 22:44:16 · 880 阅读 · 0 评论 -
浅谈TCP的发展和UDP的优化(1)
一. 前言 UDP和TCP是我们常用的网络通信协议,两者的区别导致了其不同的应用场景,两者的优缺点互补的特点导致了二者互相借鉴优化,从而出现了可靠UDP和TCP的优化算法。本文简单的记录个人在学习UDP/TCP的过程中的一些感想,并简单的做一个知识总结,不完善、错误的地方会逐步改进不断更新。二.UDP和TCP的优缺点 说到UDP和TCP的优缺点,大部分人都能给出答案(这也是面试常见的一个...原创 2019-03-17 17:10:59 · 1103 阅读 · 0 评论