TCP三次握手和四次分手
来源:互联网 发布:淘宝贷款还不了不还了 编辑:程序博客网 时间:2024/04/29 21:34
1.通过wireshark抓包看到
抓到的包和对应的协议层如下图所示:
1. Frame: 物理层的数据帧概况2. Ethernet II: 数据链路层以太网帧头部信息3. Internet Protocol Version 4: 互联网层IP包头部信息4. Transmission Control Protocol: 传输层的数据段头部信息,此处是TCP5. Hypertext Transfer Protocol: 应用层的信息,此处是HTTP协议
2.TCP三次握手解析
请求百度链接,wireshark的抓包内容
1.第一次握手:客户端发送一个SYN =1 和Seq =X 给服务器(一般 Seq =0)
2.第二次握手:服务器收到客户端发送的报文后,由SYN=1知道客户端要求建立联机,向客户端发送一个SYN=1,ACK =1(ACK=X+1=0+1=1) ,Seq=0的报文
3.第三次握手:客户端收到服务器返回的报文后,检测ACK是否确证(即是否为第一次握手发出的 Seq+1,是否为1), 若正确,客户端再次发送确认包,ACK=1(ACK=Y+1),SYN为0,Seq=1 ,服务端收到ACK=1后,连接成功,可以传输数据了
3.TCP四次分手解析
为什么TCP握手只要三次,而分手却要四次呢?因为当客户端提出分手时,可能服务端还在传输数据,所以服务器在返回给客户端ACK=1 时,还需要返回FIN
1.第一次分手:客户端传给服务器一个Seq =1 ,ACK=1 , FIN=1 的报文,用来关闭客户端到服务端的数据传输
2.第二次分手:服务器收到FIN=1的报文后,知道客户端要关闭连接,返回ACK=2(客户端传给服务端的Seq+1),Seq=1(客户端传给服务端的ACK值)
3.第三次分手:服务器关闭与客户端的连接,返回客户端一个FIN=1,ACK=2,Seq=1
4.第四次分手:客户端收到服务端返回的FIN之后,返回ACK=2(服务端返回给客户端的Seq+1),Seq=2(服务端返回给客户端的ACK)
注意:自己之前抓包的时候,发现客户端close掉连接后,服务端没有立即返回FIN 数据包,这个原因是:
MSL是Maximum Segment Lifetime英文的缩写,中文可以译为“报文最大生存时间”,他是任何报文在网络上存在的最长时间,超过这个时间报文将被丢弃 2MSL即两倍的MSL,TCP的TIME_WAIT状态也称为2MSL等待状态,当TCP的一端发起主动关闭,在发出最后一个ACK包后,即第3次握手完成后发送了第四次握手的ACK包后就进入了TIME_WAIT状态,必须在此状态上停留两倍的MSL时间,等待2MSL时间主要目的是怕最后一个ACK包对方没收到,那么对方在超时后将重发第三次握手的FIN包,主动关闭端接到重发的FIN包后可以再发一个ACK应答包。在TIME_WAIT状态时两端的端口不能使用,要等到2MSL时间结束才可继续使用。当连接处于2MSL等待阶段时任何迟到的报文段都将被丢弃。不过在实际应用中可以通过设置SO_REUSEADDR选项达到不必等待2MSL时间结束再使用此端口。
- TCP三次握手和四次分手
- TCP的三次握手和四次分手
- TCP三次握手和四次分手
- TCP的三次握手和四次分手
- TCP--三次握手 和 四次分手
- TCP三次握手和四次分手
- TCP 三次握手,四次分手
- TCP 三次握手四次分手
- TCP三次握手四次分手
- TCP连接——三次握手和四次分手
- TCP恋爱史:三次握手和四次分手
- TCP恋爱史:三次握手和四次分手
- TCP恋爱史:三次握手和四次分手
- TCP恋爱史:三次握手和四次分手
- TCP恋爱史:三次握手和四次分手
- (图解)TCP的三次握手和四次分手
- TCP恋爱史:三次握手和四次分手
- TCP协议的三次握手和四次分手的大白菜
- 线性与非线性SVM, 机器学习中的范数规则化之(一)L0、L1与L2范数
- TQ210——时钟系统
- Unity回调函数的简单使用
- 设计模式之观察者模式
- 第四章知识点总结
- TCP三次握手和四次分手
- android进程与线程
- 微信开发之微信网页授权 完整示例
- Mysql入门(十)之事务
- BSOJ3806 TYVJ 2032 升降梯上
- 前言
- 在网页中实现稿纸效果
- STL学习之vector
- 平衡二叉树