TCP三次握手和四次挥手

Wesley13
• 阅读 730

建立TCP连接:三次握手
TCP在传输数据之前,首先需要建立好TCP连接,后续所有数据都基于这个已建立的连接来传输,建立TCP连接的过程通常被描述为三次握手
屏幕快照 2020-07-27 16.44.59TCP三次握手和四次挥手
注意:广泛使用的三次握手概念并不合理,RFC文档中对建立TCP连接的过程称为three way handshark,按字面翻译,它应该被称为三路握手,对应于建立TCP连接过程中的三个包传输,应该被成为三包握手或三报文握手,而不应该是三次握手。三包握手是只有一次握手,但这次握手过程传输了三个包,从handshark是单数角度上也可以确定它只有一次握手

断开TCP连接:四次握手
建立TCP连接需要三次握手过程,在TCP连接断开(或释放)的时候则需要四次挥手的过程
屏幕快照 2020-07-27 16.46.46TCP三次握手和四次挥手
在RFC793中,建议MSL设置为2分钟,但是对于现在的网络来说,2分钟的时间太长了,这意味着A在回复ACK包之后还需要等待4分钟才能真正关闭连接,实际上,是允许不同的TCP协议设置不同的MS值的。在这里,不管MSL的值具体为多少比较合适,需要关注的是为什么A在回复ACK之后不直接关闭而是需要等待2MSL时长才关闭?
这主要是为了保证A发送的最后一个ACK回复包能够被B收到。如果不等待2MSL而是直接关闭,那么B可能在超时时间内无法收到回复包,于是重传FIN+ACK包给A,但是A已经关闭了,不可能再接收到重传的包,于是最终B按照非正常状态退出连接。如果A等待一段时间,则可以保证在B重传FIN+ACK之后,A能够重新回复一个ACK包给B(A此时重设定时器为2MSL),使得B能够正常关闭连接

TCP状态机
为了更清晰的描述从建立TCP连接到释放TCP连接的过程,双方可能处于的状态,给出了TCP的有限状态和FSM(Finite State Machine)
屏幕快照 2020-07-27 16.48.36TCP三次握手和四次挥手
屏幕快照 2020-07-27 16.49.19TCP三次握手和四次挥手
屏幕快照 2020-07-27 16.50.24TCP三次握手和四次挥手
屏幕快照 2020-07-27 16.51.30TCP三次握手和四次挥手

点赞
收藏
评论区
推荐文章
Easter79 Easter79
3年前
tcp编程、socket编程、redis
tcp编程(需要建立连接,三次握手,四次挥手,然后发送信息流,数据包是有序的)udp编程(知道IP、端口直接发送数据,数据包可能是无序的)1、客户端和服务器客!(http
东方客主 东方客主
3年前
HTTP面试题精选_langsiming的博客
1.简述下TCP三次握手的过程,并解释采用3次握手建立连接的原因?1.客户端发送建立连接请求,携带信息syn1,seq X 第一次握手2.
xiguaapp xiguaapp
3年前
tcp的三次握手四次挥手
tcp的三次握手流程:在tcp/ip协议中,tcp协议提供可靠的连接服务,采用三次握手建立一个连接。第一次握手:建立连接时,客户端发送SYN包【synj】到服务器,并进入SYN_SEND状态,等待服务器确认;第二次握手:服务器收到SYN包,必须确认客户的SYN(ackj1),同时自己也发送一个SYN包(syn
Wesley13 Wesley13
3年前
TCP基础 —— 为什么建立连接需要三次握手,而断开连接则需要四次?能不能是三次?
一、TCP包概述一个segment包含header和data两个部分,对于这篇文章需要理解的就是,Sequencenumber和Acknowledgementnumber)这两个字段。TCP的可靠传输就是基于这两个字段来实现的。虽然文章的主旨是三次握手(threewayhandshake)与四次挥手(
Wesley13 Wesley13
3年前
TCP的三次握手与四次挥手
TCP的三次握手与四次挥手一、TCP(TransmissionControlProtocol传输控制协议)TCP是面向对连接,可靠的进程到进程通信的协议TCP是提供全双工服务,即数据可在同一时间双向传输二、TCP报文段(封装在IP数据报
Easter79 Easter79
3年前
TCP三次握手与Linux的TCP内核参数优化
感谢各位技术大佬的资料分享,这里我把我理解的内容做一个整理一:TCP的三次握手1、TCP简述  TCP是一个面向连接的协议,在连接双方发送数据之前,首先需要建立一条连接。TCP建立连接可以简单称为:三次握手(说白了就是建立一个TCP连接的时候,客户端
Wesley13 Wesley13
3年前
TCP连接过程及报文解析
可能大家都听过TCP建立连接时需要经历三次握手和四次挥手的。那么具体的握手挥手的过程是怎么样的呢?这篇文章就通过WireShark抓包来了解TCP连接建立和断开的过程。实验方法:写一段简单的代码代码客户端和服务端,分别部署,让客户端主动像服务器发起连接,随后断开。让WireShark抓股这个过程中产生了哪些包,并对其分析。(注:Wire
Wesley13 Wesley13
3年前
TCP是如何实现三次握手的?
什么是三次握手1.TCP是网络传输层的协议,提供面向连接的可靠的字节流服务,要通信得先建立连接2.所谓三次握手就是指,建立一个TCP连接时,需要CLient与Server发送三个包,确认连接的建立3.这一过程由Client执行connect触发简单描述下三次握手的具体过程第一
Wesley13 Wesley13
3年前
TCP三次握手和四次挥手
TCP建立连接为什么是三次握手,而不是两次或四次?TCP,名为传输控制协议,是一种可靠的传输层协议,IP协议号为6。顺便说一句,原则上任何数据传输都无法确保绝对可靠,三次握手只是确保可靠的基本需要。举个日常例子,打电话时我们对话如下:对应为客户端与服务器之间的通信:!(https://oscimg.oschina.net/oscnet
Wesley13 Wesley13
3年前
TCP的三次握手和四次挥手
  客户端向服务端请求数据的过程中,如果是TCP协议,则需经历TCP的三次握手和四次挥手,其中具体的过程如下:  三次握手  !(https://oscimg.oschina.net/oscnet/61b5378d18062dca9748bb496c2eb99d11d.jpg)  这个过程其实就是确认对方的收发功能是否都正常的功能,形象表示如