最后更新:2021-12-28 03:36:04 手机定位技术交流文章
TCP 连接由4年、2个IP 地址和1个端口号组成。 更具体地说, TCP 连接由一对端点或带组成,每对端点或带由一对(IP 地址、端口号)单独指定。
TCP连接往往分为三个阶段:连接设置、数据传输(已建立连接)和连接关闭。下文将详细介绍TCP连接的创建和关闭过程。
解释术语(说明将沿着这些行进行,尽管以上情况不会如此),应写上阿克=K+1,而不是阿克=K+1:
SYN:标志位。
FIN:标志位。
ACK:标志位。
Ack:确认安全和确认号。
Seq: 数据区号,也称为序号。
连接过程:
解释两个序号:
(... , Ack-1]另一种解释是,Seq,或者你预期会收到的下一个群体,也是Ack,或者你预期包括的下一个群体。[Ack , ...)的Data。[Seq , ...)当数据传输正常时,Seq将和另一方传送的最后一组的Ack相同;在这种情况下,可以争辩说,它只是恰巧发送了另一方预期的该组(或序号)。三次握手的目的:
关闭过程:
由于TCP的双重工作通信能力,它提供半封闭的通信能力,TCP半封闭程序表明,数据流只有一个传输方向关闭,而另一边则继续发送数据直到关闭。
Berkeley 软件包的 API 支持半关闭操作: 应用程序可以使用关闭方法, 而不是近距离功能 。
前述过程的几个阶段:被动关闭继续在短期内传输数据。
同时打开程序需要四块,但如下图所示,中间两部分可以合并。
同时,结束程序仍然需要四个条款,它们只是相互参照。
当一个连接打开时,每条电文的IP地址、端口号、逻辑序列号(即幻灯片窗口)正确无误,对方将获得准确的核实。另一方面,延迟抵达部分的序号可能在幻灯片窗口中。这会造成一些问题。为了解决这个问题,我们必须在挑选序列号时谨慎行事。
由于第一个序列号随时间而变化,每个连接都有一个新的初始序列号。
(服务器:80) (客户-终端 IP:客户-终端端口)和(客户b的IP地址:客户b的端口:服务器:80)这四组的原始序号并不重叠。(服务器:80) (客户-终端 IP:客户-终端端口)关闭它几分钟,然后客户端 重新连接到服务器,所以..(服务器:80) (客户-终端 IP:客户-终端端口)它已经重新开业两次了 给你两个样本服务器关闭是一个常规事件。 因为 TCP 客户端在发送 SYN 软件包后没有得到所需的 ACK, 它将继续经常发送 SYN 软件包 。
如上文所述,期限为三秒、六秒、十二秒,称为指数后退。
最初SYN的传输次数,通常为5次。
每个首选字节都包含种类。 前两个选项只需要一个字节, 即该类型字节。 其他选项将根据它们的种类决定字节数量 。
因为 TCP 头的整数是32位数的两倍, 当使用 TCP 选项时, NOP 用于填充它, 而 EOL 则用于在结尾处填充它 。
Maximum Segment Size,即MSS。《TCP协定》允许从另一方收到的最长报告期称为管理支助科。这个长度,实际上,它指的是TCP有效载荷协议的最长期限。因此,它排除了TCP和IP头的长度。
如上文所述,前两次握手三次,第一次,这台计算机告知100度一,我的笔记本电脑将获得1460 MSS,一旦这一信息为100度受众所知,每次将数据插入TCP协议时,将最多提供1460 字节的数据。
如果不发出警告, MMS 默认值为536 字节。
除了标准的累积确认之外,TCP将提供确认的选择。
接收方利用SACK传送数据接收不规则,使发送者能够有效地重新发送数据。
在建立 TCP 连接时, 端点之一可能会使用 Windows 比例( 即窗口的缩放选择) 来指定接收窗口的大小 。
这个系统首次给Windows屏幕八 三次握手, 基数是八。
2
8
2^8
2
8
。
这个系统在三个握手器中的第一个中提供了 Windows 512, 因此这台计算机的最终接收窗口是 512*。
2
8
2^8
2
8
=13,1072. 这是上面显示的计算窗口大小 。
TSOPT是时间戳的选择。
TCP在任何特定时间都有自己的两端时间邮票,但它们没有彼此捆绑,也不需要两个主机之间的时钟同步。
如上文所述,发送者现在可以通过提供ACK的数据来估计TCP连接的时间。
TCP连接的预期返回时间大多用于确定重新传送的时限,时间标记有助于我们估计重新传送需要多长时间。
时间戳选项还帮助 TCP 接收器避免接收过期信息。 它被称为 PAWS( 保护安全号码不受断裂影响 ) 。
TCP的结构显示,总序列号仅为32比特,然而,TCP作为一项以字节为基础的协议,将继续将数据传输到32比特范围以外,然后以0作为序号重新开始。
作为32比特序列号的延伸 我们可以回到序列号上
指定 TCP 发件人愿意在确认接收者未成功接收数据之前等待ACK确认数据的时间。
目标是改进和取代以前的TCP-MD5技术[RCC 2385]。
路径的最大传输单位(最大传输单位, MTU) -- -- 在两个主机之间运行的所有网络信息中最大传输单位的最小值。
了解路径的最大传输单位 可能有助于防止TCP破碎。
在建立连接时,TCP最少使用对方在谈话期间提供的外部接口的最大传输单位或最大段尺寸(SMSS)。
联系的两面的运输、运输、运输、运输、运输、运输、运输、运输、运输、运输、运输、运输、运输、运输、运输、运输、运输、运输、运输、运输等可能有所不同。
在确定发送者 MTU 的起始值后, TCP 提供的每一份 IPv4 数据报告将设置 DF 字段。 不允许拆分 。
MTU是数据链层协议有效载荷规模的价值,而MSS是TCP协议有效载荷规模的价值。
一开始,你必须记得流程图。
流程图可用于推断该状态转换图的转换。 不过,这里应该提到一些具体的变换:
上述被动关闭方法说明如下:
积极关闭缔约方的方法如下(主动关闭方在发送FIN后输入FIN_WAIT_1):
主动关闭方在时间现状,会等待2个MSL的时间(最大段生存期,Maximum Segment Lifetime)。
时间现状存在的原因:
时间现状需要等待两个MSL的原因:
时间现状会使得一个连接在2个MSL的时间内,不能重新使用。连接是指一个4元祖(源ip、源端口、目的ip、目的端口)。
服务器断开的示例 :
sock -v -s 6666因此,服务器对66个港口进行了监测。sock -v -s 66664岁,4岁,4岁,4岁,4岁,4岁,4岁,4岁,4岁,4岁,4岁,4岁,4岁,4岁,4岁,4岁,4岁,4岁,4岁,4岁,4岁,4岁,4岁,4岁,4岁192.168.10.144),和66(即指挥线参数)、全球端口和共同港口sock -v -s 6666了。客户断开的一个例子:
-b 2091参数, 您是否想要通过重用先前使用的 2091 随机端口恢复此连接? 提示地址已经被主张 。通过添加参数-A,可以无视重新开始的连接是处于时间现状下的。(这条在linux上可以,在Windows上不行)
理论上,在关闭了一半的连接后,发出四波波:
如果活跃的关闭方 无法等待对方的FIN,那么可能会一直处于FIN_WAIT_2。在完全终止操作后(例如,关闭功能已完全禁用)。此外,关闭功能履行半关闭行动)我帮你定一个计时器然后,加班费将转到《关闭电路公约》的地位。
当TCP确定该条目的抵达不适合连接时,它会发送替换的RST。 RST可能导致TCP连接的快速中断。

终止释放有两个主要特征:
将 " 保持近距离 " 软件包选项(SO_Linger)设定为零,从而终止释放。
TCP建立连接后,其中一方,也许是客户 意外地破坏了主机在这一点上,信息不会转让给另一方(可能是服务器)。这样,就产生了半开连接。而且,数据根本不是由对方发送的。如果我使用保存的选项,我永远找不到它 如果我不使用保存的选项,我永远不会发现它。则可以发现)。
TCP 连接仍然被当事人认为是合法的,在发送崩溃后,该当事人并未失败,而此时它传输了一些数据。 数据到达了坠毁方,而坠毁方将有一个硬面,并发送 RST 重置连接 。
在时间现状中,需要等够2MSL的时间。但在这段时间内,主动关闭方如果收到一些报文段比如RST,就会提前结束掉TIME_WAIT而到达CLOSED。
上图,时间现状中,收到了一个旧数据包Seq = L -100, Ack = K -200,然后客户返回新的序列号Ack = L不幸的是,由于服务器目前处于封闭状态, RST 将会被退回。 RST 将导致活跃的关闭方提前进入关闭状态, 从而引发问题 。
如上图所示,2MSL大大超过作为问题主要根源的RRT(即前后一次),该党的积极关闭时间明显更长。
许多系统会规定在时间现状中,忽略RST,这就避免了问题。
当请求新建连接以到达服务器时, 服务器将获得连接, 并调用新进程或线索来处理新客户端 。
现在有一个拥有双向 IPv4 和 IPv6 仓库的主机, 运行安全 shed 服务器 sshd 。
Netstat 命令行选项 :
-a报告所有网络节点,无论是否在名单中。-n此选项将 IP 地址打印为小数点位数, 而不是使用 DNS 将其转换为域名。 它还打印端口号 。-t只选择TCP节点。节点解析:
:::22通配符地址和本地端口 22 代表服务器(如果服务器是多主机, 可能是单独的 IP 地址) 和服务器使用 。:::*可接受客户查询包括:通配符地址、通配符端口。
目前,服务器有两个连接,一个监听 TCP 软件包和一个已建立的 TCP 软件包。 人们注意到,两套服务器的同一侧有22个端口,但所建的IP 地址已经确定。
如果服务器只有一个网络接口,结果应如上图所示。设立、设立、设立、 设立、 设立、 设立、 设立、 设立、 设立在服务器的这一边, 二进制组相同 。这是因为这是同一个东道主 向客户提出的要求因此,IP地址是相同的;然而,由于每个连接都使用不同的端口,所以端口不一样。
为了获得案文,TCP对这名4岁儿童进行了多路拆解。在 Listen 行接收 SYN 邮件不可行 。您可以使用创建的合成来从非 SYN 获取正常数据 。而上图有设立、设立、设立、 设立、 设立、 设立、 设立、 设立、 设立然后通过源IP和源端端口解析数据。
如果服务器是一个多主机, 服务器的这一侧将会有一个以上的IP地址, 如上所示 。
sock命令使用-s如果使用参数时遵循 ip 地址,则提供服务器的具体 ip 地址,且无法向多个主机的不同 ip 地址普及。
UDP 服务器不仅可以提供本地IP地址和端口(如前一章所测试的),还可以提供客户的IP地址和端口。 但是标准伯克利组合API不允许这样的功能。
由于服务器为每个客户端指定了一个新的进程或线条,服务器可以平行运行,确保监听服务器始终准备处理下一个连接请求。
在应用程序承认之前,服务器上有两个状态的新连接 :
两个州的新连接分两个不同的队列。
在 Linux 中应用以下规则 :
net.ipv4.tcp_max_syn_backlog这个数值。net.core.somaxconn这个数值。SYN洪水袭击是TCP拒绝服务袭击的一种类型。在这种攻击中,服务器将受到SYN(首次握手)要求的轰炸。但是,客户不会得到一个ACK(第三次握手)。另一方面,服务器将为每个SYN_RCVD连接分配资源。当这种半开放连接被过度使用时,服务器的资源就耗尽了。
RFC 4987中有一份声明说:
Per RFC 793, when a SYN is received for a local TCP port where connection is in the LISTEN state, then the state transitions to SYN-RECEIVED, and some of the TCB is initialized with information from the header fields of the received SYN segment.
如上文所述,窃听将按客户SYN袋头字段分配,但服务器不再分配资源,而是在这些SYN袋头字段编码。ISN(s)三次尝试后客户会接受握手ISN(s)+1通过它,服务器就可以使用它。ISN(s)在最初的握手时, 将SYN包的头字段倒转。 这个反攻击策略被称为 SYN cookies 。
袭击者用极小的 MTU 价值伪造了IPC PTB 信息( 包太大 ) 。 结果,当IPC PTB信息结束时,有效载荷只能用很小的数据填充,从而大幅降低性能。
当IPCMP PTB 消息的下一个 MTU 跳跃小于 576 字节时, 主机的 MTU 可能被禁用 。
知道连接双方的序列号 足以被劫持
如上所述,如果B在攻击者攻击后向A提供包件,A假定包件已被接受并将被放弃,因此A上的滑动窗口将永不前进。 当然,除非B发送一个。seq=b, len=100和一个seq=b+100, len=z,这样我们可以重新定位幻灯片窗口。但即使这种情况下,这导致 A 接受错误字节 。(这只是我理解的基本劫持概念。 )如有出入请告知)。然而,虽然袭击者知道双方预测的序列号,但他们不知道序列号是什么。因此,攻击者很容易继续接受双方不正确的字节流动。
本文由 在线网速测试 整理编辑,转载请注明出处。