TCP服务和首部知识点小结

时间:2023-03-09 00:31:32
TCP服务和首部知识点小结

服务

  1. 应用程序会被TCP分割成数据段,而UDP不分割。
  2. TCP有超时重传和确认
  3. 如果检验和出错将丢弃
  4. IP数据包可能会失序或者重复,所以TCP会处理
  5. 滑动窗口来进行流量控制
  6. 对字节流的内容不做任何解释

首部

tcp首部如果不带可选字段,为20字节

TCP服务和首部知识点小结

  1. 16位的源端口号和目的端口号以及ip数据报首部的源和目的ip地址用来唯一表示一对主机。
  2. 序号标识这个报文段的第一个数据字节,确认序号表示希望对端发送的数据字节。
  3. 4位首部长度最大为15,表示最大长度为15*4=60字节
  4. 检验和包括了tcp首部和数据
  5. 只有当URG位设置时紧急指针才有效,紧急指针是一个正的偏移量,和序号相加表示紧急数据中最后一个字节的序号。
  6. 最常见的可选字段是MSS,最长报文大小,指明本端所能接收的最大的报文大小。

部分问题

  1. 为什么(IP, ICMP, IGMP, UDP, TCP)收到有检验和错的分组都仅做丢弃处理?

    因为源IP地址,源端口号,协议类型都可能被破坏了
  2. TCP提供了一种字节流服务, 而收发双方都不保持记录的边界。应用程序如何提供它们自己的记录标识?

    很多应用使用回车和换行来标记每个应用记录的结束。另外可以在记录前加上记录的字节计数。
  3. 为什么在TCP首部的开始便是源和目的端口号?

    ICMP报文会返回IP数据报的数据部分的前8个字节,TCP收到ICMP报文后要根据源和目的端口号确定接收进程,所以端口号必须在前8个字节里。
  4. 为什么TCP首部有一个首部长度字段而UDP首部没有?

    TCP首部有可选项而UDP没有