网络编程
文章平均质量分 76
网络编程
錦鈊銀
Linux/Zynq嵌入式开发
展开
-
KCP 协议与源码分析(二)
原文链接:KCP 协议与源码分析(二) KCP 协议与源码分析(二) 核心函数函数ikcp_send函数ikcp_recv函数ikcp_input函数ikcp_flush参考 核心函数 KCP协议的几个核心函数为ikcp_create, ikcp_send,ikcp_recv,ikcp_update,ikcp_input,ikcp_flush,这些函数可以构造整个数据收发的流程。其中ikcp_create比较简单,主要为创建KCP对象,ikcp_update主要是根据内部刷新事件转载 2021-09-08 14:40:45 · 1028 阅读 · 0 评论 -
KCP 协议与源码分析(一)
原文链接:KCP 协议与源码分析(一) 简介 这部分摘自https://github.com/skywind3000/kcp,这是源码的官方网站,有一些使用介绍,其他各种衍生版本,在实际中的使用情况以及一些测试比较分析。 KCP是一个快速可靠协议,能以比 TCP浪费10%-20%的带宽的代价,换取平均延迟降低 30%-40%,且最大延迟降低三倍的传输效果。纯算法实现,并不负责底层协议(如UDP)的收发,需要使用者自己定义下层数据包的发送方式,以 callback的方式提供给 KCP。 连时钟转载 2021-09-08 11:01:25 · 557 阅读 · 0 评论 -
Linux网络编程:MAC首部 IP首部 TCP首部介绍
原文链接:MAC首部 IP首部 TCP首部介绍 文章目录 0. 前言1. 背景介绍3. MAC首部4. IP首部5. TCP首部附录涉及但未介绍内容 参考文章 0. 前言 因为原生套接字编程,需要了解数据传输过程中的MAC帧首部,IP数据包首部,TCP首部。了解结构是基本,为了直观显示,本文采用抓包的方式逐层验证这些首部结构。同时,列出这些首部结构在系统中C语言结构体的实现。 抓包工具采用:tcpdump + wireshark 工具使用方法:超详细的网络抓包神器 tcpdu转载 2021-06-17 18:14:04 · 336 阅读 · 0 评论 -
Linux网络编程:原始套接字--包过滤器BPF
目录参考文章一、BPF介绍二、BPF的结构三、BPF Socket 实例三、BPF Code 生成方法参考文章linux网络和BPFlinux 下的 包过滤器 BPFLinux bpf 3.1、Berkeley Packet Filter (BPF) (Kernel Document)一、BPF介绍BPF(Berkeley Packet Filter)伯克利包过滤器。 BPF允许用户空间程序将一个过滤(filter)附加到任何的套接字(socket)上面用来允许或不允许某些类型的数据通过原创 2021-06-17 17:08:03 · 2841 阅读 · 0 评论 -
Linux网络编程:libpcap 移植及使用
目录参考文章:一、libpcap库下载二、libpcap库交叉编译安装三、应用程序交叉编译四、Ubuntu系统安装 libpcap(非交叉编译)五、libpcap使用六、开发板上测试参考文章:Linux下移植libpcap抓包库到arm平台Linux 网络编程—— libpcap 详解libpcap使用Libpcap库编程指南–数据包捕获linux下网络监听与发送数据包的方法(即libpcap、libnet两种类库的使用方法)一、libpcap库下载http://www.tcpdump原创 2021-06-16 17:57:48 · 2598 阅读 · 0 评论 -
Linux网络编程:libevent 移植及使用
文章目录参考文章一、libevent库下载前言一、pandas是什么?二、使用步骤1.引入库2.读入数据总结参考文章一、libevent库下载https://libevent.orghttps://github.com/libevent/libevent/releases前言提示:这里可以添加本文要记录的大概内容:例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。提示:以下是本篇文章正文内容,下面案例可供参原创 2021-06-16 11:18:07 · 498 阅读 · 0 评论 -
Linux网络编程:libnet 移植及使用
目录参考文章:一、libnet库下载二、libnet编译参考文章:libnet库下载、编译、示例、文档libnet下载和交叉编译Linux 网络编程—— libnet 使用指南一、libnet库下载https://github.com/sam-github/libnet二、libnet编译配置交叉编译环境普通用户和root用户下都需要配置从 GitHub下载最新版本 libnet-master.tar.gz,解压缩: tar xf libnet-master.tar.g原创 2021-06-11 18:32:29 · 1714 阅读 · 1 评论 -
Linux网络编程:原始套接字的魔力【上】
原文链接:Linux网络编程:原始套接字的魔力【上】基于原始套接字编程 在开发面向连接的TCP和面向无连接的UDP程序时,我们所关心的核心问题在于数据收发层面,数据的传输特性由TCP或UDP来保证: 也就是说,对于TCP或UDP的程序开发,焦点在Data字段,我们没法直接对TCP或UDP头部字段进行赤裸裸的修改,当然还有IP头。换句话说,我们对它们头部操作的空间非常受限,只能使用它们已经开放给转载 2021-06-10 18:13:20 · 181 阅读 · 0 评论 -
Linux网络编程:原始套接字的魔力【续】
原文链接:Linux网络编程:原始套接字的魔力【续】如何从链路层直接发送数据帧 本来以为这部分都弄完了,结果有朋友反映说看了半天还是没看到如何从链路层直接发送数据。因为上一篇里面提到的是从链路层“收发”数据,结果只“收”完,忘了“发”,实在抱歉,所以就有这篇续出来了。 上一节我们主要研究了如何从链路层直接接收数据帧,可以通过bind函数来将原始套接字绑定到本地一个接口上,然后该套接字就只接收从该接口转载 2021-06-10 17:34:24 · 356 阅读 · 0 评论 -
Linux网络编程:原始套接字的魔力【下】
原文链接:Linux网络编程:原始套接字的魔力【下】 Linux网络编程:原始套接字的魔力【下】可以接收链路层MAC帧的原始套接字 前面我们介绍过了通过原始套接字socket(AF_INET, SOCK_RAW, protocol)我们可以直接实现自行构造整个IP报文,然后对其收发。提醒一点,在用这种方式构造原始IP报文时,第三个参数protocol不能用IPPROTO_IP,这样会让系统疑惑,不知道该用什么协议来伺候你了。转载 2021-06-10 15:51:18 · 238 阅读 · 0 评论