1.1 数据的接收 之 初来乍到

本文探讨了在DOS环境下,如Wattcp通过调用网卡驱动的中断来接收数据的过程。数据到达网卡后,网卡驱动通过设定的回调函数将数据传递给应用程序。Wattcp使用_Packet Driver Specification_中的方法设置网卡接收数据,并将数据拷贝到全局缓存。数据处理主要在_tcp_tick()函数中进行,它检查缓存并调用处理函数。数据接收流程涉及_eth_arrived()_和_pkt_received()_两个子函数,实现分层处理。
摘要由CSDN通过智能技术生成

​ 暂且不说这个数据块是从哪儿来的,是怎么传到网卡上面来的。咱们先在要说的是,数据到达网卡以后会发生什么事情。很简单,网卡将数据交给需要该数据的程序就可以了。网卡是如何知道谁需要这个数据呢?难道是吼一嗓子,“喂,大家注意了,我这儿接到一个数据,有没有需要的?”。当然不是。它会告诉它的秘书──网卡驱动程序。网卡驱动程序再从他的笔记本中找到,都是谁告诉过他需要这些数据,然后调用对应的回调函数来拷贝这些数据。

​ 那么,如何告诉网卡驱动程序谁需要这些数据呢?很简单,调用对应的中断就可以了。在dos里面,驱动程序不想windows里面一样由操作系统来管理。在dos下,任何程序都可以干任何事情。普通的应用程序很多时候都需要直接跟驱动程序打交道。WatTcp就直接调用驱动程序的中断,来进行数据的收发的。那么,怎么调用驱动程序呢?对于网卡驱动来说,有一个规范《PC/TCP Version 1.09 Packet Driver Specification》它是1989年制定的一个dos下驱动程序的标准。也是dos下驱动程序的最后一个标准。其中就规定了如何设置网卡的工作模式、如何接受数据,如何发送数据等等。我们这儿关心的是,如何让网卡驱动将数据传达给我们。在WatTcp里面是这样做的:
[src/pcpkt.c]

    for ( class = 0; class < 2; ++class ) {
    _pktdevc
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值