TCP建立连接和释放连接过程

TCP(Transmission Control Protocol 传输控制协议)是一种面向连接的、可靠的、基于字节流的传输层通信协议。TCP建立连接需要三次握手,释放连接需要四次握手。

1.TCP整个过程流程图

并且TCP整个过程可以看成是状态机

2.TCP建立过程(三次握手)

TCP连接过程:

(1) 服务端通过socket,bind和listen准备好接受外来的连接,此时服务端状态为Listen

(2)客户端通过调用connect来发起主动连接,导致客户端TCP发送一个SYN(同步)字节,告诉服务器客户将在(待建立的)连接中发送的数据的初始序列号,客户端状态为SYN_SENT。

(3)服务器确认(ACK)客户的SYN,并自己也发送一个SYN,它包含服务器将在同一连接中发送数据的初始序列号。

(4)客户端确认服务的ACK和SYN,向服务器发送ACK,客户端状态ESTABLISHED

(5)服务器接收ACK,服务器状态ESABLISHED。

3.TCP关闭过程(四次握手)

TCP连接中止过程:

(1)某端首先调用close,成为主动关闭端,向另一端发送FIN分节,表示数据发送完毕,此时主动关闭端状态FIN_WAIT_1;

(2)接收到FIN的是被动关闭端,FIN由TCP确认,先向主动关闭端发送ACK,作为一个文件结束符传递给接收端应用进程(放在已排队等候该应用进程接收到的任何其他数据之后),因为FIN的接收意味着接收端应用进程在相应连接无额外数据可接收,接收端状态CLOSE_WAIT;主动关闭端接收到ACK状态变为FIN_WAIT_2;

(3)一段时间后,接收端接收到这个文件结束符的应用进程调用close关闭套接字,向主动关闭端发送FIN,接收端状态为LAST_ACK;

(4)主动关闭端确认FIN,状态变为TIME_WAIT,并向接收端发送ACK,接收端接收到ACK关闭TCP,而主动关闭端一段时间后也关闭TCP;

原文地址:https://www.cnblogs.com/dj0325/p/8490293.html

时间: 2024-08-10 19:08:18

TCP建立连接和释放连接过程的相关文章

TCP建立连接与释放连接过程中的几个问题

TCP为何采用三次握手来建立连接,若采用两次握手可以吗,请说明理由? 不可以.采用三次握手是为了防止失效的连接请求报文段突然又传送到服务器,从而发生错误.当客户端发出的连接请求报文段由于某些原因没有及时到达服务器,而客户端在等待一段时间后,又重新向服务器发送连接请求,且建立成功,顺序完成数据传输,那么第一次发送的连接请求报文段就称为失效的连接请求报文段. 考虑这样一种情况,客户端第一次发送的连接请求并没有丢失,而是因为网络问题导致延迟到达服务器,服务器以为是客户端又发起的新连接,于是服务器同意连

TCP建立连接与释放连接

相对于SOCKET开发者,TCP创建过程和链接折除过程是由TCP/IP协议栈自动创建的. 三次握手建立连接 所谓三次握手(Three-way Handshake),是指建立一个TCP连接时,需要客户端和服务器总共发送3个包. 三次握手的目的是连接服务器指定端口,建立TCP连接,并同步连接双方的序列号和确认号并交换 TCP 窗口大小信息.在socket编程中,客户端执行connect()时.将触发三次握手. 第一次握手:客户端发送一个TCP的SYN标志位置1的包指明客户打算连接的服务器的端口,以及

TCP协议建立连接与释放连接

TCP建立连接三次握手 1. 客户端发出段1,SYN位表连接请求.序号是1000,这个序号在络通讯中作临时的地 址,每发个数据字节,这个序号要加1,这样在接收端可以根据序号排出数据包的正确顺 序,也可以发现丢包的情况,另外,规定SYN位和FIN位也要占个序号,这次虽然没发数 据,但是由于发了SYN位,因此下次再发送应该序号1001. mss表最段尺,如果 个段太,封装成帧后超过了链路层的最帧长度,就必须在IP 层分,为了避免这种情 况,客户端声明的最段尺,建议服务器端发来的段不要超过这个长度.

【转】TCP建立连接三次握手和释放连接四次握手

在谈及TCP建立连接和释放连接过程,先来简单认识一下TCP报文段首部格式的的几个名词(这里只是简单说明,具体请查看相关教程) 序列号seq:占4个字节,用来标记数据段的顺序,TCP把连接中发送的所有数据字节都编上一个序号,第一个字节的编号由本地随机产生:给字节编上序号后,就给每一个报文段指派一个序号:序列号seq就是这个报文段中的第一个字节的数据编号.  确认号ack:占4个字节,期待收到对方下一个报文段的第一个数据字节的序号:序列号表示报文段携带数据的第一个字节的编号:而确认号指的是期望接收到

三次握手“释放”连接

我们通常会背书,Tcp 三次握手建立连接,四次握手释放连接.但其实,这只是常见现象.通过抓包,发现了 Tcp 三次握手"释放"连接. 背景: 192.168.40.1 主机:zookeeper 服务器,dubbo provider 192.18.40.8 主机:dubbo consumer zookeeper 默认端口 2181,dubbo 服务默认端口 20880, consumer 调用服务后,结束程序,并会断开所有连接.使用 wireshark 抓取释放连接的 Tcp 包: 从上

TCP三次握手(建立连接)与四次挥手(释放连接)详解

上图画出了TCP的建立连接的过程.假定主机A运行的是TCP客户程序,而B运行TCP服务程序.最初两端的TCP进程都处于 CLOSED(关闭)状态.图中在主机下面的方框分别是TCP进程所处的状态.请注意,A主动打开连接,而B被动打开连接. B的TCP服务器进程先创建传输控制块TCB(Transmission Control Block),准备接受客户进程的连接请求.然后服务器进程就处于LISTEN(监听)状态,等待客户的连接请求.如有,即做出响应. A的TCP客户进程也是首先创建传输控制块TCB,

第三次实验报告:使用Packert Tracer分析TCP建立连接过程.

姓名:贡觉扎西 学号:201821121122 班级:计算1814 1.实验目的 使用路由器连接不同的网络 使用命令行操作路由器 通过抓取HTTP报文,分析TCP连接建立的过程 2.实验内容 使用Packet Tracer,正确配置网络参数,通过抓取HTTP数据包,分析TCP连接建立过程. 建立网络拓扑结构 配置参数 抓包 分析数据包 3. 实验报告 1.建立网络拓扑结构 2.配置参数 客户端的ip地址为192.168.1.28,网关为192.168.1.29 ·服务器的ip地址为192.168

TCP建立连接通过三次握手,释放连接通过四次挥手

tcp建立连接通过三次握手.释放连接通过四次挥手 一.tcp建立连接通过三次握手 首先tcp的特性:tcp是面向连接的安全可靠的传输协议. 传输连接是用来传送tcp报文的.tcp传输连接的建立和释放是每一次面向连接的通信中必不可少的过程.因此,传输连接就有三个阶段:连接建立.数据传输.连接释放.传输连接的管理就是使传输连接的建立和释放都能正常的进行. 在tcp连接建立的过程中要解决以下三个问题: 1.要使每一方都能够确知对方的存在. 2.要允许双方协商一些参数(如最大窗口值.是否使用窗口扩大选项

TCP三次握手详解及释放连接过程

TCP在传输之前会进行三次沟通,一般称为"三次握手",传完数据断开的时候要进行四次沟通,一般称为"四次挥手". 两个序号和三个标志位: (1)序号:seq序号,占32位,用来标识从TCP源端向目的端发送的字节流,发起方发送数据时对此进行标记.  (2)确认序号:ack序号,占32位,只有ACK标志位为1时,确认序号字段才有效,ack=seq+1.  (3)标志位:共6个,即URG.ACK.PSH.RST.SYN.FIN等,具体含义如下:  (A)URG:紧急指针(u