第一部分b > TCP/IP/b > 基础部分 第1章 《开放通信模式摘要》11 开发开放网络。 一.1 通信处理等级 2.1. OSI参考模型3.1. 1.3 模型5 1.2 b > TCP/IP/b > 参考模型713 概要 7 b > TCP/IP/b >..

      最后更新:2021-12-08 09:45:37 手机定位技术交流文章

      目录

      • 前言
      • TCP报头标识位
      • TCP开始连接
      • TCP断开连接
      • 为什么需要三个握手才能建立连接 和四个波浪才能打破它?

      前言

      TCP/IP协议是属于OSI七层结构(应用层、指示层、指示层、指示层、传输层、网络层、数据链层、物理层)传输层的基本网络传输协议,目前主要依赖协议,例如:https、https、websocket等。

      TCP报头标识位

      贸易协定在纸面上确定了6个标记,以确定每个数据包的动向,说明如下:

      URG: 紧急符号。 紧急信号“ 1” 表示有效位置 。

      在多数情况下,符号是存在的。 TCP 页眉确认号栏中包含的确认号(w+1)是下一个预期序列号,其指标是远程系统已成功收到所有数据。

      当标记定位时,接收端不排队排列数据,而是尽可能快地将其传送到应用程序中。在处理Telnet 或 rlogin 等互动模式的连接时,总是设置标记。

      RST: 迁移标记。 用于重置连接的 TCP 连接 。

      SYN: 同步标识。 播放同步序列栏有效 。 标记只有在进行三次握手以建立 TCP 连接时才有效 。 它会通知 TCP 连接的服务端以验证序列号, 这是连接初始端的 TCP 连接的第一个序列号( 通常是客户端 ) 。

      TCP开始连接

      随着TCP连接的开始,需要三次握手(三次握手),客户和服务共提供三套服务,以确认连接的形成。
      在这里插入图片描述

      • 初始握手 : 客户端设置 SYN 到 1 的标志位置, 生成随机值后数 = J, 并将数据包传输到服务器, 进入 SYN_ SENT 状态, 等待服务器确认 。

      • 第二握手:SYN=1收到数据包后,就会知道Clit的连接请求,服务器将SYN和ACK标签放在1,ack=J+1上,随机生成一个值后继值K,并将数据包传送给Clit确认连接请求,服务器进入SYN_RCVD状态。

      • 第三手握:一旦Clit得到确认,检查它是否是J+1和ACK,如果正确的话,将标志ACK设为1,ack=K+1,并将数据包发送到服务器,服务器检查它是否是K+1,ACK在1,如果正确的话,连接成功,Clit和服务器进入建立状态,完成三次握手,然后开始Clit和服务器之间的数据传输。

      这是官方解释,下文以白字说明:

      • 在第一阶段,男性(客户)告诉女孩(服务)她们是最有吸引力的程序员。 你想成为我的女朋友吗?

      • 第二步,女性(服务)对男孩(客户)负责:我有,但有许多缺陷。难道你不知道你准备接受这些缺陷吗?

      • 在第三步,该名男子(客户)发现女孩(服务)欢迎他,

      这是三手握手的概念,双方表达了对联系最终有效的原则的看法,这在很大程度上是一种可依赖性的许诺。

      TCP断开连接

      TCP连接一个双向、双向、全面制造的走廊,两边可能关闭,另一边被动关闭,需要四个握手来完成这一进程:
      在这里插入图片描述

      • Clit为结束Clit-Server数据流,而Clit则进入FIN_WAIT_1州,完成了FIN-WAIT_1国。

      • 第二波:收到FIN后,服务器向客户发送ACK,确认序列号为+1(与SYN一样,FIN有一个序列号),服务器进入CLOSE_WAIT条件。

      • 第三波:服务器发送 FIN 终止从服务器向客户端传输数据,服务器进入 LAST_ACK 状态。

      • 第四波:收到FIN后,客户端进入了Time_WAIT模式,然后向服务器发送了ACK,确认序列号为接收号+1,服务器进入了CLOSED模式,完成了四个波。

      为什么需要三个握手才能建立连接 和四个波浪才能打破它?

      原因有二:

      • 确定TCP协议的全时工作连接安全关闭。
      • 确保从网络中删除这一连接的重复数据部分。

      首先,如果客户直接致电关闭中心,IP协议或其他网络原因的可靠性不足导致服务器没有收到CLEent对ACK的最后答复。 然后服务器将继续在加班后发送FIN, 此时客户无法找到与重新发行的FIN的相应联系, 最终他将获得RST而不是ACK, 服务器将假设将问题报告到顶端的连接是错误的。 这种情况虽然没有导致数据损失,但导致TCP协议不符合可靠的连通性的要求。 所以Clit没有直接进入CLED,而是要保持TER_WAIT, 当FIN再次收到时,它保证另一方会收到ACK, 并最终正确关闭连接。

      其次,如果客户直接使用关闭连接数据,然后启动与服务器的新连接,我们无法保证这一新连接与新关闭连接的端口号不同。 也就是说, 新的和旧连接的端口号可能相同。 一般而言, 不存在问题, 但存在特殊的情况: 假设新连接与关闭的旧连接端口号相同, 如果先前连接的某些数据仍留在网络中, 延迟数据在创建新连接后到达服务器, 因为新连接和旧连接端口号相同, 而且由于 TCP 协议确定不同的连接基于套接字对, 然后TCP 协议认为延迟的数据是新的, 因而与真正的新连接数据包混淆。 因此 TCP 连接将等待时间_ WAIT 状态中MSL 的两次, 这将确保连接的所有数据都从网络中删除。

      本文由 在线网速测试 整理编辑,转载请注明出处,原文链接:https://www.wangsu123.cn/news/14497.html

          热门文章

          文章分类