IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 网络协议 -> 构建用户态网络协议栈(1) -> 正文阅读

[网络协议]构建用户态网络协议栈(1)

网络数据到达如果经过内核怎么处理?如果不经过内核怎么处理?用户态协议栈?napi?netmap?dpdk?ovs-dpdk?openflow?sdn?f-stack?nfv?fd.io?

传统网络设备驱动包流向和处理流程:

网络数据包->网卡->网卡dma拷贝数据到内核缓冲区? ? ? ->? ? ?网卡发送中断给内核 或者内核自己轮询(napi)? ?->? ? cpu接管? ?->? ? 网卡驱动处理解析数据包? ?->? ? 内核协议栈解析ip包? ?->? ? 内核协议栈解析tcp包? ?->? ? 修改对应fd可读,加入epoll就绪列表,通知对应的进程? ?->? ?切换到用户态,对应的进程从内核将数据拷贝到应用层缓冲区。

保证可靠和qos(服务质量)可能需要的特性,以tcp为例:

物理层:调制解调器处理模电数电的转换,什么都不能保证,解调后数据就是二进制流;

数据链理层:封装成帧,透明传输,差错检测。到这一层已经可以将数据流拆成包了(头尾都有标志符),并且使用crc差错校验,但是校验失败就丢包,没有重传机制可靠性还是很弱。

网络(ip)层:头部已经可以区分不同的ip地址的包,并且可以支持ip分片和重组,有首部检验和能一定程度保证首部的正确性(只是头部16位相加的反码,校验功能很弱),生存时间ttl一定程度保证无效包的清出,总长度标志了包体界限,可记录上层协议类型。但是和数据链路层相比并没有加强多少可靠性。(包头长 = 固定20字节 + 可选字段,一般为4的倍数)

传输层udp:在ip基础上只增加了两端的端口,包长和整包的校验和(和ip校验和类似,头部和数据都校验)。整包的校验和能一定程度保证包的数据的可靠性,但是仅此而已。(包头长 =固定8字节)

传输层tcp:面向连接,可靠交付,点对点,全双工通信,面向字节流。到这一层保证了可靠性的同时能保证qos。两端端口实现ip分用;序号保证字节流的有序;确认号期望下一个报文段的序号;数据偏移记录首部长度;6位控制位可以实现urg,ack,数据传输的优先级psh,复位rst,建立连接的syn,中止连接的fin;窗口大小告诉对方发送大小限制;校验和和udp一样;紧急指针记录紧急数据的字节数,窗口为零仍然可使用;可选选项最多加20字节,可选mss数据段最大长度,窗口扩大,时间戳,sack。(包头长 =固定20字节+4n,总共最多40字节)

tcp保证可靠性的机制:可靠连接的建立,连接的释放,滑动窗口,超时重传,选择确认sack,时间戳。定时器(建立连接定时器,重传定时器,延迟应答定时器,坚持定时器,保活定时器,FIN_WAIT_2定时器,TIME_WAIT定时器)。

tcp保证服务质量qos:利用滑动窗口实现流量控制,拥塞控制(新算法bbr)。

  网络协议 最新文章
使用Easyswoole 搭建简单的Websoket服务
常见的数据通信方式有哪些?
Openssl 1024bit RSA算法---公私钥获取和处
HTTPS协议的密钥交换流程
《小白WEB安全入门》03. 漏洞篇
HttpRunner4.x 安装与使用
2021-07-04
手写RPC学习笔记
K8S高可用版本部署
mySQL计算IP地址范围
上一篇文章      下一篇文章      查看所有文章
加:2021-12-15 18:40:09  更:2021-12-15 18:40:37 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 11:35:20-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码