有关TCP方式连接建立时三次握手,为什么不是2次 或4次 5次

首先简述一下 TPC连接建立的过程中,“三次握手” 的过程:

第一次:客户端像服务器端发送连接请求

第二次:服务器收到请求后,向客户端发送回应和连接请求

第三次:客户端收到后,对服务器的请求发送应答

其中总共发送了3条消息,因此该过程也称作“三次握手”

而这其中 3次握手 也是建立连接过程中需要发送的最少的消息数目

这样来看:

1:

一次握手 仅仅由客户端发送一次请求,肯定是无法建立可靠的TCP连接的

2:

两次握手:服务器端 在发出消息后,并不知道自己能否发送,以及对面的客户端能否接收。也就是说,如果在两次握手的状态下建立连接,很可能建立的连接是从客户端到服务器端单向的,也就是客户端一直发消息,服务器端一直收消息。

此外,两次握手建立的连接,服务器端如果向客户端发消息,不能保证能正常发出,也不能保证客户端能正常收到。所以二次握手可能会造成这两种情况:(C表示客户端,S表示服务器端)

1、建立连接的过程中,C向S发送请求,但由于某些原因,S并没有收到请求,于是C又发了一条请        求。

S向C回应并发出请求。这时候认为连接建立,开始通信,结束后断开连接。这时,一开始那条

S没有收的请求突然传到了S端,于是S对这条请求回应后,由于假定“二次握手”,这时候

S认为自己和C建立连接了,但C不认为自己和S建立连接,这就导致已经失效的请求重新建立了错误的连接

2、如果服务器发出并且客户端收不到消息,服务器会重复发送消息直到得到回应,浪费很多资源

3:

4、5、6、7次握手:由于3次握手已经能确保建立可靠的连接,所以不需要多次握手

时间: 2024-08-14 10:54:04

有关TCP方式连接建立时三次握手,为什么不是2次 或4次 5次的相关文章

TCP建立连接时三次握手(2)

body { font-family: 微软雅黑,"Microsoft YaHei", Georgia,Helvetica,Arial,sans-serif,宋体, PMingLiU,serif; font-size: 10.5pt; line-height: 1.5; } html, body { } h1 { font-size:1.5em; font-weight:bold; } h2 { font-size:1.4em; font-weight:bold; } h3 { fon

TCP建立连接时三次握手(1)

body { font-family: 微软雅黑,"Microsoft YaHei", Georgia,Helvetica,Arial,sans-serif,宋体, PMingLiU,serif; font-size: 10.5pt; line-height: 1.5; } html, body { } h1 { font-size:1.5em; font-weight:bold; } h2 { font-size:1.4em; font-weight:bold; } h3 { fon

TCP连接建立的三次握手过程可以携带数据吗?

前几天实验室的群里扔出了这样一个问题:TCP连接建立的三次握手过程可以携带数据吗?突然发现自己还真不清楚这个问题,平日里用tcpdump或者Wireshark抓包时,从来没留意过第三次握手的ACK包有没有数据.于是赶紧用nc配合tcpdump抓了几次包想检验一下.但是经过了多次实验,确实都发现第三次握手的包没有其它数据(后文解释).后来的探究中发现这个过程有问题,遂整理探究过程和结论汇成本文,以供后来者参考. 先来张三次握手的图(下面这张图来自网络,若侵犯了作者权利,请联系我删除): RFC79

TCP/IP之TCP协议首部、三次握手、四次挥手、FSM

TCP包头 <--------------------------------32 位------------------------------> 0 8 16 24 32 |----------------|----------------|----------------|----------------| ----- | Source port | Destination port | | |-----------------------------------------------

TCP网络协议的三次握手及代码释义

讲解TCP协议,我们首先要了解什么是网络通讯协议. 1.网络通讯协议 两台计算机要想在网络中互相通讯,就必须要遵守一定的规定,并且只有通讯双方同时遵守了这些规定,才能够实现数据的相互传输.而这些规定,便是由网络通讯协议针对数据传输格式,传输速率,传输步骤等制定的. 2.网络协议分类 java.net 包中包含的类和接口,它们提供低层次的通信细节,其中包含了两种常见的网络协议的支持: 1)TCP(Transmission Control Protocal) 即传输控制协议,TCP协议是面向连接的通

TCP协议中的三次握手和四次挥手(图解)【转】

建立TCP需要三次握手才能建立,而断开连接则需要四次握手.整个过程如下图所示: 先来看看如何建立连接的. [更新于2017.01.04 ]该部分内容配图有误,请大家见谅,正确的配图如下,错误配图也不删了,大家可以比较下,对比理解效果更好.这么久才来更新,抱歉!! 错误配图如下: 首先Client端发送连接请求报文,Server段接受连接后回复ACK报文,并为这次连接分配资源.Client端接收到ACK报文后也向Server段发生ACK报文,并分配资源,这样TCP连接就建立了. 那如何断开连接呢?

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

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

TCP报文格式和三次握手——三次握手三个tcp包(header+data),此外,TCP 报文段中的数据部分是可选的,在一个连接建立和一个连接终止时,双方交换的报文段仅有 TCP 首部。

from:https://blog.csdn.net/mary19920410/article/details/58030147 TCP报文是TCP层传输的数据单元,也叫报文段. 1.端口号:用来标识同一台计算机的不同的应用进程. 1)源端口:源端口和IP地址的作用是标识报文的返回地址. 2)目的端口:端口指明接收方计算机上的应用程序接口. TCP报头中的源端口号和目的端口号同IP数据报中的源IP与目的IP唯一确定一条TCP连接. 2.序号和确认号:是TCP可靠传输的关键部分.序号是本报文段发送

tcp协议报文和三次握手与四次挥手

tcp协议: tcp是面向连接.可靠的进程到进程之间的协议.tcp提供全双工服务:即:数据可在同一时间双向传输. tcp报文段首部格式: 各字段含义: 源端口号:16位字段,为发送端进程对应的端口号 目标端口:16位字段,为接收端进程对应的端口号,接收方接收到数据包之后根据这个字段确定将数据发送给对应程序来处理 序号:32位字段,当tcp从进程中接收到数据之后,就会把他存储在发送缓存中.并对每一个字节进行编号,形成的序列号.特点如下: 会生成一个随机数作为第一个字节的编号,成为序列号(ISN),