ARP程序中的主要函数有: (1)void ARP_SendRequest(DWORD destlP) 发送ARP请求。如果IP模块在ARP表中找不到想要IP对应的物理地址,则会调用SendRequest函数,来发送一个ARP请求。发送一个ARP请求以后,将启动ARP定时。 (2)void ARPIn(BYTE page) 当有一个ARP包接收到时,Netlntef将调用这个函数。如果是一个发给自己的ARP请求,则应答;如果这是一个给自己刚发的ARP请求的应答,则用此来得到物理地址,更新ARP地址对应表,并且禁用ARP定时,重发次数恢复为0。 (3) void A 在通信与网络中,ARP(Address Resolution Protocol,地址解析协议)是实现IP地址与物理MAC地址映射的关键协议。在局域网环境下,设备通过IP地址进行通信,但实际的数据传输需要物理地址,即MAC地址。ARP程序设计是实现这一转换过程的核心,它涉及到的主要函数包括: 1. **ARP_SendRequest(DWORD destlP)** 这个函数负责发送ARP请求。当IP模块在ARP缓存表中找不到目标IP地址对应的物理地址时,会调用该函数。ARP请求的目的地址是目标IP(destlP),它广播到局域网的所有设备,询问哪个设备持有该IP地址。发送ARP请求后,会启动一个ARP定时器,用于跟踪等待响应的时间。 2. **ARPIn(BYTE page)** 当网络接口(如Netlntef)接收到一个ARP包时,会调用此函数。函数会检查接收到的ARP包类型:如果是一个请求,并且请求的目标IP地址与本地IP相同,那么会发送一个ARP应答;如果接收到的是针对自己之前发送的ARP请求的应答,那么就会使用这个应答中的物理地址信息更新ARP缓存,并关闭ARP定时器,将重发计数器重置为0,表示已成功获取到目标IP的物理地址。 3. **ARP_Resend()** 此函数用于在没有收到应答或需要重新发送ARP请求时调用。它会再次发送ARP请求,并递增重发次数ARPRetrasmitTime。如果ARPRetrasmitTime达到预设的最大重试次数(ARP_MAX_RETRNSMIT_TIIVE),则认为目标设备无法到达,可能是因为网络故障或者目标设备离线,这时需要在网络层做出相应的错误处理。例如,在TCP模块的某些函数(如BYTETCPPeerClosing())中可能会检测ARPRetrasmitTime是否达到最大值,并据此执行关闭连接等操作。 在ARP的工作流程中,发送方首先发送ARP请求,接收方接收到请求后返回一个ARP应答,其中包含其MAC地址。发送方将应答中的MAC地址存储到ARP缓存中,以便下次通信时可以直接使用,而无需再次发送ARP请求。这个过程是ARP协议的核心,确保了IP通信能在物理网络上正确进行。 理解并熟练掌握ARP程序设计对于网络通信的实现至关重要,特别是在局域网环境中,有效的ARP管理可以提高网络效率,减少通信延迟,同时也能帮助识别和解决网络连接问题。在编程实现网络通信协议时,这些函数通常是网络层的关键组成部分,需要精心设计和优化。
- 粉丝: 4
- 资源: 926
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助