TCP的三次握手和四次挥手过程

TCP包头:其中ACK,SYN,FIN在这两个过程中会用到,简单介绍如下:

ACK:表示是否前面的确认号字段是否有效,ACK=1,表示有效,只有当ACK=1时,前面的确认号字段才有效,TCP规定,连接建立后,ACK必须为1,带ACK标志的TCP报文段称为确认报文段。

SYN:在建立连接时使用,用来同步序号。当SYN=1,ACK=0时,表示这是一个请求建立连接的报文段;当SYN=1,ACK=1时,表示对方同意建立连接。SYN=1,说明这是一个请求建立连接或同意建立连接的报文。只有在前两次握手中SYN才置为1,带SYN标志的TCP报文段称为同步报文段。

FIN:表示通知对方本端要关闭连接了,标记数据是否发送完毕,如果FIN=1,即告诉对方:""我的数据已经发送完毕,你可以释放连接了""带FIN标志的TCP报文段称为结束报文段.。

三次握手的过程

CLOSED:没有任何连接状态

LISTEN:倾听状态,等待来自远方TCP端口的连接请求

SYN-SENT:在发送连接请求后,等待对方确认。

SYN-RECEIVED:在收到和发送一个连接请求后,等待对方确认。

ESTABLISHED:代表传输连接建立,双方进入数据传送状态。

在没有建立连接之前,客户端与服务器处于关闭状态,第一次握手 当客户端想与服务器建立连接时,它就会主动向服务器发送信号,此时SYN=1,ACK=0,表示主动请求建立连接。TCP规定SYN=1时不能携带数据,但要消耗一个序号,因此声明自己的序号是 seq=x。发送连接请求后,客户端就进入SYN-SENT状态,等待对方确认

第二次握手
当服务器收到客户端的请求连接时,如想与客户端建立连接,就会给客户端发一个确认信号。此时SYN=1,ACK=1时,表示同意建立连接。然后进入SYN-RECEIVED状态,等待对方确认。

第三次握手 当客户端收到了服务器同意建立连接的信号后, 会给服务器再发一次确认信号,然后两者就进入了建立连接状态。开始数据传输了。

为什么要进行三次握手呢(两次确认)

主要是为了防止客户端已失效的连接请求报文段突然又送到了服务器端,因此产生错误。

现在假定出现一种异常情况:客户端发出的第一个连接请求报文段并没有丢失,而是在某些

络节点长时间滞留了,以致延误到连接释放以后的某个时间才能到达服务器,本来这是一个早已失效的报文段,但服务器收到此失效的连接请求报文段后,就误认为是客户端又发出一次新的连接请求,于是就像客户端发出确认报文段,同意建立连接,假定不采用三次握手,那么只要服务器发出确认,新的连接就建立了。由于现在客户端并没有发出建立连接的请求,因此不会理睬服务器端的确认,也不会向服务器端发送数据,但服务器端却以为新的传输连接已经建立了,并一直等待客户端发来数据,服务器端的许多资源就这样白白浪费了。

采用三次握手的方法可以防止上述现象的发生,在刚才的情况下,客户端不会向服务器端的确认发出确认,服务器端收不到来自客户端的确认,就知道客户端并没有要求建立连接。

四次挥手的过程

FIN-WAIT-1 主动关闭,主机已发送关闭连接请求,等待对方确认。

FIN-WAIT-2 主动关闭,主机已收到对方关闭传输连接确认,等待对方发送关闭传输连接请求

TIME-WAIT 完成双向传输连接关闭,等待所有分组消失

CLOSE-WAIT 被动关闭,收到对方发来的关闭连接请求,并已确认。

LAST-ACK 被动关闭,等待最后一个关闭传输连接确认,并等待所有分组消失。

CLOSING 双方同时尝试关闭传输连接,等待对方确认。

第一次挥手 当客户端想与服务器断开连接时,就会主动向服务器发一个终止包。此时FIN=1,表示可以释放连接了。然后进入终止等待1状态。

第二次挥手 服务器收到客户端发来的请求断开连接的包,就会给服务器发一个确认信息。此时ACK=1,表示已经收到客户端发来的请求断开连接的请求了。然后进入关闭等待状态。而客户端收到服务器端的确认后,进入终止等待2状态,等待对方发送关闭传输连接请求

第三次挥手 服务器端同意断开连接时,向客户端发送同意断开连接的数据包。然后进入LAST-ACK状态,等待最后确认。

第四次挥手 客户端收到服务器端发来的同意断开连接的请求,会给服务器端发一个确认信息,然后进入TIME-WAIT状态,时间较长,完成双向传输连接关闭,等待所有分组消失。然后再进入CLOSED状态。服务器端收到确认信息,断开连接,然后进入CLOSED状态。

时间: 2024-08-03 17:57:42

TCP的三次握手和四次挥手过程的相关文章

TCP的三次握手与四次挥手过程,各个状态名称与含义

三次握手 第一次握手:主机A发送位码为syn=1,随机产生seq number=10001的数据包到服务器,主机B由SYN=1知道,A要求建立联机,此时状态为SYN_SENT: 第二次握手:主机B收到请求后要确认联机信息,向A发送ack number=(主机A的seq+1),syn=1,ack=1,随机产生seq=20001的包,此时状态由LISTEN变为SYN_RECV: 第三次握手:主机A收到后检查ack number是否正确,即第一次发送的seq number+1,以及位码ack是否为1,

TCP协议三次握手、四次挥手过程

本文通过图来梳理TCP-IP协议相关知识.TCP通信过程包括三个步骤:建立TCP连接通道,传输数据,断开TCP连接通道.如图1所示,给出了TCP通信过程的示意图. 上图主要包括三部分:建立连接.传输数据.断开连接. 建立TCP连接很简单,通过三次握手便可建立连接.建立好连接后,开始传输数据.TCP数据传输牵涉到的概念很多:超时重传.快速重传.流量控制.拥塞控制等等.断开连接的过程也很简单,通过四次握手完成断开连接的过程.三次握手建立连接: 第一次握手:客户端发送syn包(seq=x)到服务器,并

TCP的三次握手与四次挥手过程的每一步的具体状态变换

一.TCP的运输连接管理 TCP是面向连接的协议.运输连接是用来传送TCP报文的.TCP运输连接的建立和释放是每一次面向连接的通信中必不可少的过程,运输连接有三个阶段,即:连接建立,数据传送和连接释放.运输连接的管理就是使运输连接的建立和释放都能正常的进行. 在TCP连接建立过程中要解决以下三个问题: (1)要使每一方都能够确知对方的存在. (2)要允许双方协调一些参数(如最大窗口值,是否使用窗口扩大选项和时间戳选项以及服务质量等). (3)能够运输实体资源(如缓存大小.连接表中的项目等)进行分

TCP协议的三次握手与四次挥手过程图解

建立TCP需要三次握手才能建立,而断开连接则需要四次握手.整个过程如下图所示: 先来看看如何建立连接的. 首先Client端发送连接请求报文,Server段接受连接后回复ACK报文,并为这次连接分配资源.Client端接收到ACK报文后也向Server段发生ACK报文,并分配资源,这样TCP连接就建立了. 那如何断开连接呢?简单的过程如下: [注意]中断连接端可以是Client端,也可以是Server端. 假设Client端发起中断连接请求,也就是发送FIN报文.Server端接到FIN报文后,

TCP的三次握手与四次挥手

最近在看一些Tcp网络编程方面的内容,不免涉及客户端和服务器交互的内容,其中最经典的应该是TCP的三次握手和四次挥手了. 背景描述 通过上一篇中网络模型中的IP层的介绍,我们知道网络层,可以实现两个主机之间的通信.但是这并不具体,因为,真正进行通信的实体是在主机中的进程,是一个主机中的一个进程与另外一个主机中的一个进程在交换数据.IP协议虽然能把数据报文送到目的主机,但是并没有交付给主机的具体应用进程.而端到端的通信才应该是应用进程之间的通信. UDP,在传送数据前不需要先建立连接,远地的主机在

TCP/IP三次握手与四次挥手的正确姿势

A 理解TCP/IP三次握手与四次挥手的正确姿势https://www.cnblogs.com/lms0755/p/9053119.html B 四次挥手过程理解 https://blog.csdn.net/qq_38950316/article/details/81087809 C TCP三次握手四次挥手详解http://www.cnblogs.com/zmlctt/p/3690998.html 原文地址:https://www.cnblogs.com/kelelipeng/p/1021678

TCP的三次握手与四次挥手(个人总结)

序列号seq:占4个字节,用来标记数据段的顺序,TCP把连接中发送的所有数据字节都编上一个序号,第一个字节的编号由本地随机产生:给字节编上序号后,就给每一个报文段指派一个序号:序列号seq就是这个报文段中的第一个字节的数据编号. 确认号ack:占4个字节,期待收到对方下一个报文段的第一个数据字节的序号:序列号表示报文段携带数据的第一个字节的编号:而确认号指的是期望接收到下一个字节的编号:因此当前报文段最后一个字节的编号+1即为确认号. 确认ACK:占1位,仅当ACK=1时,确认号字段才有效.AC

TCP的三次握手与四次挥手理解及面试题(很全面)

序列号seq:占4个字节,用来标记数据段的顺序,TCP把连接中发送的所有数据字节都编上一个序号,第一个字节的编号由本地随机产生:给字节编上序号后,就给每一个报文段指派一个序号:序列号seq就是这个报文段中的第一个字节的数据编号. 确认号ack:占4个字节,期待收到对方下一个报文段的第一个数据字节的序号:序列号表示报文段携带数据的第一个字节的编号:而确认号指的是期望接收到下一个字节的编号:因此当前报文段最后一个字节的编号+1即为确认号. 确认ACK:占1位,仅当ACK=1时,确认号字段才有效.AC

C/S架构,osi五层协议,TCP的三次握手与四次挥手

1.C/S B/S架构 C:client 客户端 B:Browser 浏览器 S:server 服务端 C/S 客户端与服务器之间的架构:QQ,微信,游戏,App的都属于C/S架构 优点:安全性高,个性化设置,功能全面,响应速度快 缺点:开发成本高,维护成本高,面向的客户固定 B/S 浏览器与服务器之间的架构:属于C/S架构,最近几年比较流行的特殊的C/S架构 优点:开发维护成本低,面向用户广泛 缺点:安全性相对低,响应速度相对慢,个性化的设置单一 2.互联网通信的原理 1.物理连接介质将两台电