欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 财经 > 产业 > CS 144 check5: down the stack (the network interface)

CS 144 check5: down the stack (the network interface)

2025/11/19 18:44:06 来源:https://blog.csdn.net/AN15107549921/article/details/144635639  浏览:    关键词:CS 144 check5: down the stack (the network interface)

Lectures Note

Exercises

TCP片段传输到对等方的过程:

  • TCP-in-UDP-in-IP. Linux 提供了一种接口(即“数据报套接字”,UDPSocket),它允许应用程序仅提供用户数据报的有效载荷和目标地址,而内核则负责构建 UDP 头、IP 头以及以太网头,并将数据包发送到适当的下一跳。
  • TCP-in-IP. 在通常的使用中,TCP 段几乎总是直接被放置在互联网数据报中,在 IP 头和 TCP 头之间没有 UDP 头。这就是人们所说的“TCP/IP”。Linux 提供了一种名为 TUN 设备的接口,它允许应用程序提供整个互联网数据报,而内核则负责处理其余的部分。
  • TCP-in-IP-inEthernet. TCP-in-IP-inEthernet(这个check将)生成原始的以太网帧,这些帧将通过一种名为 TAP 设备的接口交给 Linux —— 这种设备类似于 TUN 设备,但更为底层,因为它交换的是原始链路层帧而不是 IP 数据报。

这个check的大部分工作是为每个下一跳IP地址查找(和缓存)以太网地址。这个协议叫做Address Resolution Protocol(ARP)。

在网络通信中,“hop”(跳)指的是数据包从一个网络设备(如路由器或交换机)传输到下一个网络设备的过程。每个“hop”代表数据包经过的一个中间节点。

网络接口连接了互联网数据报和链路层帧的世界;
网络接口组件可以做为一个主机的TCP/IP栈,也可以作为IP路由器的一部分(见下图)。
在这里插入图片描述

NetworkInterface:包括一个IP地址映射至以太网地址的方法。

定时器例子:

struct Timer {size_t _ms {};constexpr Timer& tick( const size_t ms_since_last_tick ) noexcept { return _ms += ms_since_last_tick, *this; }[[nodiscard]] constexpr bool expired( const size_t& TTL_ms ) const noexcept { return _ms >= TTL_ms; }
};

代码实现起来,需要定义ARP的map,使用的是unordered_map。

参考:

  1. CS 144
  2. CS144 | Winter 2024, Lab 0~7 记录(已开源)

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词