伊滨区网站建设,网站都是用什么编写的,湛江市手机网站建设企业,军事网址大全2345文章目录 前言一、TCP/IP协议的三次握手1.1 三次握手流程 二、TCP/IP的四次挥手2.1 四次挥手流程 三、主要字段3.1、标志位#xff08;Flags#xff09;3.2、序号#xff08;sequence number#xff09;3.3、确认号#xff08;acknowledgement number#xff09; 四、状态… 文章目录 前言一、TCP/IP协议的三次握手1.1 三次握手流程 二、TCP/IP的四次挥手2.1 四次挥手流程 三、主要字段3.1、标志位Flags3.2、序号sequence number3.3、确认号acknowledgement number 四、状态名词解析 前言
本文章讲解TCP/IP协议的三次握手和四次挥手的流程。 一、TCP/IP协议的三次握手 三次握手为了对每次发送的数据量进行跟踪与协商确保数据段的发送和接收同步根据所接收到的数据量而确认数据发送、接收完毕后何时撤消联系并建立虚连接。 1.1 三次握手流程 TCP协议位于传输层作用是提供可靠的字节流服务为了准确无误地将数据送达目的地TCP协议采纳三次握手策略。 第一次握手 客户端发送给服务器连接请求的报文其中报文中包含seq序列号是由发送端随机生成的并且将报文中的SYN字段置为1表示需要建立TCP连接。SYN1ACK0,seqxx为随机生成数值第二次握手 服务端接收到客户端的连接请求的报文后回复给客户端连接请求确认的报文其中包含seq序列号是由服务端随机生成的并且将ACK设置为1代表服务器同意连接而且会产生ack字段ack字段数值是在客户端发送过来的序列号seq的基础上加1进行回复以便客户端收到信息时知晓自己的TCP建立请求已得到验证。SYN1ACK1,ackx1seqyy为随机生成数值这里的ack加1可以理解为是确认和谁建立连接第三次握手 客户端收到服务端发送的连接请求确认的报文后回复给服务器确认的报文其中SYN设置为0表示已经建立连接seq为自身序列号1ack为y1。SYN0ACK1seqx1acky1
二、TCP/IP的四次挥手 即终止TCP连接就是指断开一个TCP连接时需要客户端和服务端总共发送4个包以确认连接的断开。 2.1 四次挥手流程 由于TCP连接是全双工的因此每个方向都必须单独进行关闭。这原则是当一方完成它的数据发送任务后就能发送一个FIN来终止这个方向的连接。收到一个 FIN只意味着这一方向上没有数据流动一个TCP连接在收到一个FIN后仍能发送数据。首先进行关闭的一方将执行主动关闭而另一方执行被动关闭。 第一次挥手 主动关闭方向被动关闭方发送一个FIN包FIN1,也就是主动关闭方告诉被动关闭方 我已经不会再给你发数据了。(FIN1,seqx)第二次挥手 被动关闭方收到FIN包 后发送一个 ACK包 给主动关闭方 。告诉主动关闭方已收到通知 。ACK1,seqx,ackx1注在被动关闭方发送 FIN包之前被动关闭方还是可以向 主动关闭方发送数据的。第三次挥手 被动关闭方又发送一个 FIN包给主动关闭方用来关闭被动关闭方到主动关闭方的数据传送。也就是告诉主动关闭方我的数据也发送完了不会再给你发数据了。FIN1,ACK1,seqz,ackx1第四次挥手 主动关闭方收到FIN包后发送一个ACK包给被动关闭方至此完成四次挥手。(ACK1,seqx1,ackz1)
三、主要字段
3.1、标志位Flags
标志位含义说明SYN发起建立连接当SYN1ACK0表明是连接请求报文若同意连接则响应报文中应该有 SYN1ACK1ACK确认标识当ACK1确认标识才有效。为了与 确认号ack 区分开我们一定要用大写字母FIN释放连接当FIN1表明此报文的发送方的数据已经发送完毕并且要求释放。PSH读取数据当PSH1提示接收端应用程序立即从TCP缓存区把数据读走。RST重置连接当RST1表时TCP连接出现严重差错必须释放连接在后再重新连接。URG紧急指针当URG1表明紧急指针字段有效告诉系统此报文段中有紧急数据。
3.2、序号sequence number seq序号占32位。用来标识从TCP源端向目的端发送的字节流发起方发送数据时对此进行标记。 注 SYN是标志位表示发起建立一个连接。 seq即seq序号表示发起方发送数据进行标记。 3.3、确认号acknowledgement number ack序号占32位。只有ACK标志位为1时确认序号字段才有效ackseq1。 注 ACK 是标志位中的确认标识。 ack是确认序号接收到的对方的数据ackseq1。 四、状态名词解析 LISTEN等待从任何远端TCP 和端口的连接请求。 SYN_SENT发送完一个连接请求后等待一个匹配的连接请求。 SYN_RECEIVED发送连接请求并且接收到匹配的连接请求以后等待连接请求确认。 ESTABLISHED表示一个打开的连接接收到的数据可以被投递给用户。连接的数据传输阶段的正常状态。 FIN_WAIT_1等待远端TCP 的连接终止请求或者等待之前发送的连接终止请求的确认。 FIN_WAIT_2等待远端TCP 的连接终止请求。 CLOSE_WAIT等待本地用户的连接终止请求。 CLOSING等待远端TCP 的连接终止请求确认。 LAST_ACK等待先前发送给远端TCP 的连接终止请求的确认包括它字节的连接终止请求的确认 TIME_WAIT等待足够的时间过去以确保远端TCP 接收到它的连接终止请求的确认。 TIME_WAIT 两个存在的理由 1.可靠的实现tcp全双工连接的终止 2.允许老的重复分节在网络中消逝。 CLOSED不在连接状态这是为方便描述假想的状态实际不存在