• (王道考研计算机网络)第五章传输层-第三节1-2:TCP协议特点和TCP报文段


    一:TCP协议特点

    TCP:是一种是面向连接的、可靠的、基于字节流的传输层通信协议

    • 面向连接:一定是一对一才能连接,而不像UDP协议可以一个主机同时向多个主机发送消息,也就是一对多是无法做到的
    • 可靠的:无论的网络链路中出现了怎样的链路变化,TCP都可以保证一个报文一定能够到达接收端
    • 字节流:消息是没有边界的,所以无论我们消息有多大都可以进行传输。并且消息是有序的,当前一个消息没有收到的时候,即使它先收到了后面的字节,那么也不能扔给应用层去处理,同时对重复的报文会自动丢弃

    具体来说,其特点如下

    ①:.TCP是面向连接(虚连接)的传输层协议

    ②:点对点:每一条TCP连接只能有两个端点,每一条TCP连接只能是点对点的

    ③:可靠有序、不丢不重:TCP提供可靠交付的服务,无差错、不丢失、不重复、按序到达

    ④:TCP提供全双工通信

    • 发送缓存准备发送的数据已发送但尚未收到确认的数据
    • 接受缓存按序到达但尚未被接受应用程序读取的数据不按序到达的数据

    ④:TCP面向字节流:TCP把应用程序交下来的数据看成仅仅是一连串的无结构的字节流

    • :流入到进程或从进程流出的字节序列

    在这里插入图片描述

    二:TCP报文段

    (1)TCP报文段

    TCP报文段:一个TCP报文段分为TCP首部TCP数据部分。整个TCP报文段作为IP数据报的数据部分被封装在IP数据报之中

    • CP首部的前20B是固定
    • TCP报文段的首部最短为20B,后面有4N字节是根据需要而增加的选项,通常长度为4B的整数倍

    在这里插入图片描述


    (2)TCP首部

    如下为TCP首部,各字段含义分别为

    • 源端口和目的端口(2B):端口是运输层与应用层的服务接口,运输层的复用和分用功能都要通过端口实现

    • 序号字段(4B):在一个TCP连接中传送的字节流中的每一个字节都按顺序编号,本字段表示本报文段所发送数据的第一个字节的序号

    • 确认号字段(4B):期望收到对方下一个报文段的第一个数据字节的序号。若确认号为 N N N,则证明到序号 N N N-1为止的所有数据都已正确收到

    • 数据偏移/首部长度(4位):是指TCP报文段的数据起始处距离TCP报文段的起始处有多远,以4B位单位,即1个数值是4B

    • 保留字段(6位):保留为今后使用,但目前应置为0,该字段可以忽略不计

    • 紧急位URGURG=1时, 标明此报文段中有紧急数据,是高优先级的数据,应尽快传送,不用在缓存里排队,配合紧急指针字段使用

    • 确认位ACK:只有当ACK=1确认号字段才有效;当ACK=0时,确认号无效。TCP规定:在连接建立后所有传送的报文段都必须把ACK置为1

    • 推送位PSHPSH=1时, 接收方尽快交付接收应用进程,不再等到缓存填满再向上交付

    • 复位RSTRST=1时, 表明TCP连接中出现严重差错,必须释放连接,然后再重新建立传输链接

    • 同步位SYNSYN=1时, 表明是一个连接请求/连接接受报文

    • 终止位FIN: FIN=1时, 表明此报文段发送方数据已发完,要求释放连接

    • 窗口(2B):指的是发送本报文段的一方的接收窗口,即现在允许对方发送的数据量

    • 校验和:检验首部+数据,检验时要加上12B伪首部,第四个字段为6

    • 紧急指针(16位)URG=1时才有意义,指出本报文段中紧急数据的字节数

    • 选项:最大报文段长度MSS、窗口扩大、时间戳、选择确认…

    • 填充字段:这是为了使整个首部长度是4B的整数倍

    在这里插入图片描述

  • 相关阅读:
    pytest学习和使用7-fixture参数scope作用域(范围)执行顺序
    生产者消费者模型
    多线程相关问题
    电路的基本原理
    VSCode在linux服务器下launch.json和tasks.json等文件配置
    掌动智能分析云性能监控的重要性
    Vue.extend()实现每个页面弹框
    21李沐动手学深度学习v2/读写文件,加载和保存张量
    1.1小程序内置tabbar和自定义tabbar区别
    Nginx 面试题 40 问
  • 原文地址:https://blog.csdn.net/qq_39183034/article/details/125542612