最后更新:2021-10-18 23:58:08 手机定位技术交流文章
客户端随机初始化序列号( client_isn), 将序列号设置在 TCP 第一部分的编号字段中, 并将 SYN 标记设置为 1 以表示 SYN 消息。 然后, 将第一个 SYN 消息发送到服务器, 表示连接已建立到服务, 其中不包括应用程序级别上的数据, 客户端处于 SYN- SENT 状态 。
收到客户端 SYN 信息后,该服务首先随机初始化其序列号(server_isn),在 TCP 第一部分的编号字段中填入此序列号,然后将 TCP 第一部分的确认回答字段填入cliet_isn + 1,然后在 1 中填入 SYN 和ACK 信号的位置。
收到服务信息后,客户对服务的最后回复做出回复,首先对 TCP 最初的 ACK 签名位置 1 做出回复,然后确认响应编号字段以服务器_isn+1 的形式填充,最后将信息发送到服务处,服务处可以将客户的数据传送到服务器,客户处于建立状态。当服务器收到客户的回复时,服务器同样被标为已建立状态。
客户不断传递许多与SYN连接的信息,如果网络堵塞:
因此,TCP用来建立联系的三个握手的主要理由是防止历史联系启动连接。
序列号的作用
在TCP连接中,序列号是极为重要的,因此当客户发送带有初始序列号的SYN信息时,需要这种服务来回回ACK回复,表明服务成功接收了客户SYN信息,虽然服务向客户提供初始序列号,但服务仍需要收到客户的答复,因此,在TCP连接中,单一答复可以确保必要号码的准确同步,因此,当客户发送带有初始序列号的SYN信息时,需要这种服务来回回ACK回复,表明服务成功接收客户SYN信息,虽然服务正在向客户提供初始序列号,但服务仍需要收到客户的答复,因此,单一答复可以确保准确同步。
如果只有两只握手,而客户SYN想要连接到网络,但没有获得ACK信息,SYN将重新发送。服务器不知道客户是否得到了在没有第三次握手的情况下为创建连接而提供的ACK确认信号,因此每个SYN仅主动收到一个SYN。如果客户SYN封住并不断发送许多SYN信息,服务器将建立一个多余的无效连接,浪费资源。
如果已取消的连接被再利用,但先前链接的历史信息仍留在网络中,序列号不变,那么很难确定它是否是一个历史信息,如果它被新连接接收,则存在数据混乱,因此,在每个连接之前重新输入序列号的主要原因是允许双方进行通信,以便根据序列号拒绝不属于当前连接的部分。 但是,为了安全起见,伪造的TCP报告的相同序列号被另一方阻止接收。
ISN从每4毫秒+1时的时钟开始,然后持续到4.55小时。
1948年RFC建议改进初始化序号ISN随机生成技术。

当 IP 碎片丢失时, 整个 IP 信件必须重新传送 。
由于IP层缺乏超时机制,传输层的TCP负责加班和再传送。当接收方意识到TCP提交书(头+数据)的一部分已经丢失时,它不会对另一方的ACK作出反应,导致发送方的TCP在时限之后将整个TCP提交书(头+数据)退回。因此,知道IP层被用于片段转移是极其浪费的。
连接建立后,TCP协议通常会谈判缔约方的 MMS 值,以确保最佳传输效率。当 TCP 层检测到数据已超过 MMS 时,分割首先进行。 当然,它产生的 IP 包的大小不会大于 MTU, 并且不应该是 MTU 。
当TCP堆叠后丢失的TCP碎片在MMS中反复出现,而不是重新传送所有碎片,这大大提高了再传送的效率。
我们都知道,TCP连接是由三节握手创造的,假设攻击者在短时间内在一个不同的IP地址伪造SYN信息,服务所有人收到的SYN-RCVD信息每一条SYN_RCVD信息都进入SYN_RCVD状态,但服务提供商发送的ACK +SYN信息无法获得未知IP主机的ACK反应,SYN接收队列(未连接队列)
net.core.netdev_max_backlognet.core.netdev_max_backlognet.ipv4.tcp_abort_on_overflow如果SYN攻击继续,SYN队列可以全部填满。为了回应SYN攻击,请使用 tcp_synbookies:net.ipv4.tcp_syncookies = 1
本文由 在线网速测试 整理编辑,转载请注明出处。