- 博客(8)
- 收藏
- 关注
原创 网络编程8:基于DPDK的TCP/IP原理实现
5.1、无VLAN标识MAC帧6Byte6Byte2Byte48Byte目标MAC地址源MAC地址类型数据FCSthernet II 类型以太网帧最小长度为64字节,最大长度为1518字节。5.1.1、目标MAC地址:目的MAC地址,IPV4为6字节,该字段确定帧的接收者。5.1.2、源MAC地址:源MAC地址,IPV4为6字节,该字段标识帧的发送者。5.1.3、类型:协议类型。用来标识数据字段内的高层协议。常用类型如下:0x0800:IP报文;0x0806:ARP报文。
2025-01-22 21:05:46
638
原创 网络编程7:基于DPDK用户态协议栈实现
DPDK(Data Plane Development Kit)是一组数据平面开发套件,主要用于加速网络数据包的处理。它提供了一系列库和驱动程序,帮助开发者在用户空间高效地处理网络数据包,绕过传统操作系统内核网络栈的一些性能瓶颈。
2025-01-11 13:42:09
791
1
原创 网络编程6:协程
1、协程的标准定义理解起来并不直观。互相协作的一段程序。互相协作的方式:当程序A运行某位置被阻塞了,就直接让出CPU等资源给其他程序,当A不再被阻塞就再恢复执行原来的流程。2、在网络 IO 中引入协程:2.1、提高程序的可读性和逻辑性协程的一个特点就是以同步的方式编写异步操作的代码。在没有协程时,异步网络IO往往需要使用复杂的回调函数链。当处理多个异步操作的嵌套(例如,先连接,然后多次接收数据)时,代码会变得非常复杂,回调函数层层嵌套,这就是所谓的 “回调地狱”。
2025-01-05 17:16:55
630
原创 网络编程5:KCP协议
当发送端收到ACK=3时, KCP知道2被跳过1次,收到ACK=4时,知道2被跳过了2次,此时认为2号丢失,不用等超时,直接重传2号包,大大改善了丢包时的传输速度。不管是TCP还是KCP计算RTO时都有最小RTO的限制,即便计算出来RTO为40ms,由于默认的RTO是100ms,协议只有在100ms后才能检测到丢包,默认的快速模式下为30ms,可以手动更改该值:kcp->rx_minrto=10。TCP丢包时会全部重传从丢的那个包开始以后的数据, KCP是选择性重传,只重传真正丢失的数据包。
2024-12-22 15:14:04
957
原创 网络编程4:PosixAPI和网络IO相关理论
简而言之,就是Linux操作系统为应用层封装好的统一的接口,用于网络编程、文件处理、进程管理等。
2024-12-15 21:54:45
703
1
原创 网络编程3:基于Reactor模式,简单实现(准)百万并发。
使用结构体:因为结构体是对IO的描述,所以只要有IO被创建,我们就必须创建一个结构体;结构体的id就是创建IO的fd,如果是listen创建的IO,只用设置_accept_callbak,如果是accept创建的IO,需要设置除_accept_callbak外的其他属性。使用数组:添加数据,数组是管理conn的,当创建一个conn,把IO的fd作为索引conn作为value保存在数组中;
2024-12-08 14:40:14
696
原创 网络编程2:Select、Poll、Epoll和Reactor。
优点缺点select跨平台、简单易用需要遍历、fd限制、IO效率低poll没有fd限制、fd不用每次重新设置需要遍历、IO效率低epoll高性能、高并发、事件驱动、支持多种fd类型解释:IO效率低:需要将监视的IO传递给内核,然后内核再返回给应用层。需要遍历:需要遍历整个监听的IO列表,导致性能随着IO数量的增加而线性下降。
2024-12-04 22:46:48
742
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人