Stanford CS144 lab5
- 综述
- 这个lab将实现
网际接口network interface
也就是IP数据包与链路层之间的桥 - 这张图展示了lab5与其他lab的联系,
TCP peers
的报文通过网际接口真正的传递,对于TCP中的IP层实现,Lab4中官方已经帮忙实现了;而IP层
通过最长前缀匹配原则
传递到合适网卡,其中网际接口层
充当中间接口,这边是router
的一部分 - 对于TCP数据报放入UDP中传送,UDP中,应用需要提供
payload
与target address
,内核提供UDP header与IP header与以太header等,并发送到下一跳 - 一般情况下
TCP数据报
总是放到IP数据报
,这种情况比较复杂,Linux
提供一个接口,叫做TUN 设备
,它让application
需要提供一个完整的数据报,包括IP头部,内核负责写入以太网帧头并通过物理网卡发送数据等, - 需要实现
ARP
,传递以太网帧
给TUN
?,ARP
大多数工作就是找以太地址与缓存以太地址
- 这个lab将实现
- 实现
ARP
维持缓存与软状态,重启时,把映射清空- 还能收到
IPV4数据报
吗 send_datagram
函数用来将InternetDatagram
转换为Ethernet frame
并发送它;tick
函数用于防止flood
的发生,这里还有recv_frame
函数用于接收以太网帧,这里还要区分IPV4 frame
与ARP
帧,等会,这里为什么会有IPV4的帧鸭?不是都封装在以太网帧里了吗?红线
是指丢掉不给自己的帧- 本地IP地址与以太网帧的映射存30秒
- 一个要点
- 实现中的问题
- 可以用
git log
查看commit
号,用git reset
回滚,之后可以用git reflog
查看所有的HEAD
的历史 revisited webget
还是不行,待解决
- 没看懂
- 可以用
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通