计算机网络协议分析 (15).pdf

  1. 1、本文档共13页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多

第二章网卡驱动和网络接口层

2.3网络接口层

2.3.3网络接口层处理流程

概述

➢网络接口层的处理流程

➢输入数据流涉及的函数调用关系

➢输出数据流涉及的函数调用关系

网络接口层处理流程

•网络接口层是在网卡驱动之上提供的一一个抽象接口层,它提供了

两个输入输出函数

–ni_in()函数负责网卡驱动上的数据接收处理

–netwrite()函数负责将数据写人网卡驱动程序,将数据发送出去

软件结构图中不同图形的意义

•实线椭圆——〉函数;

•实线矩形——〉模块;

•虚线椭圆——〉系统提供的内部数据通道、消息通道或者定时器,

用于进程间及进程内部的通信;

•没有文字注释的箭头——〉函数间调用关系(或者某个函数被某个

模块调用),

–如下图,网卡驱动程序调用ni__in()函数接收帧数据,进行多路

分解。

ni_in()、netwrite()和其他函数的调用关系

ni_in()、netwrite()和其他函数的调用关系

输入流函数调用关系:

网卡驱动程序获得数据,调用网络接口层ni_in()函数,接受输

入帧,ni_in()函数将帧的数据部分取出,然后根据帧类型字段将该

数据多路分解到相应的处理模块,

–rarp.in()负责接受RARP报文并进行处理

–arp_in()函数负责接受ARP报文并进行处理

–ip_in()函数负责接收IP数据报并进行处理;

ni_in()、netwrite()和其他函数的调用关系

输出流函数调用关系:

上层模块调用网络接口层netwrite()函数来和网卡驱动程序打

交道,完成数据的发送,

–arpqsend()函数完成ARP输出队列的发送

–ipputp()函数完成IP输出队列的发送,在发送的过程中可能需要分

片,ipfsend()函数完成分片数据的发送。

网络接口层处理流程

•网络接口层还提供了网络初始化函数netstart()

•系统启动后的第一个进程nulluser(pid为0)会调用netstart()

函数完成整个网络功能模块的初始化和加载处理。

netstar()函数和其他函数的调用关系

netstar()函数和其他函数的调用关系

nelstart()函数会调用一些初始函数完成模块的初始化工作

◆arpinit()函数:ARP模块的初始化

◆ipfinit()函数:IP分片模块的初始化

◆inithost()函数:初始化主机的网络接口

◆hginit()函数:初始化多播表

netstar()函数还创建了很多进程,负责其他网络模块的处理

◆slowtimer进程:负责ARP、IP等模块中的定时器处理

◆ipproc进程:负责IP数据报的处理

◆tcptimer进程:负责TCP模块中的定时器

◆tepinp进程:负责TCP模块的输入处理

◆tepout进程:负责TCP模块的输出处理

◆rip进程:负责RIP报文的处理。

•2.5.5网络接口层的多路分解

在网络接口层收到以太帧后,要根据帧类型字段进行多路分解,转交

给相应的处理模块进行处理。网络接口层提供的ni_in()函数实现了

多路分解过程,其处理流程如图2-12所示

小结

➢网络接口层的处理流程

➢输入数据流涉及的函数调用关系

➢输出数据流涉及的函数调用关系

文档评论(0)

158****6446 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档