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

运输层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. 【Leetcode_easy】840. Magic Squares In Grid

    problem 840. Magic Squares In Grid solution: class Solution { public: int numMagicSquaresInside(vect ...

  2. 安装Windows和Ubuntu双系统

    发现关注消息 安装Windows和Ubuntu双系统     安装Windows和Ubuntu双系统 0.552016.12.10 15:54:41字数 2101阅读 6644 这几天开始动手做毕设啦 ...

  3. gluster设置日志级别

    glusterd --log-level WARNING #将日志级别设定为warning gluster --log-level=ERROR volume status #查看日志级别的状态 glu ...

  4. jenkins【目录】:目录

    jenkins[目录]:目录 GitLab 自动触发 Jenkins 构建 返回

  5. e.g. i.e. etc. et al. w.r.t. i.i.d.英文论文中的缩写语

    e.g. i.e. etc. et al. w.r.t. i.i.d. 用法:, e.g., || , i.e., || , etc. || et al., || w.r.t. || i.i.d. e ...

  6. Linux基础-11-rpm管理软件包

    1. 使用RPM安装及移除软件 1) RPM的定义:RPM就是Red Hat Package Manger(红帽软件包管理工具)的缩写. 2) rpm的文件名分为5部分,其中: 第1部分是name,表 ...

  7. PAT(B) 1081 检查密码(Java)

    题目链接:1081 检查密码 (15 point(s)) 题目描述 本题要求你帮助某网站的用户注册模块写一个密码合法性检查的小功能.该网站要求用户设置的密码必须由不少于6个字符组成,并且只能有英文字母 ...

  8. golang开发:环境篇(五)实时加载工具gin的使用

    gin 工具是golang开发中非常有用且有效的工具,有效的提高了开发调试go程序的效率. 为什么要使用gin 我们知道golang是编译型语言,这就表示go程序的每次改动,如果需要查看改动结果都必须 ...

  9. Windows上安装配置SSH教程(1)

    作者:feipeng8848 出处:https://www.cnblogs.com/feipeng8848/p/8559803.html 本站使用「署名 4.0 国际」创作共享协议,转载请在文章明显位 ...

  10. jdk8新特性--函数式接口的使用

    函数式接口的概念: 函数式接口的格式: 示例: 函数式接口的使用: 简化lambda表达式: