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大多数工作就是找以太地址与缓存以太地址
- 实现
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还是不行,待解决
- 没看懂