- 浏览: 498474 次
- 性别:
- 来自: 广州
文章分类
- 全部博客 (502)
- Java (70)
- Linux (10)
- 数据库 (38)
- 网络 (10)
- WEB (13)
- JSP (4)
- 互联网 (71)
- JavaScript (30)
- Spring MVC (19)
- HTML (13)
- CSS (3)
- AngularJS (18)
- Redis (5)
- Bootstrap CSS (1)
- ZooKeeper (4)
- kafka (6)
- 服务器缓存 (4)
- Storm (1)
- MongoDB (9)
- Spring boot (16)
- log4j (2)
- maven (3)
- nginx (5)
- Tomcat (2)
- Eclipse (4)
- Swagger (2)
- Netty (5)
- Dubbo (1)
- Docker (7)
- Hadoop (12)
- OAuth (1)
- webSocket (4)
- 服务器性能 (7)
- Session共享 (1)
- tieye修改 (1)
- 工作 (1)
- 有用的语录 (0)
- https (2)
- common (5)
- 产品开发管理 (1)
- CDN 工作原理 (1)
- APNS、GCM (1)
- 架构图 (3)
- 功能实现分析 (1)
- JMX (1)
- 服务器相关操作命令 (1)
- img02 (0)
- 服务器环境搭建 (9)
- goodMenuBook (1)
- CEInstantPot (0)
- 有用数据 (1)
- 百度地图WEB API (2)
- 正则表达式 (1)
- 样式例子 (2)
- staticRecipePressureCooker.zip (1)
- jCanvas (1)
- 网站攻击方法原理 (1)
- 架构设计 (3)
- 物联网相关 (3)
- 研发管理 (7)
- 技术需求点 (1)
- 计划 (1)
- spring cloud (11)
- 服务器开发的一些实用工具和方法 (1)
- 每天学到的技术点 (4)
- Guava (1)
- ERP 技术注意要点 (2)
- 微信小程序 (1)
- FineRepor (1)
- 收藏夹 (1)
- temp (5)
- 服务架构 (4)
- 任职资格方案 (0)
- osno_test (1)
- jquery相关 (3)
- mybatis (4)
- ueditor (1)
- VueJS (7)
- python (10)
- Spring EL (1)
- shiro (1)
- 前端开发原理与使用 (7)
- YARN (1)
- Spark (1)
- Hbase (2)
- Pig (2)
- 机器学习 (30)
- matplotlib (1)
- OpenCV (17)
- Hystrix (1)
- 公司 (1)
- miniui (4)
- 前端功能实现 (3)
- 前端插件 (1)
- 钉钉开发 (2)
- Jenkins (1)
- elasticSearch使用 (2)
- 技术规范 (4)
- 技术实现原理 (0)
最新评论
MAC包中含有发送端和接收端的MAC地址信息。既然是驱动程序创建的MAC包头信息,当然可以随便输入地址信息的,主机伪装就是这么实现的。
MAC是的由驱动程序进行设置写入的,不是网卡自动写入的,所以MAC可以进行伪装
网卡芯片对MAC包,再次封装成物理帧,添加头部同步信息和CRC校验。然后丢到网线上,就完成一个IP报文的发送。所有挂接到本网线的网卡都可以看到该物理帧。
网卡如何接收数据包:
正常情况:
网线上的物理帧首先被网卡芯片获取,网卡芯片会检查物理帧的CRC,保证完整性。其次,网卡芯片将物理帧头去掉,得到MAC包。
网卡芯片检查MAC包内的目的MAC地址信息,和本网卡的MAC地址是否一致?不一致,抛弃。
网卡芯片将MAC帧拷贝到网卡的内部缓冲区,触发中断。
驱动程序通过中断,将MAC包拷贝到系统中,构建sk_buff。告诉上层。
上层去掉MAC包头,得到需要的IP包。
过程中,网卡芯片对物理帧进行了MAC匹配过滤。这样做可以减小系统负荷。试想一下,若网卡芯片对所有的MAC帧不加判断的直接提供给驱动,让CPU判决会是什么样子呢?当总线上数据繁忙,CPU将浪费大部分时间去判断该MAC包是否是自己需要的,效率低下。
不正常模式(混听):
网线上的物理帧首先被网卡芯片获取,网卡芯片会检查物理帧的CRC,保证完整性。其次,网卡芯片将物理帧头去掉,得到MAC包。网卡芯片发现自己当前被配置为混听模式,就不对MAC包过滤。网卡芯片将MAC帧拷贝到网卡内部的缓冲区,触发中断。驱动程序通过中断,将MAC包拷贝到系统中,构建sk_buff,告诉上层。上层去掉MAC包头,得到需要的IP包。显然,这里的IP包并不一定是发给自己的。
驱动的问题:
网卡到底能不能接收其他MAC包,完全取决于网卡芯片中RCR( receive control register )配置。驱动程序是决定网卡能否工作于混听模式的桥梁。混听模式会加重CPU的负荷,而且也是不符合标准应用的!
网卡可以设置多个ip地址,但MAC还是一个的,这样就可以通过不同的IP访问同一个网卡了
发表评论
-
windowx 命令
2020-10-23 17:35 290windowx 端口占用 netstat -aon|finds ... -
IP 隧道技术
2018-11-27 18:01 1059IP 隧道技术 -
网卡数据从驱动到应用的过程分析
2018-10-29 09:32 878网卡数据从驱动到应用的过程分析 1.网卡接收到地IP数据 ... -
1212
2017-01-20 19:05 012122222222222222222 -
网络设备网卡、中继器、集线器、网桥、交换机、路由器工作原理
2017-01-05 18:47 1013网络设备网卡、中继器、集线器、网桥、交换机、路由器工作原理 ... -
网卡工作模式
2016-12-07 09:49 1056网卡工作模式 网卡工作模式有4种,分别是: 广播(Broa ... -
VRRP工作原理
2016-12-05 19:25 876VRRP工作原理 1.(Virtual Router Re ... -
TCP协议中的三次握手和四次挥手
2016-10-28 10:50 355TCP协议中的三次握手和四次挥手 三次握手(建立连接) 1 ... -
网络通信相关基础知识的认识(一篇读懂网络相关内容)
2016-08-19 20:06 727TCP/IP协议:就是的网络中的计算机与计算机之间进行数据通信 ... -
DNS的初步认识和域名的作用
2016-08-19 09:52 757DNS:DNS( Domain Name System) ...
相关推荐
#### 网卡接收数据包过程 当网络接口卡(NIC)接收到数据帧时,它会触发一个硬件中断信号,通知操作系统有新的数据到达。这个中断信号由网卡硬件产生,通过中断控制器发送到处理器。操作系统接收到中断信号后,会...
而利用`socket`模块,能够更加灵活地指定网卡接收数据包。这些技术在多网卡环境中尤为重要,可以帮助开发者更有效地控制网络通信。 ### 相关链接 - [Scapy文档](https://scapy.readthedocs.io/en/latest/) - ...
在正常模式下,网卡只接收发送给自己或广播的数据包。但在混杂模式下,它会捕获所有通过网络的数据包,包括那些不是为它设计的。 3. **协议分析**:截获的数据包包含了各种网络协议的信息,如TCP/IP、UDP、HTTP等。...
Rx_buffer是网卡接收数据包的缓冲区结构体。它包括一个struct sk_buff指针,用于存储接收的数据包。Rx_buffer结构体还包括其他成员变量,用于存储数据包的元数据。 Queue Ring Descriptor Queue Ring Descriptor是...
2. 数据传输管理:驱动程序负责将数据包从操作系统传输到网卡,以及从网卡接收数据包并传递给操作系统。 3. 错误检测和纠正:驱动程序能检测传输错误,并采取必要的纠正措施,确保数据的完整性和可靠性。 4. 协议...
2. **数据传输**:驱动程序负责将数据包从操作系统传输到网卡,以及从网卡接收数据包并传递给操作系统。 3. **错误检测与纠正**:当数据在传输过程中出现错误时,驱动程序会检测到并尝试纠正这些错误,以确保数据的...
接口机负责从网卡接收数据包,记录时间戳,然后将带有时间戳的包放入应用消息队列。这种方法虽然可以实现目的,但增加了系统的复杂性,且成本较高,不推荐作为首选方案。 另一种方法是利用ioctl系统调用来获取网卡...
数据包捕获的基本原理是利用网络接口控制器(NIC)的混杂模式,这种模式允许网卡接收所有经过的网络流量,而不仅仅是发送给它的数据。常见的数据包捕获库有libpcap(在Unix-like系统中)和WinPcap(在Windows系统中...
网络数据包接收流程包括网卡接收数据包、DMA拷贝数据包到RingBuffer、网卡硬中断响应程序、软中断响应程序、内核协议栈处理、传输层处理和应用层处理等步骤。 7. 内核线程ksoftirqd 内核线程ksoftirqd是专门用来...
这个过程从网卡接收数据包开始,以DM9000网卡驱动为例。当网卡接收到数据包时,会触发中断处理函数`dm9000_interrupt`。这个中断处理函数会检查中断状态,并调用`dm9000_rx`来接收数据。在`dm9000_rx`中,系统会为新...
从以太网卡接收到数据包开始,直至数据包被传递至传输层,整个过程可以分为以下几个关键步骤: ### 1. 硬件中断响应 当以太网卡接收到数据包时,它会触发一个硬件中断,通知CPU有新的数据包到达。在Linux系统中,...
7. **NAPI集成**:PF_RING与网络设备的NAPI(Non-Blocking Poll Mode I/O)集成,能更高效地从网卡接收数据包,减轻中断处理负担。 8. **过滤机制**:由于数据包不需要经过完整的协议栈,PF_RING提供简单的过滤功能...
- **网卡接收数据包**:网卡(例如RTL8019AS)内部包含16K的RAM,按照256字节一页的方式组织,前12页用于存储发送的数据包,后52页用于存储接收的数据包。网卡接收任务的主要功能是检测网卡缓冲区是否有新数据到达,...
5. **接收数据包**:通过`recv()`函数从套接字接收数据。 6. **关闭资源**:完成捕获后,调用`closesocket()`和`WSACleanup()`函数释放资源。 #### 示例代码解析 虽然原文中的部分内容可能难以理解,但是可以通过...
本文将深入讲解如何在Linux环境下使用C++实现UDP(User Datagram Protocol)数据的发送与接收,包括单播和组播功能,并且支持指定网卡操作。我们将讨论相关的核心知识点,以及提供给定的代码文件的作用。 首先,UDP...
在数据包的接收处理流程中,分为驱动收包和应用层收包,驱动层负责从网卡接收数据包,应用层则接收经过内核协议栈处理后的数据包。而数据包的发送流程则包括应用层发包和协议栈发包,应用程序通过系统调用将数据发送...
1. 网卡接收到数据包,并通过DMA方式写入内存。 2. 网卡产生中断,通知CPU处理数据包。 3. CPU处理数据包,并将其发送到目标设备。 网卡中断流程 网卡中断流程是指网卡产生中断信号,以通知CPU处理数据包。该流程...
* Checksum Offload:建议关闭,关闭数据包校验功能,以提高网卡效率。 * Flow Control:建议关闭,关闭流量控制功能,以提高网卡效率。 * IEEE802.1P Support:建议关闭,关闭 IEEE802.1P 支持,以提高网卡效率。 *...
2. **网络监视器驱动程序**:使得网络监视器能够从网卡接收数据包,并允许用户捕获远程计算机的数据包,包括通过拨号网络连接获取的数据包。 #### 五、具体操作指南 - **设计捕获筛选器**:在“捕获筛选器”对话框...