确认号啥时候有意义

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了确认号啥时候有意义相关的知识,希望对你有一定的参考价值。

参考技术A 【计算机通信网络复习】TCP协议 原创
2021-05-09 20:40:37

再不学习就会变成xzy姐姐那样!

码龄4年

关注
1. TCP协议的报文格式
TCP报文也称为报文段(segment),分首部和数据两部分。首部的前20个字节是固定的,后面是选项,因此TCP首部最小长度是20字节。选项部分长度可变,最多为40字节。
TCP协议报文格式
(1)源/目的端口(16bits),端口号加上IP地址构成了一个套接字socket。
(2)序号(32bits),本报文段发送数据第一个字节序号,使用随机数产生器产生一个初始序号。
(3)确认号(32bits),当ACK=1时有意义,当ACK=0时没有意义。期望收到对方下次发送数据第一个字节序号。(也就是期望收到的下一个报文段的首部中的序号)由于序号字段长度为32bit,可对4GB数据进行编号,以保证序号重复使用时,旧序号数据早已在网络中消失。
(4)数据偏移(4bits),它指出数据开始的地方离TCP报文段的起始处有多远,这是由于TCP报文中含有选项和填充字段。实际上就是TCP报文段首部的长度,其值所表示的距离单位是32比特(以4字节为一个单元来计算的)。
(5)保留(6bits),供今后使用,目前置为0。
(6)控制比特(6bits)
紧急位URG:URG=1时,报文应尽快传送(相当于加速数据),不按原来顺序来传送。要与紧急指针(Urgent Pointer)字段配合使用。紧急指针指出在本报文段中的紧急数据的最后一个字节的序号。紧急指针使接收方可以知道紧急数据有多长。
在这里插入图片描述
确认位ACK:ACK=1时有意义,代表这个数据包是响应数据包,与接收序号(确认序号)配合使用。
推送位PSH(PuSH):PSH=1时,当两个进程进行交互式通信时,一端应用进程希望在输入一个命令之后能够立即得到对方的响应,立即创建一个报文段发送到对方。
在这里插入图片描述
复位RST(ReSeT):RST=1时,表明出现严重差错,必须释放连接,然后再重建连接。还可以用来拒绝一个非法报文段或拒绝打开一个连接。
同步位SYN:在建立连接时使用;SYN=1且ACK=0时,表明这是连接请求报文段。对方若同意建立连接,则应在发回的报文段中SYN=1且ACK=1。因此,SYN=1,就表示这是一个连接请求或连接接受报文,而ACK位的值用来区分是哪一种报文(请求/接受)。
终止位FIN(FINal):FIN=1,表明发送字节已经发完,要求释放传输连接。
(7)窗口(16bits),用来控制对方发送的数据量。用接收方的接收能力来控制发送方的数据发送量,数值是动态变化的。
(8)校验和(32bits),包括首部和数据这两部分,要在TCP报文段的前面加上一个12字节伪首部。
TCP在校验前,需要根据IP数据包增加伪首部。伪首部增加了TCP校验和的检错能力:检查TCP报文是否收错了(目的IP地址)、传输层协议是否正确(传输层协议号)等。
在这里插入图片描述

(9)紧急指针(16bits),同时与URG位并用,指明紧急数据之后正常数据的起始位置。
(10)选项(0-40bits),单字节选项有两个:选项结束和无操作。多字节选项有三个:最大报文段长度、窗口扩大因子以及时间戳

2. TCP连接的建立与释放
2.1. TCP连接建立
(1)需要经过**“三次握手”**(Three-Way Handshake)。这是为了对每次发送的数据量进行跟踪与协商,确保数据段的发送和接收同步,根据所接收到的数据量而确认数据发送、接收完毕后何时撤消联系,并建立虚连接。
(2)TCP 连接建立的“三次握手”:
**最初,**客户端处于CLOSE(关闭)状态,服务器处于LISTEN(收听)状态。
第一次握手:客户端发送SYN包(seq=x, ack=y)到服务器,并进入SYN_SENT状态,等待服务器确认。
第二次握手:服务器收到客户端的SYN包必须确认,同时服务器也要发送SYN+ACK包(seq=y, ack=x+1);服务器进入SYN_RECV状态。
第三次握手:服务器收到客户端的SYN包必须确认,同时服务器也要发送SYN+ACK包(seq=y, ack=x+1);服务器进入SYN_RECV状态。
TCP连接的“三次握手”

2.2. TCP连接释放
(1)需要经过**“四次挥手”**(Four-Way Wavehand)。由于TCP连接是全双工的,因此每个方向都必须单独进行关闭。
(2)TCP 连接释放的“四次挥手”:
此时,客户端和服务器均处于ESTABLISHED状态。
第一次挥手:客户端向服务器发送FIN包(seq=u, ack=v),进入FIN_WAIT_1状态;u=客户端上次发送最后一个字节序号加1。
第二次挥手:服务器收到FIN包后不回复FIN包,而回复ACK包(seq=v, ack=u+1),v=服务器上次发送最后一个字节序号加1;服务器通知应用程序客户端要求关闭连接,服务器进入CLOSE_WAIT状态,即半关闭状态,此时客户端虽没有数据要发送,但服务器可能有数据要发送;客户端进入CLOSE_WAIT_2状态,且要等待一段时间。
第三次挥手:服务器将最后的数据发送完毕后,向客户端发送FIN包(seq=w, ack=u+1),由于在半关闭状态,服务器很可能又发送了一些数据,假定此时的序列号为seq=w;服务器进入LAST_ACK状态,等待客户端确认。
第四次挥手:客户端收到FIN包后,向服务器发送ACK包(seq=u+1, ack=w+1),表示连接彻底释放。
在这里插入图片描述

3. TCP协议流量控制、拥塞控制
(1)TCP不是按传送的报文段编号。TCP将所要传送的整个报文(可能包括多个报文段)看成是由一个个字节组成的数据流,然后对每一个字节编号。在连接建立时,双方商定初始序号。TCP将每一次传送的报文段中的第一个数据字节的序号放在TCP首部的序号字段中。TCP的确认是对接收到的数据的最高序号(即收到的数据流中的最后一个序号)表示确认。但返回的确认序号是已收到的数据的最高序号加1。也就是确认序号即表示期望下次收到的第一个数据字节的序号。
(2)TCP采用滑动窗口方式进行流量控制。窗口大小以字节为单位。TCP报文段首部窗口字段的数值是当前设定的接收窗口数值。发送窗口在连接建立时由双方商定,但在通信的过程中,接收方可根据自己的资源情况,随时动态地调整接收窗口的大小,然后告诉发送方,使发送方的窗口和自己的接收窗口一致。
在这里插入图片描述
(3)拥塞控制用于防止由于过多的报文进入网络,而造成路由器与链路过载。
拥塞窗口:源端一次最多能发送的数据包数量。
门限窗口:拥塞窗口按指数增长还是线性增长的界限。
拥塞控制技术:
慢开始:每出现一次拥塞超时,拥塞窗口都降低到1。
拥塞避免:当拥塞窗口增大到门限窗口值时,就将拥塞窗口指数增长速度降低为线性增长,避免网络再次出现拥塞。
加速递减:每出现一次拥塞超时,就将门限窗口值减半。
在这里插入图片描述
TCP每发送一个报文段,就设置一次定时器。只要定时器设置的重发时间已到而没有收到确认,就要重发这一报文段。计算往返时延的自适应算法(加权法):
在这里插入图片描述

文章知识点与官方知识档案匹配
网络技能树跨区域网络的通信学习网络层的作用
22781 人正在系统学习中
打开CSDN APP,看更多技术内容

TCP中的RST标志(Reset)详解_大叶子不小的博客_rst状态
RST表示复位,用来异常的关闭连接,在TCP的设计中它是不可或缺的。就像上面说的一样,发送RST包关闭连接时,不必等缓冲区的包都发出去(不像上面的FIN包),直接就丢弃缓存区的包发送RST包。而接收端收到RST包后,也不必发送ACK包来确认。
继续访问
TCP详解_binary~的博客_tcp 详解
复位RST(ReSeT) 当 RST=1 时,表明 TCP 连接中出现严重差错(如由于主机崩溃或其他原因),必须释放连接,然后再重新建立运输连接 同步SYN(SYNnchronization) 在连接建立时用来同步序号。当 SYN=1 而 ACK=0 时,表明这是一个连接请求报文...
继续访问
TCP 四种定时器(重传定时器,坚持计时器,保活定时器,时间等待计时器)
主要介绍了TCP 四种定时器,重传定时器,坚持计时器,保活定时器,时间等待计时器的相关资料,需要的朋友可以参考下
TCP协议的RST标志位
TCP首部字段有6个是flags,每个标志位有特殊的含义,它们可以单独存在,也可以同时存在。对于接收方,不同的标志位代表不同的意思,需要做正确的处理 Flags 可以在点击以太网报文结构查看各协议层协议首部字段及其含义 TCP协议首部格式 上图标注的红圈里有6个标志位,每个标志位占用一个比特 URG 紧急指针有效标识。它告诉系统此报文段中有紧急数据,应尽快传送(相当于高优先级的数据) ACK 确认序号有效标识。只有当ACK=1时确认号字段才有效。当ACK=0时,确认号无效 PSH 标识接收方.
继续访问

TCP基础_yao00037的博客_tcp rst位为1时
RST:该位为1时,表示TCP连接中出现异常必须强制断开连接。 SYN:该位为1时,表示希望建立连接,并在其序列号的字段进行序列号初始值的设定。 FIN:该位为1时,表示今后不会再有数据发送,希望断开连接。当通信结束希望断开连接时,通信双方...
继续访问
TCP的连接状态标识 (SYN, FIN, ACK, PSH, RST, URG)
TCP层,有个FLAGS字段,这个字段有以下几个标识:SYN, FIN, ACK, PSH, RST, URG.其中,对于我们日常的分析有用的就是前面的五个字段。它们的含义是:(1)SYN表示建立连接,(2)FIN表示关闭连接,(3)ACK表示响应,(4)PSH表示有 DATA...
继续访问
计算机网络
1.网络协议
继续访问

最新发布 TCP协议
7.缓冲区:操作系统会给每个进程分配空间,每创建一个套接字就会给套接字分配一个发送和接受缓冲区。sendto就是从发送缓冲区里拷贝数据,recvfrom从接受缓冲区拷贝数据 查看接受缓冲区和发送缓冲区的大小:getsocket(sock,lebvel,optval,optlen);65536 64K sendto:阻塞模式:如果缓冲区里没有足够的空间,就等到空间足够大正在把数据拷贝到发送缓冲区中 非阻塞模式:如果缓冲区没有足够的空间就有多少拷贝多少,拷贝完立即返回,返回的是实际拷贝的字节数 //1.
继续访问

计算机网络-TCP/IP_纯情程序猿的博客_计算机网络tcp/ip
PSH(Push 推送位):告诉对方收到该报文段后是否立即把数据推送给上层。如果值为 1,表示应当立即把数据提交给上层,而不是缓存起来。 RST(复位):表示是否重置连接。如果 RST=1,说明 TCP 连接出现了严重错误(如主机崩溃),必须释放连接,...
继续访问
TCP解析_越学习越无知的博客_tcp解析
RST (ReSeT): 当 RST=1 时,表明 TCP 连接中出现严重差错(如由于主机崩溃或其他原因),必须释放连接,然后再重新建立运输连接 同步SYN: 同步 SYN = 1 表示这是一个连接请求或连接接受报文 ...
继续访问
TCP数据报首部
源端口(Source Port),目标端口(Destination Port) 各2字节 源端口号,标识主机上发起传送的应用程序;目的端口标识主机上传送要到达的应用程序。源端和目的端的端口号,用于寻找发端和收端应用进程。这两个值加上I P首部中的源端I P地址和目的端I P地址唯一确定一个TCP连接。一个I P地址和一个端口号有时也称为...
继续访问
TCP协议的确认重传机制
TCP协议是面向连接的传输层协议,TCP的传输特点具有可靠性,它具有面向连接服务来确保可靠稳定传输,而确认重传机制是TCP协议保证可靠稳定传输最重要的机制,他包括累计确认、超时时间计算、快速重传等几个方面。 确认重传机制 在发送一个数据之后,就开启一个定时器,若是在这个时间内没有收到发送数据的ACK确认报文,则对该报文进行重传,在达到一定次数还没有成功时放弃并发送一个复位信号。 ...
继续访问
17-tcp首部分析二_songly_的博客
  RST:表示重建或重置,如果RST = 1表示tcp连接出现严重的错误(主机崩溃或其他原因),必须先释放连接,然后再重新建立连接。同时RST还可以用于拒绝一个非法报文段或拒绝打开一个连接。   SYN:表示在建立连接时同步序号,如果SYN ...
继续访问
【TCP/IP详解】TCP重置报文段及RST常见场景分析
本文简单讲述了TCP中产生RST的常见场景,指出了产生`RST`的三个条件分别是:1. 目的地为某端口的`SYN`到达,然而在该端口上并没有正在监听的服务器;2. TCP想取消一个已有连接;3. TCP接收到一个根本不存在的连接上的分节。并给出了程序代码及抓包结果......
继续访问
网络相关的面试题
网络相关的面试题 服务器端不调用accept会发生什么 不调用accept时,也能建立连接,即三次握手完成。但不能进行API的控制,即不能进行继续通讯。以及建立好连接的队列大大小为:backlog。从而在Unix系统服务器中,若客户端调用 connect() ,客户端连接超时失败。而在Linux系统中,若客户端调用 connect()。TCP 的连接队列满后,Linux 服务器不会拒绝连...
继续访问
网络编程面试题整理(四)
1:重传机制 TCP每发送一个报文段,就设置一次定时器。只要定时器设置的重发时间到而还没有收到确认,就要重发这一报文段。 TCP环境报文往返时间不定、有很大差别。 A、B在一个局域网络,往返时延很小 A、C在一个互联网内,往返时延很大 因此,A很难确定一个固定的、与B、C通信都适用的定时器时间。 TCP采用了一种自适应算法。这种算法记录每一个报文段发出的时间,以及收到相应的确认报文段的时间。...
继续访问
TCP的状态:SYN, FIN, ACK, PSH, RST, URG 简介及 ACK确认机制
1、TCP的状态FLAGS字段状态 在TCP层,有个FLAGS字段,这个字段有以下几个标识:SYN, FIN, ACK, PSH, RST, URG. 对于我们日常的分析有用的就是前面的五个字段:它们的含义是: SYN表示建立连接, FIN表示关闭连接, ACK表示响应, PSH表示有 DATA数据传输, RST表示连接重置。 其中,ACK是可能与SYN,FIN等同时使用的,比如:SYN和ACK可能同时为1,它表示的就是建立连接之后的响应,如果只是单个的一个SYN,它表示的只是建立连接。T..
继续访问
TCP/IP模型之传输层(TCP/UDP协议)
网络层,数据链路层与物理层实现了网络中主机之间的数据通信,计算机网络的本质活动是实现分布在不同地理位置的主机之间的进程通信,以实现应用层的各种网络服务功能。1. 传输层的功能传输层的主要功能是实现分布式进程之间的通信。利用网络层提供的服务,在源主机的应用进程与目的主机的应用进程建立“端—端”连接。传输层之间传输的报文称为“传输协议数据单元(TPDU)”,TPDU有效载荷称为应用层的数据。2. 端口...
继续访问
TCP选项
TCP首部可以由多达40字节的可选信息。选项用于把附加信息传递给终点,或用来填充对齐其他选项。我们将定义两大类选项:1字节选项和多字节选项。第一类选项包括两种选项:选项列表结束和误操作。在大多数实现中,第二类选项包括了五种选项:最大报文段长度、窗口扩大因子、时间戳、允许SACK和SACK,见下图。 选项结束(EOF) 选项结束(end of optio...
继续访问
3.TCP协议头详解(包含选项部分)
1.TCP协议头格式 2.各字段说明 3.选项部分详解
继续访问

TCP报文段首部中“窗口”字段
在TCP报文段的首部中有一个“窗口大小”的字段,该字段占16bit=2byte。该字段主要用于TCP滑动窗口进行流量控制,很多人喜欢把TCP的MSS和“窗口大小”字段混淆,今天在这了做一个区分说明。 MSS是TCP报文段中数据部分的最大长度,如果上层交付下来的数据超过MSS就要对交付下来的数据进行分段。在TCP连接的第一次、第二次握手中会分别告知对方MSS,从而起到通信双方协商MSS的效果。
继续访问
论TCP/IP协议的体系的结构及其各层协议
目录 1.1 TCP/IP协议的历史和发展过程 1.2 TCP/IP协议的体系结构模型 2.1 IP网际层的功能 2.2 IP地址及其转换 2.2.1 IP地址 2.2.2 IP地址的转换 2.2.3 子网技术 2.3 IP数据报的格式 2.4 Internet控制报文协议ICMP 3.1 TCP运输层协议概述 3.2 端口及套接字 3.3
继续访问
计算机网络——传输层
一、传输层提供的服务1.传输层的功能(1)提高服务质量(2)多路复用(3)分段与重新组装。2.传输层寻址与端口硬件端口是不同硬件设备进行交互的接口,而软件端口是应用层的各种协议进程与传输实体进行层间交互的一种地址。无连接服务与面向连接服务面向连接服务就是在数据交换之前,必须先建立连接,当数据交换结束后,则应该终止这个连接。在无连接服务的情况下,两个实体之间的通信不需要先建立好一个连接,因此其下层的有
继续访问
热门推荐 TCP序列号和确认号详解
TCP序列号和确认号详解在网络分析中,读懂TCP序列号和确认号在的变化趋势,可以帮助我们学习TCP协议以及排查通讯故障,如通过查看序列号和确认号可以确定数据传输是否乱序。但我在查阅了当前很多资料后发现,它们大多只简单介绍了TCP通讯的过程,并没有对序列号和确认号进行详细介绍,结合实例的讲解就更没有了。近段时间由于工作的原因,需要对TCP的序列号和确认号进行深入学习,下面便是我学习后的一些知识点总结
继续访问
TCP传输中序号与确认序号的交互
本实验通过SSH远程登录服务器,然后使用Wireshark抓包分析。开头的三次握手已经省略。关于序号的交互过程,需要记住一点:TCP首部中的确认序号表示已成功收到字节,但还不包含确认序号所指的字节,希望下一次能收到确认序号所指的字节。 当在远程登录软件上键入命令时,客户端便开始了数据的发送,TCP头如下: 初始化序列号ISN = 1,这个序列号是客户端对发送数据的一个标
继续访问
tcp保留字段重置为rst=1则表示

以上是关于确认号啥时候有意义的主要内容,如果未能解决你的问题,请参考以下文章

log都有哪些物理意义?

Lava是啥?为啥说Lava做的是有意义的事?

Web前端密码加密是不是有意义

《代码整洁之道》之二 有意义的命名

编写高质量代码改善C#程序的157个建议——建议142:总是提供有意义的命名

在Web Api中使用ViewModel是否有意义?