![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
linux网络协议栈
文章平均质量分 51
TuxedoLinux
这个作者很懒,什么都没留下…
展开
-
vim复制粘贴常用命令
在Windows下我们习惯的操作,复制单个字符,复制单行多行,删除单行多行,在linux的vim中操作如下:G(shift+g+g):跳到文档尾g+g:跳转到文档首home键:光标移动到行首end键:光标移动到行尾yy:复制光标所在行的整行内容yw:复制光标所在单词的内容nyy:复制从光标开始向下的n行内容,n为复制的行数nyw:复制从光标所在字开始后的n个字,n为复制的字数p:粘贴,将复制的内容粘贴在光标所在的位置x(小x):删除光标所在位置的字符,同键盘上的del原创 2021-04-12 21:39:54 · 5757 阅读 · 0 评论 -
CPSR
N:当两个表示的有符号整数运算时,1表示运算结果为负数,0表示结果为正或零。 Z:1表示运算的结果为零,0表示运算的结果不为零。对于CMP指令,1表示进行比较的两个数大小相等。 C:下面分四种情况讨论C的设置方法: a)加法运算(包括比较指令CMN):当运算产生了进位时(无符号数溢出),C=1,否则C=0。 b)减法运算(包括比较指令CMP):当运算时产生了借位(无符号数溢出),C=0,否则C=1。 c)对于...原创 2021-04-11 17:03:17 · 1069 阅读 · 0 评论 -
svc
CM3 中共有3 条隔离指令,如表4.27 所列表4.27 隔离指令 指令名 功能描述 DMB 数据存储器隔离。DMB 指令保证: 仅当所有在它前面的存储器访问操作 都执行完毕后,才提交(commit)在它后面的存储器访问操作。 DSB 数据同步隔离。比 DMB 严格: 仅当所有在它前面的存储器访问操作 都执行完毕后,才执行在它后面的指令(亦即任何指令都要等待存储器访 ..原创 2021-04-10 15:56:11 · 170 阅读 · 0 评论 -
os_tcb
struct os_tcb { CPU_STK *StkPtr; /* 指针变量指向当前任务栈的栈顶*/ void *ExtPtr; /* 指针变量指向任务可定义的扩展区*/ CPU_STK *StkLimitPtr; /* 指针变量指向任务栈的栈深度位置*...原创 2021-03-24 10:18:17 · 580 阅读 · 0 评论 -
TCP滑动窗口协议
TCP滑动窗口协议。大家都知道,我们从一台机器向另外一台机器发送数据的时候,数据并不是一口气也不可能一口气传输给接收方。这个并不难理解,因为网络环境特别的复杂,有些地方快有些地方慢。所以,操作系统把这些数据写成连续的数据包,并且以一定的速率发给对方。一定的速率怎么理解呢?网络环境就像复杂的交通链路。就好比一个沙漏,中间可能有一个地方流量非常的小,这个最小的口径决定了网络传输的真正速度。我们要考虑到带宽缓冲区等因素,如果一下子发送所有的数据只会加大网络压力,造成丢包重试,轻则传输更慢,重则网络崩溃。因为TCP转载 2020-09-28 16:47:55 · 422 阅读 · 0 评论 -
2020-09-28
腾讯面试:我倒在了网络基础知识 TCP与UDP的区别 TCP的三次握手和四次挥手 [TCP三次握手 四次挥手](https://o-fawkes.blog.csdn.net/article/details/77413870) TCP流量控制 TCP拥塞控制 慢开始:乘法增加 拥塞避免:加法增大 快重传 快恢复 参考文章 腾讯面试:我倒在了网络基础知识腾讯面试十分注重网络基础知识,问的几乎都是一些细节知识,.转载 2020-09-28 07:18:54 · 277 阅读 · 0 评论 -
2020-09-03
在Linux内核,所有的网络设备都被抽象为一个接口处理,该接口提供了所有的网络操作net_device结构表示网络设备在内核中的情况,也就是网络设备接口。网络设备接口既包括软件虚拟的网络设备接口,如环路设备,也包括了网络硬件设备,如以太网卡。 Linux内核有一个dev_base的全局指针,指向一个设备链表,包括了系统内的所有网络设备。该设备链表每个节点是一个网络设备。 在net_device结构中提供了许多供系统访问和协议层调用的设备方法,包括初始化、打开关闭设备、数据包发送和接收等...转载 2020-09-03 19:44:02 · 126 阅读 · 0 评论 -
FILE 结构体的定义,inode
FILE 结构体的定义,inode ,软链接和硬链接的理解一、FILE结构体: C将每个文件简单地作为顺序字节流。每个文件用文件结束符结束,或者在特定字节数的地方结束,这个特定的字节数可以存储在系统维护的管理数据结构中。当打开文件时,就建立了和文件的关系。 在开始执行程序的时候,将自动打开3个文件和相关的流:标准输入流、标准输出流和标准错误。流提供了文件和程序的通信通道。例如,标准输入流使得程序可以从键盘读取数据,而标准输出流使得程序可以在屏幕上输出数据。打开一...转载 2020-08-26 17:11:56 · 1723 阅读 · 0 评论 -
verify_area
verify_area的作用是对当前进程的地址addr到addr+size这一段进程空间以页为单位执行写操作前的检测。若页面是只读的,则执行共享检验和复制页面操作原创 2020-08-26 13:58:07 · 460 阅读 · 0 评论 -
struct socket 结构详解
struct socket 结构详解 Socket数据结构网络协议CC++ 用户使用socket系统调用编写应用程序时,通过一个数字来表示一个socket,所有的操作都在该数字上进行,这个数字称为套接字描述符。在系统调用 的实现函数里,这个数字就会被映射成一个表示socket的结构体,该结构体保存了该socket的所有属性和数据。在内核的协议中实现中,关于表示 socket的结构体,是一个比较复杂的东西,下面一一介绍。 struct socket。 这是一个基本的BSD ...转载 2020-08-26 12:31:15 · 844 阅读 · 0 评论 -
struct rtable
int ip_rt_ioctl(unsigned int cmd, void *arg),这个函数会根据传入的cmd是SIOCADDRT,还是SIOCDELRT,来决定是创建一个路由表项,还是删除一个路由表项。对于创建路由表项,系统着会再调用rt_new来继续工作rt_new函数会对我们传入的参数进行判断,看是否符合创建路由表项的条件。首先,函数先从传入的rt.rt_dev来判断要创建路由表项的设备是否存在,如果不存在则退出,因为创建一个路由表项,其实就是要对路由表项结构体的各个成员进行赋值的,原创 2020-08-26 09:20:48 · 577 阅读 · 0 评论 -
struct inode 结构体详解
inode的定义inode译成中文就是索引节点,它用来存放档案及目录的基本信息,包含时间、档名、使用者及群组等。二、inode的分类及其具体涵义inode分为内存中的inode和文件系统中的inode,为了避免混淆,我们称前者为VFS inode, 而后者以EXT2为代表,我们称为Ext2 inode。下面分别对VFS inodee与Ext2 inode做一下简单的描述:1、VFS inode包含文件访问权限、属主、组、大小、生成时间、访问时间、最后修改时间等信息。它是linux管理文件系统的最基本转载 2020-08-24 14:30:25 · 4665 阅读 · 0 评论 -
rtable
对于创建路由表项,系统着会再调用rt_new来继续工作rt_new函数会对我们传入的参数进行判断,看是否符合创建路由表项的条件。首先,函数先从传入的rt.rt_dev来判断要创建路由表项的设备是否存在,如果不存在则退出,因为创建一个路由表项,其实就是要对路由表项结构体的各个成员进行赋值的,其结构体如下struct rtable{ struct rtable *rt_next;/*指向下一个rtable表项 */ unsigned long...原创 2020-08-21 11:44:17 · 650 阅读 · 0 评论 -
container_of
在linux 内核编程中,会经常见到一个宏函数container_of(ptr,type,member), 但是当你通过追踪源码时,像我们这样的一般人就会绝望了(这一堆都是什么呀? 函数还可以这样定义??? 怎么还有0呢??? 哎,算了,还是放弃吧。。。)。 这就是内核大佬们厉害的地方,随便两行代码就让我们怀疑人生,凡是都需要一个过程,慢慢来吧。 其实,原理很简单: 已知结构体type的成员member的地址ptr,求解结构体type的起始地址。 ...转载 2020-08-21 10:59:37 · 143 阅读 · 0 评论 -
套接字的秘密—socket与sock
那么如何把套接字和文件联系起来呢? 答案就是通过下面这张图。其中task_struct表示一个进程,files_struct中的fd_array[]表示该进程打开的所有描述符,对于套接字来说,与其他类型文件的区别就是最终f_op指向的是socket_file_ops。不过,可以看到,这里的socket_file_ops只有一些通用的操作,并没有send和recv。特有的操作通过socketcall()区分的。socket 和 sock终于到今天的主角了。实际上,对每一个新创建...转载 2020-08-20 18:57:55 · 792 阅读 · 0 评论 -
2020-08-20
struct socket 结构详解 Socket数据结构网络协议CC++ 用户使用socket系统调用编写应用程序时,通过一个数字来表示一个socket,所有的操作都在该数字上进行,这个数字称为套接字描述符。在系统调用 的实现函数里,这个数字就会被映射成一个表示socket的结构体,该结构体保存了该socket的所有属性和数据。在内核的协议中实现中,关于表示 socket的结构体,是一个比较复杂的东西,下面一一介绍。 struct socket。 这是一个基本的BSD ...转载 2020-08-20 16:22:56 · 275 阅读 · 0 评论 -
网络协议栈深入分析
网络接口层* 硬件监听物理介质,进行数据的接收,当接收的数据填满了缓冲区,硬件就会产生中断,中断产生后,系统会转向中断服务子程序。* 在中断服务子程序中,数据会从硬件的缓冲区复制到内核的空间缓冲区,并包装成一个数据结构(sk_buff),然后调用对驱动层的接口函数netif_rx()将数据包发送给链路层。该函数的实现在net/inet/dev.c中,(在整个网络栈实现中dev.c文件的作用重大,它衔接了其下的驱动层和其上的网络层,可以称它为链路层模块的实现...转载 2020-08-15 21:57:10 · 290 阅读 · 1 评论 -
2020-08-14
查看的的Windows路由表 路由表是的Windows的TCP / IP协议栈的一个重要的部分。但是,路由表不是的Windows操作系统向普通用户显示的东西。如果你要看到这个路由表,你必须要打开一个命令提示符对话框,然后输入“ROUTE PRINT”命令。然后,你将看:路由详解:第一条0.0.0.0 0.0.0.0 192.168.123.254 192.168.123.88 1缺省路由:意思就是说,当一个数据包的目的网段不在你的路由记录中,那么,你的路由器该把那个数据包发送到...转载 2020-08-14 14:43:24 · 157 阅读 · 0 评论 -
Linux网络协议栈(一)——Socket入门
https://www.cnblogs.com/hustcat/archive/2009/09/17/1568765.html3、套接字的实现套接字最先是在UNIX的BSD版本实现的,所以也叫做BSD套接字,它隐藏了各个协议之间的差异,并向上提供统一的接口。Linux中实现套接字的基本结构:3.1、BSD套接字3.1.1、核心数据结构为了实现BSD套接字,内核提供一个重要的数据结构struct socket,它的定义如下://BSD套接字(include/linux/net.h)st.转载 2020-08-07 23:08:19 · 384 阅读 · 0 评论 -
struct sk_buff结构体详解
struct sk_buff结构体详解struct sk_buff是linux网络系统中的核心结构体,linux网络中的所有数据包的封装以及解封装都是在这个结构体的基础上进行。<span style="color:#333333"><span style="color:black"><code class="language-cpp"><span style="color:#0077aa">struct</span...转载 2020-08-07 22:13:51 · 1045 阅读 · 0 评论 -
2020-08-07
原创作品,允许转载,转载时请务必以超链接形式标明文章原始出处、作者信息和本声明。否则将追究法律责任。http://weiguozhihui.blog.51cto.com/3060615/1585297在内核中为什么要有struct socket结构体呢? struct socket结构体的作用是什么? 下面这个图,我觉得可以回答以上两个问题。 由这个图可知,内核中的进程可以通过使用struct socket结构体来访问linux内核中的网络系统中的传输层、...转载 2020-08-07 21:14:39 · 331 阅读 · 0 评论 -
Struct Socket详细分析(转)
用户使用socket系统调用编写应用程序时,通过一个数字来表示一个socket,所有的操作都在该数字上进行,这个数字称为套接字描述符。在系统调用 的实现函数里,这个数字就会被映射成一个表示socket的结构体,该结构体保存了该socket的所有属性和数据。在内核的协议中实现中,关于表示 socket的结构体,是一个比较复杂的东西,下面一一介绍。 struct socket。 这是一个基本的BSD socket,我们调用socket系统调用创建的各种不同类型的socket,开始创建的都是它...转载 2020-08-07 20:53:59 · 549 阅读 · 0 评论