赞
踩
还是大剑师兰特:曾是美国某知名大学计算机专业研究生,现为航空航海领域高级前端工程师;CSDN知名博主,GIS领域优质创作者,深耕openlayers、leaflet、mapbox、cesium,canvas,webgl,echarts等技术开发,欢迎加底部微信(gis-dajianshi),一起交流。
No. | 内容链接 |
---|---|
1 | Openlayers 【入门教程】 - 【源代码+示例300+】 |
2 | Leaflet 【入门教程】 - 【源代码+图文示例 150+】 |
3 | Cesium 【入门教程】 - 【源代码+图文示例200+】 |
4 | MapboxGL【入门教程】 - 【源代码+图文示例150+】 |
5 | 前端就业宝典 【面试题+详细答案 1000+】 |
第一次握手:
客户端(通常是Web浏览器)想要与服务器(通常是Web服务器)建立TCP连接时,会随机生成一个初始序列号(Sequence Number,简称seq),然后向服务器发送一个SYN(同步序列编号)报文段。报文段中包含客户端的初始序列号(ISN)。此时,客户端进入SYN_SENT状态。
客户端 -> 服务器: SYN(seq=x)
第二次握手:
服务器接收到客户端的SYN报文段后,如果同意建立连接,则回复一个SYN+ACK(同步确认)报文段。这个报文段包含服务器的初始序列号(ISN),以及确认号(Acknowledgment Number,ack),确认号是客户端的初始序列号加1,表示服务器已经接收到了客户端的SYN报文段。服务器进入SYN_RECEIVED状态。
服务器 -> 客户端: SYN(seq=y), ACK(ack=x+1)
第三次握手:
客户端收到服务器的SYN+ACK报文段后,会再次发送一个ACK报文段,确认号设置为服务器的初始序列号加1,表示客户端已经收到了服务器的SYN报文段。此时,客户端进入ESTABLISHED状态。当服务器接收到客户端的ACK报文段后,也进入ESTABLISHED状态,至此,TCP连接成功建立。
客户端 -> 服务器: ACK(ack=y+1)
在HTTP通信过程中,浏览器发起HTTP请求前,首先就是通过TCP三次握手与服务器建立可靠的连接,然后在这个连接上传输HTTP消息。而在HTML文档加载的过程中,浏览器会基于已经建立好的TCP连接去获取HTML文件及相关的CSS、JavaScript、图片等资源。
TCP四次挥手断开连接的过程如下:
第一次挥手(FIN):
FIN_WAIT_1
状态。第二次挥手(ACK):
CLOSE_WAIT
状态,等待应用程序关闭相应连接上的数据传输,并准备向客户端发送自己的FIN报文。第三次挥手(FIN):
LAST_ACK
状态,等待客户端确认收到它的FIN报文。第四次挥手(ACK):
TIME_WAIT
状态,等待足够长的时间以确保服务器端能收到这个确认报文,并且在此期间内,若服务器端未收到ACK,可能会重发FIN报文,客户端可以再次确认。CLOSED
状态。TIME_WAIT
状态等待一段时间后(通常为MSL,即Maximum Segment Lifetime,报文段最大生存时间),如果没有收到任何异常报文,则认为连接已经完全关闭,最终也会进入CLOSED
状态。总结来说,四次挥手是为了确保双方都能有序且无歧义地结束连接,并且确保在连接彻底关闭之前,网络中滞留的报文段都能够得到妥善处理。这个过程保证了TCP连接的可靠性和完整性。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。