TCP三次握手建立连接四次挥手断开连接
仅用于做笔记,转载自https://blog.csdn.net/whuslei/article/details/6667471
首先Client端发送连接请求报文,Server段接受连接后回复ACK报文,并为这次连接分配资源。Client端接收到ACK报文后也向Server段发生ACK报文,并分配资源,这样TCP连接就建立了。
假设Client端发起中断连接请求,也就是发送FIN报文。Server端接到FIN报文后,意思是说"我Client端没有数据要发给你了",但是如果你还有数据没有发送完成,则不必急着关闭Socket,可以继续发送数据。所以你先发送ACK,“告诉Client端,你的请求我收到了,但是我还没准备好,请继续你等我的消息”。这个时候Client端就进入FIN_WAIT状态,继续等待Server端的FIN报文。当Server端确定数据已发送完成,则向Client端发送FIN报文,“告诉Client端,好了,我这边数据发完了,准备好关闭连接了”。Client端收到FIN报文后,"就知道可以关闭连接了,但是他还是不相信网络,怕Server端不知道要关闭,所以发送ACK后进入TIME_WAIT状态,如果Server端没有收到ACK则可以重传。“,Server端收到ACK后,“就知道可以断开连接了”。Client端等待了2MSL后依然没有收到回复,则证明Server端已正常关闭,那好,我Client端也可以关闭连接了。Ok,TCP连接就这样关闭了!
【问题1】为什么连接的时候是三次握手,关闭的时候却是四次握手?
答:因为当Server端收到Client端的SYN连接请求报文后,可以直接发送SYN+ACK报文。其中ACK报文是用来应答的,SYN报文是用来同步的。但是关闭连接时,当Server端收到FIN报文时,很可能并不会立即关闭SOCKET,所以只能先回复一个ACK报文,告诉Client端,“你发的FIN报文我收到了”。只有等到我Server端所有的报文都发送完了,我才能发送FIN报文,因此不能一起发送。故需要四步握手。
【问题2】为什么TIME_WAIT状态需要经过2MSL(最大报文段生存时间)才能返回到CLOSE状态?
答:虽然按道理,四个报文都发送完毕,我们可以直接进入CLOSE状态了,但是我们必须假象网络是不可靠的,有可以最后一个ACK丢失。所以TIME_WAIT状态就是用来重发可能丢失的ACK报文。
TCP三次握手建立连接四次挥手断开连接相关推荐
- TCP网络编程-三次握手建立连接-四次挥手断开连接
客户端与服务器进行TCP通信连接时,要进行三次握手建立连接. 客户端与服务器进行TCP断开连接时,要进行四次挥手断开连接.
- TCP三次握手建立连接的过程
来源:TCP三次握手建立连接的过程 TCP 是面向连接的协议,所以每次发出的请求都需要对方进行确认.TCP 客户端与 TCP 服务器在通信之前需要完成三次握手才能建立连接. 下面详细讲解三次握手的过程 ...
- TCP的三次握手过程与四次挥手
TCP握手协议 在TCP/IP协议中,TCP协议提供可靠的连接服务,采用三次握手建立一个连接.第一次握手:建立连接时,客户端发送syn包(syn=j)到服务器,并进入SYN_SEND状态,等待服务器确 ...
- 《TCP三次捂手、四次挥手和状态转换详解》
前言: 本文将讲解TCP三次捂手建立连接,到四次挥手断开连接的过程,并且配合TCP状态转换图解释.解释SYN .seq .ack.FIN的含义和关系.建议读者先理解三捂和四挥后在结合状态转换图看,网络 ...
- TCP三次握手建立连接和四次挥手关闭连接
TCP三次握手 是指建立TCP连接协议时,需要在客户端和服务器之间发送三个包,握手过程中传送的包里不包含数据,三次握手完毕后,客户端与服务器才正式开始传送数据. 第一次握手:客户端发送第一个包,其中S ...
- Wireshark抓包示范:TCP三次握手建立连接和四次握手断开连接
转载请标注: 披萨大叔的博客 http://blog.csdn.net/qq_27258799/article/details/51379508 如果您觉得这篇文章对您有帮助,请点下文章最下面的赞~ ...
- TCP三次握手建立连接
一.三次握手的过程 TCP需要三次握手才能建立连接,整个过程如下图所示: 假设A运行的是TCP客户端进程,而B运行的是TCP服务端进程.最开始的时候两端的TCP进程都处于ClOSED(关闭)状态. 这 ...
- 43.TCP三次握手建立连接的过程
TCP 是面向连接的协议,所以每次发出的请求都需要对方进行确认.TCP 客户端与 TCP 服务器在通信之前需要完成三次握手才能建立连接. 下面详细讲解三次握手的过程. 第 1 次握手 第 1 次握手建 ...
- TCP四次挥手断开连接
四次挥手的流程 1.主动关闭方发送FIN连接释放报文段 客户端调用 close 方法,告诉服务器自己要主动关闭连接,会发送一个 FIN 报文给服务端,客户端进入FIN-WAIT-1状态. 2.被动关闭 ...
最新文章
- redis 缓存过期默认时间_缓存的必知必会:一文搞懂Redis持久化和过期机制
- SAP QM启用了Physical Sample Management后检验批有哪些特殊地方?
- 8.Vue 事件处理
- 交换机选用要点及订货主要技术条件
- 画直线_在鸡面前画一条直线,为什么它会晕?西瓜视频这知识好冷告诉答案
- 【转】Python学习路线
- python最大公约数计算。从键盘接收两个整数_python如何求解两数的最大公约数
- 排序算法之——快速排序分析
- 星环大数据平台 TDH inceptor 问题排查
- 统计通话次数和时间的软件_通话时间统计app下载-通话时间统计下载v2.3-西西软件下载...
- iOS YYKit理解
- ARM体系结构与编程模型总结
- ZZULIOJ/python1006: 求等差数列的和
- DVP 接口时钟配置错误导致的高温出图异常
- 数据归档方案(带流程图)
- QQ能上网页打不开解决办法
- 淘宝校招鸡蛋篮子算法题标准答案
- 关于学习的三个认知升级
- BIOS 并口设置选项SPP, EPP, ECP区别
- Day 40 多表查询以及pymysql相关操作
热门文章
- 比较两个文件夹图像相似度
- 使用Java泛型实现快速排序(快排,Quicksort)
- undefined reference to cv::_InputArray::_InputArray(cv::Mat const)
- 服务器 声音文件 nginx,docker nginx搭建视频音频服务器
- php smtp 超时,SMTP错误:无法连接到服务器:连接超时(110)与PHPMailer和Outlook SMTP
- android udp 收发例子_如何利用光衰减器来测试光纤收发器的灵敏度?
- http方式调用第三方接口
- 手机连接投影机的步骤_投影机和电视机怎么选?看这一篇就够了!
- python天气查询小程序加背景图_微信小程序开发背景图显示功能
- oracle对查询结果求和_某国企Oracle数据库误truncate table恢复案例