《TCP/IP详解 卷2:实现》 —1.9.5 以太网输出

举报
华章计算机 发表于 2019/11/20 15:52:45 2019/11/20
【摘要】 本节书摘来自华章计算机《TCP/IP详解 卷2:实现》一书中第1章,第1.9.5节,作者是[美]加里R.赖特(Gary R.Wright),W. 理查德史蒂文斯(W.Richard Stevens),陆雪莹 蒋慧 等译 谢希仁 校。

1.9.5   以太网输出

以太网输出函数的第一个功能就是把32位IP地址转换成相应的48位以太网地址。在使用ARP(地址解析协议)时会使用这个功能,而且会在以太网上发送一个ARP请求并等待一个ARP应答。此时,要输出的mbuf链表已得到,并等待应答。

然后以太网输出例程把一个14字节的以太网首部添加到链表的第一个mbuf中,紧接在IP首部的前面(图1-8)。以太网首部包括6字节以太网目标地址、6字节以太网源地址和2字节以太网帧类型。

之后此mbuf链表被加到此接口的输出队列队尾。如果接口不忙,接口的“开始输出”例程立即被调用。若接口忙,在它处理完输出队列中的其他缓存后,它的输出例程会处理队列中的这个新mbuf。

当接口处理它输出队列中的一个mbuf时,它把数据复制到它的传输缓存中,并且开始输出。在我们的例子中,192字节被复制到传输缓存中:14字节以太网首部、20字节IP首部、8字节UDP首部及150字节用户数据。这是内核第三次遍历这些数据。一旦数据从mbuf链表被复制到设备传输缓存,mbuf链表就被以太网设备驱动程序释放。这三个mbuf被放回到内核的自由缓存池中。


【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。