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