首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Linux内核网络udp数据包发送(一)

本系列文章1-4,来源于陈莉君老师公众号“Linux内核之旅” 1....前言 本文首先从宏观上概述了数据包发送的流程,接着分析了协议层注册进内核以及被socket的过程,最后介绍了通过 socket 发送网络数据的过程。 2....数据包发送宏观视角 从宏观上看,一个数据包从用户程序到达硬件网卡的整个过程如下: 使用系统调用(如 sendto,sendmsg 等)写数据 数据穿过socket 子系统,进入socket 协议族(protocol...(dest)); 该系统调用穿过Linux 系统调用(system call)层,最后到达net/socket.c中的这个函数: /* * Send a datagram to a given...总结 了解Linux内核网络数据包发送的详细过程,有助于我们进行网络监控和调优。本文只分析了协议层的注册和通过 socket 发送数据的过程,数据在传输层和网络层的详细发送过程将在下一篇文章中分析。

4.2K51
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Linux内核网络UDP数据包发送(四)——Linux netdevice 子系统

    前言 在继续分析 dev_queue_xmit 发送数据包之前,我们需要了解以下重要概念。...Linux 支持流量控制(traffic control)的功能,此功能允许系统管理员控制数据包如何从机器发送出去。流量控制系统包含几组不同的 queue system,每种有不同的排队特征。...可以将 qdisc 视为调度程序, qdisc 决定数据包发送时间和方式。 Linux 上每个 device 都有一个与之关联的默认 qdisc。...2.2.1 Transmit Packet Steering (XPS) 发送数据包控制(XPS)是一项功能,允许系统管理员配置哪些 CPU 可以处理网卡的哪些发送 队列。...如果标志已禁用,将强制对 skb 进行引用计数 调用 qdisc_bstats_update 更新 qdisc 发送的字节数和包数统计 调用 sch_direct_xmit 用于发送数据包

    3.4K11

    数据包发送与嗅探

    数据包发送与嗅探 0.概述 这几日数据包发送与嗅探方法与实现总结。...其中, libnet提供的接口函数主要实现和封装了数据包的构造和发送过程。 libpcap提供的接口函数主要实现和封装了与数据包截获有关的过程。...原始套接字(raw socket)是一种网络套接字,允许直接发送/接收IP协议数据包而不需要任何传输层协议格式。..., SOCK_RAW, htons(ETH_P_XXX)) // 发送、接收数据链路层数据帧(目前只有Linux支持) socket(AF_INET, SOCK_PACKET, htons(ETH_P_XXX...如果要打开混杂模式,那么网卡必须也要打开混杂模式,可以使用如下的命令打开eth0混杂模式: ifconfig eth0 promisc 第四个参数指定需要等待的毫秒数,超过这个数值后,第3步获取数据包的这几个函数就会立即返回

    2.6K30

    Linux BSP实战课(网络篇):数据包发送过程

    本文将介绍在Linux系统中,以一个UDP包的接收过程作为示例,介绍数据包是如何一步一步从应用程序到网卡并最终发送出去的。 socket层 socket(...)...ip_route_output_flow:该函数会根据路由表和目的IP,找到这个数据包应该从哪个设备发送出去,如果该socket没有绑定源IP,该函数还会根据路由表找到一个最合适的源IP给它。...通知网卡发送数据包 网卡发送完成后发送中断给CPU 收到中断后进行skb的清理工作 在网卡驱动发送数据包过程中,会有一些地方需要和netdevice子系统打交道,比如网卡的队列满了,需要告诉上层不要再发了...从sendto函数的帮助文件里面看到这样一句话:(Normally, this does not occur in Linux....满的时候,会给上层调用返回NETDEV_TX_BUSY packet taps(AF_PACKET): 当第一次发送数据包和重试发送数据包时,都会经过这里。

    55520

    Linux内核网络UDP数据包发送(三)——IP协议层分析

    前言 Linux内核网络 UDP 协议层通过调用 ip_send_skb 将 skb 交给 IP 协议层,本文通过分析内核 IP 协议层的关键函数来分享内核数据包发送在 IP 协议层的处理,并分享了监控...如果 nf_hook 返回 1,则表示允许数据包通过,并且调用者应该自己发送数据包。...出于讨论目的,我们假设 nf_hook 返回 1,表示调用者(在这种情况下是 IP 协议层)应该自己发送数据包。 3.2 目的(路由)缓存 dst 代码在 Linux 内核中实现协议无关的目标缓存。...总结 Linux内核网络数据包发送时,主要用到 ip_send_skb、 ip_local_out、ip_output、ip_finish_output、ip_finish_output2、 dst_neigh_output...等函数,本文通过分析这些函数来分享Linux内核数据包发送在 IP 层的处理,并对 IP 层进行了数据监控。

    3.2K21

    Linux内核网络udp数据包发送(二)——UDP协议层分析

    前言 本文分享了Linux内核网络数据包发送在UDP协议层的处理,主要分析了udp_sendmsg和udp_send_skb函数,并分享了UDP层的数据统计和监控以及socket发送队列大小的调优。...setsockopt 可以在socket 级别设置发送包的 IP_TTL和 IP_TOS。而辅助消息允许在每个数据包级别设置 TTL 和 TOS 值。...Linux 内核会使用一个数组将 TOS 转换为优先级,后者会影响数据包如何以及何时从 qdisc 中发送出去。...接下来看看如何在 Linux 内核中监视和调优 UDP 协议层。 4....总结 本文重点分析了数据包在传输层(UDP协议)的发送过程,并进行了监控和调优,后面数据包将到达 IP 协议层,下次再分享,感谢阅读。

    5.8K51

    Windows下底层数据包发送实战

    1、简介   所谓“底层数据包”指的是在“运行”于数据链路层的数据包,简单的说就是“以太网帧”,而我们常用的Socket只能发送“运行”在传输层的TCP、UDP等包,这些传输层数据包已经能满足绝大部分需求...,但是有些时候还是需要发送底层数据包的(例如SYN扫描),那么如何发送呢?   ...它可以提供监听底层数据包发送底层数据包的功能,但要注意,Winpcap不能提供底层包过滤等功能,所以不能用它做防火墙。Winpcap的使用非常简单,用它发送一个以太网帧的代码如下: ?...至于发送数据包,用户态程序调用Winpcap的SDK函数,这些函数调用dll中的方法,dll再用API和NPF通信,NPF是很最低层的驱动了,但它并不负责直接收发数据,NPF再调用更底层的网卡驱动实现数据包发送...Step3 [安装 & 运行]   首先启动Windows的测试模式,以管理员权限执行命令”bcdedit /set testsigning on“,重启后桌面右下角出现”测试模式“标签,命令中的on改成

    3.1K20

    CC++ 运用Npcap发送UDP数据包

    Npcap的主要特点和概述: 原始套接字支持: Npcap 允许用户通过原始套接字在网络层捕获和发送数据包。这使得用户能够进行更底层的网络活动监控和分析。...UDP 数据包结构: UDP 数据包由报头和数据两部分组成。 报头(Header): 源端口号(16 位): 指定发送端口。 目标端口号(16 位): 指定接收端口。...创建UDP数据包函数 创建一个UDP数据包,该代码是一个简单的网络编程示例,用于创建和发送UDP数据包。其中,UDP数据包的内容和头部信息都可以根据实际需求进行定制。...返回数据包: 函数执行完毕后,生成的UDP数据包保存在FinalPacket中,可以将其用于发送到网络。 需要注意的是,这段代码中的硬编码可能需要根据实际需求进行修改,例如协议类型、标识、生存时间等。...发送UDP数据包 代码演示了如何打开网卡,生成UDP数据包,并通过pcap_sendpacket函数发送数据包到网络。需要注意的是,数据包的内容和地址是硬编码的,实际应用中可能需要根据需要进行更改。

    94410

    Linux中使用tcpdump命令捕获与分析数据包详解

    前言 tcpdump 是一个有名的命令数据包分析工具。我们可以使用 tcpdump 命令捕获实时 TCP/IP 数据包,这些数据包也可以保存到文件中。...之后这些捕获的数据包可以通过 tcpdump 命令进行分析。tcpdump 命令在网络层面进行故障排除时变得非常方便。...tcpdump 在大多数 Linux 发行版中都能用,对于基于 Debian 的Linux,可以使用 apt 命令安装它。...# apt install tcpdump -y 在基于 RPM 的 Linux 操作系统上,可以使用下面的 yum 命令安装 tcpdump。...示例:1)从特定接口捕获数据包 当我们在没用任何选项的情况下运行 tcpdump 命令时,它将捕获所有接口上的数据包,因此,要从特定接口捕获数据包,请使用选项 -i,后跟接口名称。

    4.2K30

    linux抓取snmp trap告警命令,linux snmptrap的发送与接收

    linux snmptrap的发送与接收 由于需要管理服务器的一些参数,比如CPU使用率,IOwait之类的指标,管理方通过snmpwalk进行五分钟一次对受管服务器的轮询。.../$file”); while() { print HANDOUT “$_”; } 然后输入命令Linux代码 snmptrapd -c /etc/snmp/snmptrapd.conf 将此配置文件设置为默认配置文件...,并启动snmptrapd进程: Linux代码 # snmptrapd -d -f -Lo 在受管方,使用命令Linux代码 snmptrap -v 2c -c public 10.0.0.214...:162 “” .1.3.6.1.4.1.2021.251.1 sysLocation.0 s “this is test” 而后在管理方会接收到如下信息: Linux代码 Received 98 bytes...snmpTrapOID.0 = OID: UCD-SNMP-MIB::ucdStart SNMPv2-MIB::sysLocation.0 = STRING: this is test 至此,最简单的snmptrap的发送与接收就完成了

    3.5K20

    Linux处理数据包过程

    当向外界主机发送数据时,在它从网卡流入后需要对它做路由决策,根据其目标决定是流入本机数据还是转发给其他主机,如果是流入本机的数据,则数据会从内核空间进入用户空间(被应用程序接收、处理)。...但Linux主机默认未开启ip_forward功能,这使得数据包无法转发而被丢弃。...Linux主机和路由器不同,路由器本身就是为了转发数据包,所以路由器内部默认就能在不同网卡间转发数据包,而Linux主机默认则不能转发。...如果Linux主机有多块网卡,如果不开启数据包转发功能,则这些网卡之间是无法互通的。...例如eth0是172.16.10.0/24网段,而eth1是192.168.100.0/24网段,到达该Linux主机的数据包无法从eth0交给eth1或者从eth1交给eth0,除非Linux主机开启了数据包转发功能

    1.9K40

    FTP协议数据包命令含义详解

    本节我们掌握FTP协议的数据包格式,为编码实现奠定基础。我们先看看控制命令的格式。当用户端通过控制命令通道想服务器端发送数据后,服务器端一定会产生回复。...数据包格式的组成特点是数字与文本信息相混合。服务器返回给客户端的数据包中一定包含回复码,该数值用来通知客户端数据包的格式和内容。...不同的服务器在回复的数据包中,同样目的的数据包回复码一定相同,但是字符串内容可能会有所不同,因此对数据包的解读必须根据回复码进行。...还有不少命令我们没有标明,下一节我们通过抓包的方式来查看ftp数据包格式以及详细的连接沟通以及数据传输过程。 更多详细内容和视频讲解请点击阅读原文

    1.2K20

    linux命令讲解大全】075. 网络数据包分析工具ngrep及其应用

    ngrep 方便的数据包匹配和显示工具 补充说明 ngrep 命令是 grep 命令的网络版,它提供了更多的 grep 特性,用于搜索指定的数据包。...安装 ngrep 命令的下载地址:http://ngrep.sourceforge.net/ libpcap 的下载地址:http://www.tcpdump.org/ 首先使用以下命令通过 yum 安装.../configure make && make install ngrep 的安装可以通过执行以下三个命令完成:configure、make、make install。.../configure --with-pcap-includes=/usr/local/include/pcap 安装完成后,输入 ngrep 命令来验证安装是否成功。...-M # 仅进行单行匹配 -I # 从文件中读取数据进行匹配 -O # 将匹配的数据保存到文件 -n # 仅捕获指定数目的数据包进行查看 -A # 匹配到数据包后dump随后的指定数目的数据包 -s

    17010

    Linux实用技巧——mail发送邮件命令以及中文乱码解决

    0 前言及准备 最近使用linux监控数据统计状况以及警报,最常使用的就是mail命令。...准备:只需简单注册个国内的邮件服务商邮箱,如163、gmail等,也可以使用公司邮箱,需要安装mailx工具,mailx是一个小型的邮件发送程序。...1 mailx安装及配置 1.1 安装 运行如下命令: [root@congying ~]#yum install mailx 1.2 编辑配置文件 运行如下命令: [root@congying ~]...有些邮箱填的是授权码 set smtp-auth-password=xxx # SMTP的认证方式,默认是login,也可以改成CRAM-MD5或PLAIN方式 set smtp-auth=login 2 发送邮件...示例: [root@congying ~]# mail -s "Test_Subject" cymobius@163.com 2.2 有正文邮件 使用现有文件(如html、txt等)作为正文文件 命令如下

    2.6K20
    领券