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还是不行,待解决- 没看懂
![]()
- 可以用













浙公网安备 33010602011771号