元宇宙非小号金色财经交流群社区官网

客户端发送一次请求给服务器,指定时间后没响应再发了

时间: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一般都会分开发送,从而导致多了一次。

标签:时间 服务

本站分享的区块链、Web3.0元宇宙、NFT、数字藏品最新消息等相关数藏知识快讯NFR资讯新闻,与金色财经非小号巴比特星球前线Btc中国官网无关,本站资讯观点不作为投资依据,市场有风险,投资需谨慎!不提供社区论坛BBS微博微信交流群等相关币圈信息发布!
本站内容来源于互联网,如存在侵权及违规内容投诉邮箱( [email protected] )
皮卡丘 2021-2024© YangKaTie.Com All