怎Internet协议: IP, ICMP, IGMP, UDP, TCP 收到有检查和谬误的分组都仅作抛处理?

林越 1周前 190 icmp tcp 数据链路层
这道题是 《TCP/IP 详解1 》17章的第二道课后题,看到这道题的时候我的思考是: 因为这些数据损坏恢复起来代价会比较大(因为无法预计那些地方会出错),所以不尝试恢复,丢弃后重新回复发送方此数据包的ack反而更为方便。请问下这个考虑是否是一个理由,同时协议这样设计是否还有其他的理由。 最后:先行谢谢回答问题的各位。
其他回答
首先要思考的是,如果要恢复,你能怎么恢复?重新发一个包给发送者让他重发?那样是否和 ACK 的功能有重复?

你可以再想一下,如果我们有这种要求目的主机重发包的协议机制,这会不会算一种攻击?你可以扩展一下,看一下 DNS 放大攻击和 ICMP 放大攻击。如果我用一个几十 B 的小包去让主机重发一个几百 B 的大数据包,会发生什么?
热心网民 1周前 0条评论
当分组的checksum与接收方的计算结果不一致的时候,有三种处理方案:一是立即通知发送方重传;二是直接丢弃分组,等待发送方定时器超时后重传;三是尝试纠错,比如数据链路层中的CRC。但是,因为不一致的一般是有两种情况导致的:1)checksum部分出错,2)分组中其他字段出错。所以,接收方是无法是哪里出错,尤其是如果分组中出错的字段就是发送方的地址(比如IP分组中源地址字段错了),那么根本无法将重传请求回馈给发送方。所以处理方法就是直接丢弃分组等待超时重传。
还有,为什么CRC只用在数据链路层呢?因为CRC需要的额外比特位还是比较多的,加上因为数据链路层已经有了检测能力高的CRC,传输的准确率已经得到保证,所以上层协议就没有必要再使用CRC了。
林越 1周前 0条评论
相关问答