你好,我是刘超。
第三期答疑涵盖第 7 讲至第 13 讲的内容。我依旧对课后思考题和留言中比较有代表性的问题作出回答。你可以点击文章名,回到对应的章节复习,也可以继续在留言区写下你的疑问,我会持续不断地解答。希望对你有帮助。
课后思考题
当发送的报文出问题的时候,会发送一个 ICMP 的差错报文来报告错误,但是如果 ICMP 的差错报文也出问题了呢?
我总结了一下,不会导致产生 ICMP 差错报文的有:
ICMP 差错报文(ICMP 查询报文可能会产生 ICMP 差错报文);
目的地址是广播地址或多播地址的 IP 数据报;
作为链路层广播的数据报;
不是 IP 分片的第一片;
源地址不是单个主机的数据报。这就是说,源地址不能为零地址、环回地址、广播地址或多播地址。
留言问题
1.ping 使用的是什么网络编程接口?
咱们使用的网络编程接口是 Socket,对于 ping 来讲,使用的是 ICMP,创建 Socket 如下:
socket(AF_INET, SOCK_RAW, IPPROTO_ICMP)