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

news/2024/12/23 22:12:09 标签: 计算机网络

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 记录(已开源)

http://www.niftyadmin.cn/n/5797059.html

相关文章

AI的使用:初见

一、AI初见 二、AI基础 生成式人工智能、大语言模型、提示词 三、提示词-Prompt 你糊弄AI,AI也糊弄你。 与AI交流,和与人交流一样。对AI要准确的表达出你的意思。就像我们给领导汇报工作一样,要使用很多科学的思维模型,比如S…

【C++ 真题】P1031 [NOIP2002 提高组] 均分纸牌

[NOIP2002 提高组] 均分纸牌 题目描述 有 N N N 堆纸牌,编号分别为 1 , 2 , … , N 1,2,\ldots,N 1,2,…,N。每堆上有若干张,但纸牌总数必为 N N N 的倍数。可以在任一堆上取若干张纸牌,然后移动。 移牌规则为:在编号为 1 …

2. Kafka入门-开发环境准备

Kafka入门-开发环境准备 1. 环境准备---------------------------------------------------------------------------------------------- 1. 环境准备 ----------------------------------------------------------------------------------------------

架构演进之路

架构演进 前言1. 单机架构2. 应用数据分离架构3. 应用服务集群架构4. 读写分离 / 主从分离5. 冷热分离架构6. 业务拆分 —— 微服务7. 总结 前言 架构之所以会进行演变,是因为硬件的限制导致没办法容纳更多的请求 解决方法一般有:开源、节流 开源&#…

基于SpringBoot的仿掘金个人博客系统(2025最新原创)

系统介绍:仿掘金精美博客系统 一、概述 本博客系统是一款仿掘金设计的精美博客平台,旨在为用户提供一个功能丰富、操作简便的博客管理环境。系统采用现代化的技术栈,确保了高性能、高可用性和良好的用户体验。 源码资料: http:…

Golang 的并发优势

在如今的编程领域,一个程序能够同时处理多个任务的能力非常重要,这就是所谓的并发处理。而 Golang 在并发编程方面表现十分出色,具有很多独特的优势,简直不要太简单。 一、轻量级的协程(Goroutine) 在传统…

详细分析:AG32 MCU与STM32/GD32的区别

一、MCU内核的区别 STM32/GD32是ARM Cortex内核; AG32是目前最新的RISC-V内核,该内核具有速率高,功耗低等特点,不受制于ARM,应用灵活等特点。 二、AG32与STM32/GD32 MCU的引脚区别 AG32 芯片和其他芯片(比如ST、GD)在使用上有一个很大的差异点,是AG32 的IO 引脚并不…

CSS基础(前端)

css定义 css(Cascading StyleSheet)层叠样式表,它是用来美化页面的一种脚本语言。 脚本语言不是编程语言 css作用 美化界面 ,比如:设置标签文字大小、颜色、字体加粗等样式。 控制页面布局,比如:设置浮动、定位等样式。 divcss架构 css基本语法 C…