zoukankan      html  css  js  c++  java
  • TCP-IP详解卷1 第17章课后题答案

    1、为什么我们已经讨论的所有 I n t e r n e t协议(I P, ICMP, IGMP, UDP, TCP)收到有检验和错 的分组都仅作丢弃处理?
    当分组的checksum与接收方的计算结果不一致的时候,有三种处理方案:一是立即通知发送方重传;二是直接丢弃分组,等待发送方定时器超时后重传;三是尝试纠错,比如数据链路层中的CRC。但是,因为不一致的一般是有两种情况导致的:1)checksum部分出错,2)分组中其他字段出错。所以,接收方是无法是哪里出错,尤其是如果分组中出错的字段就是发送方的地址(比如IP分组中源地址字段错了),那么根本无法将重传请求回馈给发送方。所以处理方法就是直接丢弃分组等待超时重传。
    还有,为什么CRC只用在数据链路层呢?因为CRC需要的额外比特位还是比较多的,加上因为数据链路层已经有了检测能力高的CRC,传输的准确率已经得到保证,所以上层协议就没有必要再使用CRC了。


    链接:https://www.zhihu.com/question/26997887/answer/34880234
    来源:知乎

    2、tcp提供了一种字节流服务,而收发双方都不保持记录的边界

    这是通过端口号来实现的,每个端口号对应于一个应用程序,可以通过端口号来区分数据是哪个应用程序的

    3、为什么在 T C P首部的开始便是源和目的的端口号?

    简单来说,ICMP 差错报文包含了 IP 首部和 IP 数据报文的前8个字节,而 ICMP 需要需要确定哪一条链接出了问题,那怎么确定链接呢?就是通过源端口号和目的端口号进行的。所以 IP 数据报的前 8 个字节一定包含了相关端口号,也就是说 TCP 首部前 8 个字节一定包含了源端口和目的端口号。至于为什么一定是前 4 个字节?我猜测 ICMP 的相关实现中,就是通过 IP 数据报文的前 8 个字节中的前 4 个字节获取的端口号,所以反向推断,TCP 首部的前 4 个字节一定是端口号信息。同理,UDP 的前 4 个字节也是端口号信息。

    链接:https://www.zhihu.com/question/20708671/answer/129449027
    来源:知乎
  • 相关阅读:
    从零开始学架构(三)UML建模
    【网址收藏】博客园主题美化
    完美解决国内访问GitHub速度太慢的难题
    SpringBoot+slf4j线程池全链路调用日志跟踪 二
    SpringBoot+slf4j实现全链路调用日志跟踪 一
    2021年java最全面试宝典【核心知识整理】
    [中级]系统集成项目管理工程师历年真题及参考答案
    线程池ThreadPoolExecutor最全实战案例
    大厂git分支管理规范:gitflow规范指南
    IdentityServer4
  • 原文地址:https://www.cnblogs.com/mingyao123/p/7305906.html
Copyright © 2011-2022 走看看