为什么不是4次握手

首先我们知道TCP是3次握手与4次挥手,为什么不是4次握手呢,因为其中握手请求同步过程中并不需要数据传输因此将两次合并为一次了。

我们需要掌握哪些标志量

SYN:请求同步标志,为1的时候为有效 
ACK:应答标志,表示接受到所发的数据,1为有效 
FIN:结束请求标志,1为有效

ack:应答,值为告诉对方下一次所发数据地址 
seq:值为所发数据地址

TCP握手

根据图片所示: 
客户机主动唤醒处在Listen状态下的服务器,发送:SYN=1,seq=x表示请求同步,所发数据地址为x 
当服务器接收到数据后,返回:SYN=1,ACK=1,seq=y,ack=x+1(合并的步骤),表示同步请求恢复,收到客户机所发数据,服务器发送数据地址为y,提醒客户机该发送地址为x+1的数据 
接收到服务器反馈后客户机进行应答:ACK=1,seq=x+1,ack=y+1,表示接受到所发消息,本次数据地址为x+1,提醒服务器下次应发y+1地址的数据

TCP挥手

对照图片将哈: 
首先客户机是主动发起断开连接请求的(结合实际也能理解),向服务器发送:FIN=1,seq=x,表示客户机向服务器发送断开连接的申请标志位,客户机所发送数据地址为x 
服务器接收到数据后,ACK=1,seq=y,ack=x+1,这个就不解释了吧,但需要对比握手操作的是为什么后面服务器还发送了一次,而不是将两步合为一步,因为在服务器接收到客户机的断开请求后,可能还有些数据正在传输或未传输且需要传输,因此服务器先回复客户机表示接收到你的断开请求但还不能够断开,当数据传输完成后再次回复FIN=1,ACK=1,seq=z,ack=x+1表示可以断开了,注意这时seq变为z(就是不同于上面)因为中间数据传输了,地址变化了。 
最后客户机回复:ACK=1,seq=x+1,ack=z+1 
还要注意的是,为什么客户机最后回复后等待了2MSL

等待2MSL

首先我们要知道MSL代表的是最大报文时间,值报文在网络中所能存在的最大时长,因此可以理解如果过去了2MSL那么就表示服务器肯定没有收到客户端所发送的应答报文,那么就需要重发。那么有人可能会说那么服务器那边要不要也弄个2MSL或者如果一直发送失败怎么办,这个我们只能保证尽量减少可能出现错误的概率不能杜绝所有问题,这涉及到一个哲学上的悖论,没法避免哈。

报文格式图

最后附上TCP首部的报文图,里面有标志位啊,目标端口啊这些参数的位置以及大小

TCP握手与挥手详解(附有图)相关推荐

  1. TCP握手和挥手详解

    一.形象认识 三次握手: A:"喂,你听得到吗?"A->SYN_SEND B:"我听得到呀,你听得到我吗?"应答与请求同时发出 B->SYN_RCV ...

  2. TCP四次挥手详解以及小实验

    TCP四次挥手 1.主动关闭方发送FIN连接释放报文段 客户端调用 close 方法,告诉服务器自己要主动关闭连接,会发送一个 FIN 报文给服务端,客户端进入FIN-WAIT-1状态. FIN 段是 ...

  3. TCP 三次握手和四次挥手详解

    1. TCP 报文格式详解 (1). 源端口和目的端口字段--各占 2 字节,标识了发送方和接收方的应用进程,如2210,80端口 (2). 序号字段--占 4 字节,TCP 连接中传送的数据流中的每 ...

  4. TCP三次握手和四次挥手详解

    文章目录 三次握手和四次挥手简述 三次握手的目的 三次握手流程详解 半连接队列和全连接队列 四次挥手的目的 四次挥手详解 为什么客户端需要TIME_WAIT状态 为什么挥手比握手多一次 为什么三次挥手 ...

  5. 前端基础-TCP/IP 不完全详解

    TCP/IP 不完全详解 TCP/IP是通信协议的统称.首先,我们先认识一下OSI参考模型 OSI 参考模型 OSI 参考模型中各个分层的作用如下: 概括的说: 应用层:为应用程序提供服务并规定应用程 ...

  6. TCP/IP五层模型详解

    TCP/IP五层模型详解 应用层 HTTP:简单的明文传输的请求--响应协议 HTTP数据结构: 首行 头部 空行 正文 浏览器的控制 HTTPS 定义 CA认证 SSL加密流程: 混合对称加密过程: ...

  7. TCP 握手和挥手图解(有限状态机)

    1.引言 TCP 这段看过好几遍,老是记不住,没办法找工作涉及到网络编程这块,各种问 TCP .今天好好整理一下握手和挥手过程.献给跟我一样忙碌,找工作的童鞋,欢迎大神批评指正. 2.TCP 的连接建 ...

  8. tcp网络通信教程 java_基于java TCP网络通信的实例详解

    JAVA中设计网络编程模式的主要有TCP和UDP两种,TCP是属于即时通信,UDP是通过数据包来进行通信,UDP当中就会牵扯到数据的解析和传送.在安全性能方面,TCP要略胜一筹,通信过程中不容易出现数 ...

  9. Quartus II 8.1 详解--有图---图片详解 【1讲】

    Quartus II 8.1  详解--有图---图片详解    看图片比较清楚,比文章清楚的多 本文转自 zhangguangyi 51CTO博客,原文链接http://blog.51cto.com ...

最新文章

  1. Dubbo 版 Swagger 来啦!Dubbo-Api-Docs 发布
  2. centos 离线安装mysql_CentOS6离线安装mysql-5.7.25
  3. 前端学习(1409):多人管理29安装json转换工具
  4. Linux文件属性2——使用stat函数获取文件属性
  5. linux下的单机工具,Linux下单机模式的Hadoop部署
  6. mysql分页概念_MySQL学习笔记之数据定义表约束,分页方法总结
  7. elasticsearch-5.6.12 单点安装包括 HEAD插件安装
  8. CentOS5.5下SVN部署文档
  9. linux中查看路由命令是什么,linux下查看路由的命令
  10. java main spring_分享通过在java main函数中执行spring的代码
  11. excel表格导入功能
  12. 检测 邮箱地址 是否存在[C#]
  13. 关于抽象和多态的总结
  14. Flash入门:动画制作基础知识
  15. EXCEL MATCH函数
  16. c语言漩涡图形,AI教程│变换工具实例运用 轻松制作圆形漩涡图案
  17. 服务器自带的防篡改,防篡改系统
  18. 数据通信网络基础,华为VRP系统(HCLA-Datacom v1.0华为认证数通笔记2)
  19. MP4转gif得力工具
  20. wap(dopra linux )命令,ftth-华为hg8245终端回收利用配置方法

热门文章

  1. 我们该如何有效管理时间
  2. 歌咏比赛,有10个评委,有5个选手,求出每一个选手的平均得分(去掉一个最高分和一个最低分)。 要求:利用数组、有参有返回的函数
  3. Wind、Excel与Python三大金融技能兼修,我成为了金融分析大老
  4. 反向放大电路与同向放大电路的优缺点
  5. php存在的安全漏洞,PHP 5.2.10及之前版本存在多个安全漏洞
  6. 2018第九届蓝桥杯大赛软件类国赛 C/C++ 大学 B 组
  7. Love Letter(海角七号)
  8. 计算机网络——什么是 QUIC 协议?
  9. Excel绘制动态图表 之 极品offset、多种控件动态动图
  10. Java使用FFmpeg实现mp4转m3u8