linux网络之数据包的接受过程

smartvxworks smartvxworks     2022-10-22     189

关键词:

网卡收包从整体上是网线中的高低电平转换到网卡FIFO存储再拷贝到系统主内存(DDR3)的过程,其中涉及到网卡控制器,CPU,DMA,驱动程序,在OSI模型中属于物理层和链路层,如下图所示。

网卡工作在物理层和数据链路层,主要由PHY/MAC芯片、Tx/Rx FIFO、DMA等组成,其中网线通过变压器接PHY芯片、PHY芯片通过MII接MAC芯片、MAC芯片接PCI总线

PHY芯片主要负责:CSMA/CD、模数转换、编解码、串并转换

MAC芯片主要负责:

比特流和帧的转换:7字节的前导码Preamble和1字节的帧首定界符SFD
CRC校验
Packet Filtering:L2 Filtering、VLAN Filtering、Manageability / Host Filtering
Intel的千兆网卡以82575/82576为代表、万兆网卡以82598/82599为代表

接收数据包是一个复杂的过程,涉及很多底层的技术细节,但大致需要以下几个步骤:

  1. 网卡收到数据包。
  2. 将数据包从网卡硬件缓存转移到服务器内存中。
  3. 通知内核处理。
  4. 经过TCP/IP协议逐层处理。
  5. 应用程序通过read()从socket buffer读取数据。

linux网络数据包的揭秘以及常见的调优方式总结

...常时能快速定位问题。以tcp协议为例,本文将对Linux内核网络数据包接收的路径进行整理和说明,希望对大家所有帮助。Linux数据包接收路径的整体说明接收数据包是一个复杂的过程,涉及很多底层的技术细节,这里先做一下大概... 查看详情

网络数据传输安全之公钥与私钥

数据在互联网上传输过程中存在三个隐患:安全性:数据在传输过程中内容可能泄露。完整性:数据在传输过程中可能被篡改。身份认证:接受数据的一方很难确认发送者的身份。针对这三种隐患科研人员设计了多种对数据加密... 查看详情

网络编程之粘包(代码片段)

一、什么是粘包须知:只有TCP有粘包现象,UDP永远不会粘包粘包不一定会发生TCP发生粘包的两种情况:      1.由于Nagle算法,将多次间隔小且数量小的数据,合并成一个数据块      2.数据量发送大,接受少首先需... 查看详情

Linux 上传入网络包的延迟 - 如何分析?

】Linux上传入网络包的延迟-如何分析?【英文标题】:DelayofincomingnetworkpackageonLinux-Howtoanalyse?【发布时间】:2021-10-2614:46:57【问题描述】:问题是:有时tcpdump发现UDP数据包的接收被推迟到下一个传入的UDP数据包,尽管网络分流设... 查看详情

shshell:用于显示网络带宽或每秒数据包的快速linux脚本(代码片段)

查看详情

linux命令之测试网络连通状态ping(代码片段)

概述ping命令可以用于测试网络是否可连通。注:该命令虽然与Windows系统下的ping命令一样,但是Linux系统下的ping命令不会自动终止,需要按Ctrl+C或者指定选项-c来进行终止。语法该命令的语法如下:ping[选项][域... 查看详情

linux内核中数据包的传输过程(代码片段)

...流入本机:PREROUTING-->INPUT-->用户空间进程当一个数据包进入网卡时,数据包首先进入PREROUTING链,内核根据数据包目的IP判断是否需要转送出去。如果数据包是进入本机的(目的IP为本机IP),数据包就会到达INPUT... 查看详情

[linux]linux网络之网络层协议详解(代码片段)

...与私有地址2.1NAT转换总结3.路由3.1路由过程3.2路由表  网络层使用IP协议,IP协议基于IP地址转发分包数据,IP是跨网络传送数据包得,使整个互联网都能收到数据的 查看详情

sdnoverlay网络中虚机数据包的转发

在配置了网络虚拟化(Overlay)的网络结构中,处于Overlay网络中的虚机数据包的封装和MAC地址学习和传统物理网络(Underlay)相似又不尽相同。除了我们了解Overlay网络需要借助Underlay网络进行二次封装之外,其MAC地址学习过程也... 查看详情

sdnoverlay网络中虚机数据包的转发

在配置了网络虚拟化(Overlay)的网络结构中,处于Overlay网络中的虚机数据包的封装和MAC地址学习和传统物理网络(Underlay)相似又不尽相同。除了我们了解Overlay网络需要借助Underlay网络进行二次封装之外,其MAC地址学习过程也... 查看详情

tcp/ip高频考点之一个数据包的流浪日记(代码片段)

往期推荐TCP/IP开胃菜之HTTP面试反客为主TCP4网络层IP数据包的传输主要经过应用层、传输层、网络层、链路层。承接应用层HTTP、传输层TCP讲解,应用层数据被传输层包裹后接下来就需要被网络层包裹了,网络层的核心任务... 查看详情

浏览器从输入到输出的过程与原理五之网络通信和三次握手

1.网络通信和三次握手我们已经知道,网络通信就是交换数据包。电脑A向电脑B发送一个数据包,后者收到了,回复一个数据包,从而实现两台电脑之间的通信。数据包的结构,基本上是下面这样:发送这个包,需要知道两个地... 查看详情

[架构之路-45]:目标系统-系统软件-linuxos硬件设备驱动-网络驱动程序模型网络数据包的收发流程

目录第1章网络驱动程序模型概述1.1Linux目标系统架构1.2Linux网络设备驱动的总体框架第2章网络设备驱动架构2.1网络设备和网络驱动的注册2.2 网络设备的标准数据结构2.3网络驱动的标准接口2.4网络设备的初始化函数2.5网络接口的... 查看详情

网络相关的命令工具研究报告之iptables

...的netfilter模块,,在内核模块Xtables的支持下,来管理IPv4网络数据包的处理和转发。对于IPv6数据包,应使用ip6tales。当前,iptables支持内核2.4以上版本,Linux3.13开始使用nftables取而代之,但仍然提供iptables命令做为兼容接口。  i... 查看详情

linux从青铜到王者第十四篇:linux网络基础第一篇

系列文章目录文章目录系列文章目录前言一、计算机网络的发展过程1.独立模式2.网络互联模式3.局域网LAN4.广域网WAN二、认识计算机网络协议1.协议的概念2.什么是网络协议3.网络协议簇4.体系结构5.OSI七层模型6.TCP/IP五层(或四层)... 查看详情

[架构之路-48]:目标系统-系统软件-linux下的网络通信-4-快速数据平面开发套件dpdk-工作原理

...DPDK1.2DPDK的作用1.3DPDK的背景第2章Linux内核和应用程序处理网络数据包的过程2.1Linux网络数据包的处理流程2.2 传统Linux内核Socket通信的问题第3章DPDK的架构与原理3.1 DPDK的基本思想 3.2 DPDK替代Linux网络协议栈3.3  DPDK总体架构与主... 查看详情

linux之网络基础?

网络基础网络模型有两种基本类型:协议模型和参考模型。TCP/IP模型描述了TCP/IP协议簇中每个协议层实现的功能,因此属于协议模型。开放式系统互联(OSI)模型是最广为人知的网际网络参考模型,用于数据网络设计、操作规范和... 查看详情

linux上的ping命令是啥

...使用ICMP传输协议,发出要求回应的信息,若远端主机的网络功能没有问题,就会回应该信息,因而得知该主机运作正常。语法:ping[-dfnqrRv][-c<完成次数>][-i<间隔秒数>][-I<网络界面>][-l<前置载入>][-p<范本样式&g... 查看详情