Linux 内核网络协议栈 ------sk_buff 结构体 以及 完全解释 (2.6.16)
在2.6.24之后这个结构体有了较大的变化,此处先说一说2.6.16版本的sk_buff,以及解释一些问题。 一、 先直观的看一下这个结构体~~~~~~~~~~~~~~~~~~~~~~在下面解释每个字段的意义~~~~~~~~~~~ struct sk_buff { /* Thes...
Linux 网络协议栈之内核锁(六)—— 互斥锁、读写锁 、 自旋锁和RCU锁简述
互斥锁 mutex: 在访问共享资源之前对进行加锁操作,在访问完成之后进行解锁操作。 加锁后,任何其他试图再次加锁的线程会被阻塞,直到当前进程解锁。 如果解锁时有一个以上的线程阻塞,那么所有该锁上的线程都被编程就绪状态, 第一个变为就绪状态的线程又执行加锁操作,那么其他的线程又会进入等待。 在这种方...
linux内核网络协议栈学习笔记:关于GRO/GSO/LRO/TSO等patch的分析和测试
TSO,全称是TCP Segmentation Offload,我们知道通常以太网的MTU是1500,除去TCP/IP的包头,TCP的MSS (Max Segment Size)大小是1460,通常情况下协议栈会对超过1460的TCP payload进行segmentation,保证生成的IP包不超...
linux 内核网络协议栈
Linux网络协议栈之数据包处理过程 1前言 本来是想翻译《The journey of a packet through the linux 2.4 network stack》这篇文章的。但在查阅相关的资料时,发现需要补充一些技术细节,才使得我这种菜鸟理解更加深刻,所以综合了上面两篇文档...
[置顶] 【Linux 内核网络协议栈源码剖析】系统网络协议栈初始化及数据传输通道建立过程
本文先大致阐述系统协议栈初始化过程,然后剖析数据包的接收和发送通道过程,在文章最后着重梳理其过程及通道结构区别。 源码版本:Linux kernel 1.2.13;工具:Source Insight 3.5 下图为网络协议栈初始化程序流程框架 本篇幅将根据上图来介绍系统网络协议栈的初始化过程。 先从...
【Linux 内核网络协议栈源码剖析】sendto 函数剖析
原文点击打开链接 前面介绍的函数基本上都是TCP协议的,如listen,connect,accept 等函数,这都是为可靠传输协议TCP定制的。对于另一个不可靠udp协议(通信系统其可靠性交由上层应用层负责),则主要由两个函数完成,sendto 和 recvfrom 函数。这里先介绍 send...
Zstack协议栈中CC2530协调器掉电重启后重新加入之前网络的方法
协调器断电重启之后重新加入之前网络; 在 workspace 中选中 CoordinatorEB,在Project -> Options -> c/c++ Compiler 中选中对话框 Preproce ,在Define symbols 中添加 NV_RESTORE;如下图 后编译下...
Linux内核--网络协议栈深入分析(二)--sk_buff的操作函数
本文分析基于Linux Kernel 3.2.1 原创作品,转载请标明http://blog.csdn.net/yming0221/article/details/7972647 更多请查看网络栈分析专栏http://blog.csdn.net/column/details/linux-kernel...
Linux内核--网络协议栈深入分析(四)--套接字内核初始化和创建过程
本文分析基于Linux Kernel 3.2.1 原创作品,转载请标明http://blog.csdn.net/yming0221/article/details/7984238 更多请查看专栏http://blog.csdn.net/column/details/linux-kernel-net....
【RL-TCPnet网络教程】第9章 RL-TCPnet网络协议栈移植(uCOS-III)
第9章 RL-TCPnet网络协议栈移植(uCOS-III)本章教程为大家讲解RL-TCPnet网络协议栈的uCOS-III操作系统移植方式,学习了第6章讲解的底层驱动接口函数之后,移植就比较容易了,主要是添加库文件、配置文件和驱动文件即可。另外,RL-TCPnet移植到uCOS-II...
学习Linux-4.12内核网路协议栈(1.8)——网络设备驱动模块的加载
1.了解PCI总线 说到网络设备驱动,就不得不说PCI总线,但是这个话题可深可浅,而且网上的资料也是一大堆(比如),但是对于我们来说,目前并不需要掌握很深,下面是网上找的两张最基本的PCI工作结构图,虽然PCI总线上可以挂接不同种类的设备,但我们这里只要了解网络设备就够了,所以我更偏好第二张图,它够...
Linux 内核网络协议栈 ------ 数据从接收到ip层
此处主要讲的是从数据来到,中断到最终数据包被处理的过程。 0:首先来介绍一下IO端口访问问题,内核提供了这样一组函数处理: // kernel/io.c中 >: inb( )、inw( )、inl( )函数 分别从I/O端口读取1、2或4个连续字节。 ...
Linux 内核网络协议栈 ------ 拥塞避免处理函数 tcp_reno_cong_avoid
慢启动和快速重传拥塞避免算法,函数tcp_reno_cong_avoid 在“慢开始”阶段,每收到一个ACK,cwnd++一次,那么一个RTT之后,cwnd就会加倍 拥塞避免阶段,其实就是在一个RTT时间内将cwnd++一次( 注意在不丢包的情况下 ) /* * TCP Reno conges...
linux内核网络协议栈学习笔记(3)
这篇主题是内核二层包的接受发送,先来看接收: 首先关注下几个状态值 __QUEUE_STATE_FROZEN:发送队列被锁 __QUEUE_STATE_XOFF:发送队列发送功能关闭 __LINK_STATE_START:设备是否开启 __LINK_STATE_PRESENT:设备是否存在,如驱动...
Linux 内核网络协议栈 ----- Linux 内核路由机制(一) (2.6.25)
内核的路由部分是是网络中重要部分,目前在Linux内核中默认的路由查找算法使用的是Hash查找,所以你会看到很多的数据结构是XXX_hash什么之类(例如fn_hash)。Linux内核从2.1开始就支持基于策略的路由,那么什么是基于策略的路由呢?我们一般的最基本的路由转发是考...
Linux内核网络协议栈5-socket地址绑定
一、socket绑定入口 1、示例代码 struct sockaddr_in server_address; server_address.sin_family = AF_INET; server_address.sin_addr.s_addr = inet_add...
C 语言网络编程 — 内核协议栈收包/发包流程
目录 文章目录 目录关键技术DMAsk_buff 结构体Net driver Rx/Tx Ring BufferBuffer Descriptor TableNAPI 收包机制网卡多队列内核协议栈收包/发包流程概览内核协议栈收包流程详解驱动程序层(数据链路层)VLAN 协议族Linux Bridg...
网络协议栈3:sock结构体
sock结构体是我们在网络编程中遇到的第一个庞大的结构体 struct sock { struct options *opt;/*IP选项缓存于此处*/ volatile unsigned long wmem_alloc;/*当前写缓冲区大小,该值不可大于系统规定的最大值*...
Linux内核--网络协议栈深入分析(二)--sk_buff的操作函数
本文分析基于Linux Kernel 3.2.1 原创作品,转载请标明http://blog.csdn.net/yming0221/article/details/7972647 更多请查看网络栈分析专栏http://blog.csdn.net/column/details/linux-kernel...
Linux内核--网络协议栈深入分析(三)--BSD socket和传输层sock
本文分析基于Linux Kernel 3.2.1 原创作品,转载请标明http://blog.csdn.net/yming0221/article/details/7979838 更多请查看专栏http://blog.csdn.net/column/details/linux-kernel-net....