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

Linux 是如何收发网络包的?

之前写过一篇:你不好奇 Linux 是如何收发网络包的? 文章。 当时有些地方写的比较笼统,然后我「把 Linux 接收+发送网络包的流程」这部分内容完善了下,现在重新分享给大家。 发车发车!...事实上,我们比较常见,也比较实用的是四层模型,即 TCP/IP 网络模型,Linux 系统正是按照这套网络模型来实现网络协议栈的。...Linux 发送网络包的流程 如上图的右半部分,发送网络包的流程正好和接收流程相反。...TCP/IP 模型,Linux 网络协议栈就是按照了该模型来实现的。...---- 参考资料: 《深入理解Linux网络Linux 网络数据接收流程(TCP)- NAPI:https://wenfh2020.com/2021/12/29/kernel-tcp-receive

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

    Linux 网络收发包流程及 Netfilter 框架浅析

    2.4 收发包整体框架 这里我们从客户端和服务端整体框架层面来看数据收发流程: 用户态(User Space)程序 Client 向另一台主机上的 Server 发送数据,需要通过调用内核态(Kernel...网络层(IPv4)收发包流程 数据包在实际现网传输过程中,会经过各类交换机,路由器的转发处理,在这个过程中,路由器一般只处理到网络层。...下图为基于 Linux 2.6.38 版本内核的网络层相关接口在数据包收发过程的调用逻辑图: 注: 1)不同版本内核在函数名上可能存在一定差异,但整体调用逻辑基本不变; 2)该图仅展示 IPv4 的处理流程...*函数将数据包交由 Linux 内核中虚拟网络设备做进一步处理,从这里数据包即离开网络层进入到下一层; 4....扩展 这篇文章仅仅对 Linux 内核中网络层数据处理流程以及 Netfilter 基本原理进行简单介绍,在此基础上,关于 Linux 内核网络协议栈的其他技术还包括: Linux TC(Traffic

    5.6K32

    Linux 网卡数据收发过程分析

    所以,当网卡接收到数据包后,要通知 Linux 内核有数据需要处理。另外,网卡驱动应该提供让 Linux 内核把数据把发送出去的接口。...net_device 结构是 Linux 为了适配不同类型的网卡设备而抽象出来的对象,不同的网卡驱动只需要按 Linux 的规范来填充 net_device 结构的各个成员变量,Linux 内核就能够识别出网卡...不过本文主要分析网卡设备收发数据的实现,所以不会分析 net_device 结构的所有成员。...下面主要列出收发数据相关的成员,如下: struct net_device { char name[IFNAMSIZ]; // 设备名字 ......当网卡从网络接收到数据包后,需要产生一个中断来通知 Linux 内核有数据包需要处理,而 irq 就是网卡驱动注册到内核中断服务的中断号。

    2.4K30

    linux收发邮件_python邮件发送

    linux邮件传输一般用在特定的网络环境下,记住,只要有网络,就能办事; 闲话少扯,直接上干货: 步骤1 邮箱设置开启STMP服务,开启后会收到STMP授权码。...步骤2 linux命令:/etc/mail.rc配置邮件发送参数 将以下数据加到最下面(如下图): #邮箱 set from=843903492@qq.com #默认smtp发送,stmp发送需要在邮箱内配置...@qq.com #这里填的是邮箱授权码(我的授权码就不在这现眼了) set smtp-auth-password=xxxxxxxxxxxxxx set smtp-auth=login 步骤3 linux...注意:命令之间需要加空格(如下图),主要使用的就是发送内容和文件,其他相关linux Mail函数的方法不再赘述。 发送成功后: 内容位置: 有问题的兄弟们下方留言,我及时回复。

    3.8K30

    Linux 命令行中收发 Gmail 邮件

    我喜欢在 Linux 终端上读写电子邮件的便捷,因此我是 Mutt 这个轻量简洁的电子邮件客户端的忠实用户。对于电子邮件服务来说,不同的系统配置和网络接入并不会造成什么影响。...这个客户端通常隐藏在我 Linux 终端的 某个标签页或者某个终端复用器的面板 上,需要用的时候随时可以调出来,不需要使用的时候放到后台,就不需要在桌面上一直放置一个电子邮件客户端的应用程序。...安装 Mutt 在 Linux 系统上,一般可以直接从发行版提供的软件库中安装 Mutt,另外需要在家目录中创建一个 .mutt 目录以存放配置文件: $ sudo dnf install mutt $...为 Gmail 设置双因素身份验证(2FA) Google 希望用户通过 Gmail 网站收发电子邮件,因此当你在 Gmail 网站以外操作电子邮件时,实际上是被 Google 作为“开发者”看待(...和 .bashrc、.zshrc、.emacs 这些配置文件一样,网络上有很多优秀的 .muttrc 配置文件可供参照。

    2.9K20

    Linux-485收发切换延迟的解决方法

    通常由CPU引出三根管脚:两个UART管脚(记作PIN_RX、PIN_TX)和一个485收发方向控制管脚(记作PIN_DIR)。...但在Linux应用程序编写中,这个方向切换存在延迟问题。...解决思路 关于收发方向延迟问题,解决思路有如下几种: 由硬件自动控制收发方向的切换,这种方式不需要软件参与,硬件实现也很简单,推荐使用 尝试将操作系统HZ由默认的100改为1000,经测,tcdrain...知识储备 解决此问题,需要有如下知识储备: 了解485通信原理 了解Linux终端设备驱动架构,搞清楚板上串口对应的实际驱动源文件 掌握Linux设备驱动中的中断处理机制:顶半部、底半部(tasklet...在Linux支持的多种软中断中,HI_SOFTIRQ具有最高的优先级。

    7.7K30

    利用 sar 命令观测网络接口的收发包速率

    更多好文请关注↑ 命令简介 sar 命令是 System Activity Reporter 的简称,它是 Linux 系统中用于监控和报告系统活动的工具,包括CPU使用率、内存使用情况、磁盘I/O、网络活动等...命令示例 使用 sar 命令观测网络接口的收发包速率,你可以通过指定 -n 参数配合相应的子选项来实现。要专注于网络接口的收发包速率,特别是每秒钟的收发包数,可以使用 -n DEV 选项。...以下是一个基本的命令示例,用于监视指定网络接口(例如 eth0 和 lo)的实时收发包速率,每隔1秒输出一次,共输出5次: sar -n DEV --iface=eth0,lo 1 5 测试截图:...这里,--iface=eth0,lo 指定了要监控的网络接口为 eth0 和 lo(回环接口),即同时监控这两个接口的网络活动(接口名由逗号分隔)。...IFACE:网络接口名称,这里会显示为 eth0 或 lo,对应监控的网络设备。 rxpck/s:每秒接收的数据包数量。 txpck/s:每秒发送的数据包数量。

    24200

    协议栈——收发数据(拼接网络包,自动重发,滑动窗口机制)

    ~利用syn拼接网络包ack确认网络包完整 上面说过网络包会拆分,那么服务器是怎么知道该怎么拼接这些网络包还原成最初的数据呢?...答案是通过序号 确定偏移量 当拆分数据拼接成网络包的时候,会将这块数据相对于起始数据的偏移字节算出来携带到tcp头部;除此之外还会携带数据包的总长度 网络包的数据长度不是放到tcp头部中, 因为用整个网络包的长度...实现这种方式需要在开始收发数据之前将初始值告知通信对象。同样服务端也需要告知序号值这样客户端就知道该如何拆分。这个偏移量就是序号值 双端告知各自序号 那么什么时候把这个初始序号值发送给对方呢?...大致流程 这样一来,无论网络中发生任何错误,协议栈都可以发现并采取补救措施(重传网络包) 。反过来说,有了这一机制,就不需要在其他地方对错误进行补救了。...但是网络信号是可以改变的,所以超时时间也应该和网络信号的好坏动态调整;并且网络信号差的时候不仅仅只是重发一个包这么简单后面的所有网络包都会收到影响(这个和安卓的anr排查差不多) 这个等待时间是根据ACK

    58420

    重识Nginx - 18 网络收发与Nginx事件间的对应关系

    文章目录 概述 网络传输 TCP流与报文 TCP 协议与非阻塞接口 读事件 写事件 WireShark抓包分析 WireShark设置 抓包分析 概述 Nginx是一个事件驱动的框架, 所谓事件即网络事件...Nginx每个连接自然对应两个网络事件,即 读事件和写事件。 要想理解Nginx的原理,以及Nginx再各种极端场景下的处理时,就必须要先了解网络事件。...---- TCP流与报文 在上述过程中网络报文扮演了一个怎样的角色呢?...此MTU就是网络层协议非常关心的地方,因为网络层协议比如IP协议会根据这个值来决定是否把上层传下来的数据进行分片。就好比一个盒子没法装下一大块面包,我们需要把面包切成片,装在多个盒子里面一样的道理。...当两台远程PC互联的时候,它们的数据需要穿过很多的路由器和各种各样的网络媒介才能到达对端,网络中不同媒介的MTU各不相同,就好比一长段的水管,由不同粗细的水管组成(MTU不同 )通过这段水管最大水量就要由中间最细的水管决定

    50440
    领券