写在前面:本文章是针对《计算机网络第七版》的学习笔记

运输层1——运输层协议概述

运输层2——用户数据报协议UDP

运输层3——传输控制协议TCP概述

运输层4——TCP可靠运输的工作原理

运输层5——TCP报文段的首部格式

运输层6——TCP可靠传输的实现

运输层7——TCP的流量控制和拥塞控制

运输层8——TCP运输连接管理

TCP虽然是面向字节流的,但是TCP传输的数据单元却是报文段。一个报文段可以分为首部和数据两部分。

TCP报文段的首部的前20个字节是固定的,后面的4n字节是需要增加的选项。因此TCP首部的最小长度是20字节。

首部部分字段的意义如下:

  • 源端口和目的端口:各占2个字节,分别写入源端口号和目的端口号。TCP的分用功能也是通过端口号实现的。

  • 序号:占4字节。在TCP连接中传送的字节流中的每一个字节都按照顺序编号。首部中的序号字段值则代表本报文段所发送的数据的第一个字节的序号。

  • 确认号:占4字节。代表期望收到对方下一个报文段的第一个数据字节的序号。需要注意:

    若确认号=N,则表明:到序号N-1为止的所有数据都已正确收到

  • 数据偏移:占4位。他指出TCP报文段的数据起始处距离TCP报文段的起始处有多远。一般情况下为20字节,但是首部中还有不确定的选项字段。它的单位是4字节,而它的最大值是15,因此数据偏移最大值为60字节,也就是说选项不能超过40字节。

  • 保留:占6位。以防后续使用。

    下面是6个控制位,每个占一位:

  • 紧急URG:当URG=1时,表明紧急字段有效,它告诉系统此报文中有紧急数据,应该尽快传送。

  • 确认ACK:仅当ACK=1时确认号字段才有效。

  • 推送PSH:当两个应用进程进行交互式的通信时,有时一端的应用进程希望在键入一个命令后立即就能收到对方的相应,这时设置PSH=1。

  • 复位RST:当RST=1时,表明TCP连接中出现严重错误,必须释放连接,再重新建立运输连接。RST=1还可以用来拒绝一个非法的报文段或拒绝打开一个连接。

  • 同步SYN:在建立连接时用来同步序号。当SYN=1,ACK=0时代表是连接请求报文段。若对方同意建立连接,则应在相应报文段中使SYN=1,ACK=1。也就是说,SYN=1代表连接请求或者连接接受报文。

  • 终止FIN。用于释放一个连接。当FIN=1时,代表此报文段的发送方的数据已发送完毕,并且请求释放运输连接。

    控制位到这结束。

  • 窗口:占2字节。窗口值告诉对方:从本报文段中的确认号算起,接收方目前允许对方发送的数据量(以字节为单位)。之所以设置这个限制,是因为接收方的数据缓存空间是有限的。总之,窗口值作为接收方让发送方设置其窗口大小的依据。

  • 检验和:占2字节。检验的范围包括首部字段和数据字段。和UDP检验的方法一样,只不过把伪首部第四个字段的17改成6.

  • 紧急指针:占2字节。只有在紧急URG=1时才有效,它指出本报文段中的紧急数据的字节数。

  • 选项:长度可变,最大40字节

    TCP最初只规定了一种选项,即最大报文长度MSS。MSS是每一个TCP报文段中的数据字段的最大长度,而并不是整个TCP报文段的长度。

运输层5——TCP报文段的首部格式的更多相关文章

  1. 计算机网络(8)-----TCP报文段的首部格式

    TCP报文段的首部格式 概述 TCP报文段首部的前20个字节是固定的,因此TCP首部的最小长度是20字节. 源端口和目标端口 各占2个字节,分别写入源端口号和目的端口号. 序列号 占4个字节,表示本报 ...

  2. TCP报文段的首部格式 20字节的固定首部

    <----  IP首部 TCP首部 TCP报文段的数据部分  <---- 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 ...

  3. TCP报文段的首部格式

    首部20个字节的的固定部分,40个字节的可选部分 (1)源端口和目的端口 (2)序号(是字节流的编号,0-2^32-1),如果超过了mod2^32 (3)确认号:目的主机希望源主机收到的下一个字节序号 ...

  4. 计算机网络传输层之TCP协议(tcp协议特点、tcp报文段首部格式、tcp连接建立---三次握手、tcp连接释放---四次握手)

    文章转自:https://blog.csdn.net/weixin_43914604/article/details/105516090 学习课程:<2019王道考研计算机网络> 学习目的 ...

  5. 详解TCP和UDP数据段的首部格式

    TCP数据段的首部格式: 源端口号(16) 目的端口号(16) 序列号(32) 确认应答号(32) 数据偏移(4) 保留(6) 代码位(6) 窗口(16) 校验和(16) 紧急指针 选项(长度可变) ...

  6. 一个TCP报文段的数据部分最多为多少个字节,为什么

    IP数据报的最大长度=2^16-1=65535(字节)TCP报文段的数据部分=IP数据报的最大长度-IP数据报的首部-TCP报文段的首部=65535-20-20=65495(字节) 一个tcp报文段的 ...

  7. TCP报文段首部格式详解

    TCP首部格式   格式字段详解   源端口.目标端口: 计算机上的进程要和其他进程通信是要通过计算机端口的,而一个计算机端口某个时刻只能被一个进程占用,所以通过指定源端口和目标端口,就可以知道是哪两 ...

  8. TCP报文格式和三次握手——三次握手三个tcp包(header+data),此外,TCP 报文段中的数据部分是可选的,在一个连接建立和一个连接终止时,双方交换的报文段仅有 TCP 首部。

    from:https://blog.csdn.net/mary19920410/article/details/58030147 TCP报文是TCP层传输的数据单元,也叫报文段. 1.端口号:用来标识 ...

  9. TCP报文段首部详解

    TCP虽然是面向字节流的,但是tcp传送的数据单元却是报文段,一个报文段分为首部和数据两部分,几乎TCP所有功能都从首部来体现,下面我们来详细的剖析下它的首部. (1):源端口与目标端口:分别写入源端 ...

随机推荐

  1. xray写POC踩坑

    错误记录 静态文件目录不一定是static. 只考虑了linux的情况,如果是 windows 呢,能读取某些应用自己的源码吗. 实际环境参数不一定是id,thinkphp 不适合使用 poc 来写 ...

  2. AI - TensorFlow - 示例04:过拟合与欠拟合

    过拟合与欠拟合(Overfitting and underfitting) 官网示例:https://www.tensorflow.org/tutorials/keras/overfit_and_un ...

  3. 读取以key=value形式存储的txt文件

    代码片段(假设只有3个key=value): public static void main(String[] args) throws IOException { BufferedReader br ...

  4. [转帖]微软击败亚马逊 赢得五角大楼的100亿美元JEDI云合同

    微软击败亚马逊 赢得五角大楼的100亿美元JEDI云合同 https://www.cnbeta.com/articles/tech/903507.htm 微软Azure的胜利 国防部证实,美国政府已向 ...

  5. (十六)springMvc 补充

    文章目录 数据回显 `@ModelAttribute` && `@SessionAttributes` 注解 数据回显 对 pojo 数据回显的支持 ,springMvc 会默认的将传 ...

  6. Linux大道——博客目录

      Linux基础 第一章 计算机基础 计算机基础 网络基础 第二章 Linux基础

  7. WUSTOJ 1313: 数列(Java)进制转换

    题目链接:

  8. Qt更新组件出现(“要继续此操作,至少需要一个有效且已启用的储存库”)

    Qt更新组件出现(“要继续此操作,至少需要一个有效且已启用的储存库”)   目的: 当时在安装Qt时,有些组件暂时没用着,然后过一段时间后,需要用到某些该组件时,不用删掉重新再安装. 操作: Wind ...

  9. Delphi XE10.1 引用计数(Delphi XE10.1 Berlin终于增加了对接口的Weak, UnSafe的支持)

    以往的Delphi版本,不支持接口的Weak,和UnSafe的引用,支持对象的Weak, UnSafe,而且仅在Android和Ios平台上支持. 现在Delphi XE10.1 Berlin终于增加 ...

  10. springboot笔记02——快速入门quickstart

    前言 学习一个新的框架,往往会用一个quickstart快速入门,这次就写一下springboot的quickstart程序. 开发环境 JDK 1.8 Springboot 2.1.6 Maven ...