时间:2022-01-22 17:00:14
客户端发送一次请求给服务器,指定时间后没响应再发了一个服务器先接收到后一个建立连接的请求,然后前一个建立连接的请求,因为网络延迟等问题,在第二个之后达到了服务器认为第二个请求是最新发的,于是向客户端发送确认报文段,同意建立连接,于是连接建立了(两次握手)这时候客户端还在等待最新的请求连接(第二次请求),自动忽略服务器发送的关于第一个请求连接的响应,也不发送数据服务器一直等待客户端发送数据,服务器资源被占用
TCP被称为面向连接的协议。在应用程序之间交换任何消息之前,TCP使用3步握手来建立客户端和服务器应用程序之间的双向连接。连接一直保持打开状态,直到TCP客户端调用close来终止与TCP服务器的连接。服务器的响应是在连接被删除之前确认关闭请求。
持续连接就是万维网服务器在发送响应后仍然在一段时间内保持这条连接,使同一个客户(浏览器)和该服务器可以继续在这条连接上传送后续的HTTP请求报文和响应报文。这条持续的连接并不局限于传输同一个页面上链接的文档,而是只要文档在同一个服务器上就可以通过这条持续的连接传送。
基于HTTP协议的客户/服务器模式的信息交换过程,它分四个过程:建立连接、发送请求信息、发送响应信息、关闭连接。即为客户端(浏览器)发送一个url请求给服务器(2个过程,客户端先与服务器建立连接,之后客户端发送url请求)。之后服务器返回相应信息给客户端,最后关闭连接。
客户端:我没有数据要发送了,打算断开连接服务器:你的请求我收到了,我这还有数据没有发送完成,你等下服务器:我的数据发送完毕,可以断开连接了客户端:ok,你断开连接吧(客户端独白:我将在2倍的最大报文段生存时间后关闭连接。如果我再次收到服务器的消息,我就知道服务器没有收到我的这句话,我就再发送一遍)。
答:因为当客户端发起关闭连接的请求时,发出的FIN,仅代表客户端没有需要发送给服务器端的数据了。而如果服务器端如果仍有数据需要发送给客户端的话,响应报文ACK和结束报文FIN则就不能同时发送给客户端了。此时,服务器端会先返回一个响应报文,代表接收到了客户端发出的FIN请求,而后在数据传输完了之后,再发出FIN请求,表示服务器端已经准备好断开连接了。所以关闭连接的时候是四次握手。
可以看到,服务器结束TCP连接的时间要比客户端早一些。回到问题根本上,建立连接的时候,服务器在LISTEN状态下,收到建立连接请求的SYN报文后,把ACK和SYN放在一个报文里发送给客户端。而关闭连接时,服务器收到对方的FIN报文时,仅仅表示对方不再发送数据了但是还能接收数据,而自己也未必全部数据都发送给对方了,所以服务器可以立即关闭,也可以发送一些数据给对方后,再发送FIN报文给对方来表示同意现在关闭连接,因此,服务器ACK和FIN一般都会分开发送,从而导致多了一次。
卡塔尔世界杯将在2022年11月21日开幕,揭幕战定于北京时间21日晚18点开球,东道主卡塔尔将亮相揭幕战.小组赛阶段的比赛有四个开球时间,分别是18点、21点、凌晨0点和3点(以上均为北京时间).小组赛阶段每天有4场比...
本篇研究考察了2年内 33 种不同代币空投的价格表现,从 2020 年 9 月的 Uniswap($UNI)到 2023 年 3月的Arbitrum($ARB)。这不是时间范围内所有空投的列表,但会尽可能多的尝试满足这些...
全球领先的数字经济基础服务提供商QKEx于近日成功迭代升级,正式上线“质押借币”及“加密资产staking”等多项加密衍生品服务,致力于成为一站式加密资产服务中心,推动全球加密行业的发展与完善。 据介绍,质押借币是QKE...
ZKE Exchange宣布与全球领先的KYC服务商SUMSUB达成合作,完成技术对接,上线KYC自动认证功能,这是一个基于AI的生态系统,在满足相关监管要求下保障用户资产安全,同时意味着用户可以在KYC...