谈谈三次握手四次挥手
三次握手
三次握手的目的:建立TCP连接
过程如图
图中字符的含义:
SYN
:连接请求/接收 报文段seq
:发送的第一个字节的序号ACK
:确认报文段ack
:确认号
第一次握手
客户端向服务端发送一个 SYN 报文(SYN = 1),并指明客户端的初始化序列号 ISN(x),即图中的 seq = x,表示本报文段所发送的数据的第一个字节的序号。
第二次握手
服务器收到客户端的 SYN 报文之后,会发送 SYN 报文作为应答(SYN = 1),并且指定自己的初始化序列号 ISN(y),即图中的 seq = y。同时会把客户端的 ISN + 1 作为确认号 ack 的值,表示已经收到了客户端发来的的 SYN 报文,希望收到的下一个数据的第一个字节的序号是 x + 1。
第三次握手
客户端收到服务器端响应的 SYN 报文之后,会发送一个 ACK 报文,也是一样把服务器的 ISN + 1 作为 ack 的值,表示已经收到了服务端发来的的 SYN 报文,希望收到的下一个数据的第一个字节的序号是 y + 1,并指明此时客户端的序列号 seq = x + 1(初始为 seq = x,所以第二个报文段要 +1)。
为什么要三次握手
目的是让双方都确认各自的收发的正常的
- 第一次握手:客户端什么都不能确认,服务器确认对方发送正常,自己接收正常
- 第二次握手:客户端确认自己和对方的收发都正常
- 第三次握手:服务器确认自己和对方的收发都正常
四次挥手
四次挥手的目的:释放TCP连接
过程如图
图中字符的含义
FIN
:连接终止位seq
:发送的第一个字节的序号ACK
:确认报文段ack
:确认号。希望收到的下一个数据的第一个字节的序号
第一次挥手
客户端发送一个 FIN 报文(请求连接终止:FIN = 1),报文中会指定一个序列号 seq = u。并停止再发送数据,主动关闭 TCP 连接
第二次挥手
服务端收到 FIN 之后,会发送 ACK 报文,且把客户端的序号值 +1 作为 ACK 报文的序列号值,表明已经收到客户端的报文了。
第三次挥手
如果服务端也想断开连接了(没有要向客户端发出的数据),和客户端的第一次挥手一样,发送 FIN 报文,且指定一个序列号。
第四次挥手
客户端收到 FIN 之后,一样发送一个 ACK 报文作为应答(ack = w+1),且把服务端的序列值 +1 作为自己 ACK 报文的序号值(seq=u+1)。
为什么要四次挥手
因此第二、三次挥手都是从服务器向客户端发出,第二次挥手与第三次挥手之间服务器可能还有数据要发送,不能提前发送FIN
。
TCP与UDP
- TCP是面向连接的。UDP是无连接的,发送数据前不需要先建立连接。
- TCP提供可靠服务。也就是说,通过TCP连接传送的数据,无差错,不丢失,不重复,且按序到达;UDP尽最大努力交付,即不保证可靠交付。
- 因为TCP可靠,面向连接,不会丢失数据因此适合大数据量的交换。
- TCP是面向字节流,UDP面向报文,并且网络出现拥塞不会使得发送速率降低(因此会出现丢包,对实时的应用比如IP电话和视频会议等)。
- TCP只能是1对1的,UDP支持1对1,1对多。
- TCP的首部较大为20字节,而UDP只有8字节。
参考文档
关于 TCP 三次握手和四次挥手,满分回答在此
谈谈三次握手四次挥手相关推荐
- ssh协议是osi_TCP/IP协议和三次握手四次挥手
计算机网络体系结构 在计算机网络的基本概念中,分层次的体系结构是最基本的.计算机网络体系结构的抽象概念较多,在学习时要多思考.这些概念对后面的学习很有帮助. 网络协议是什么? 在计算机网络要做到有条不 ...
- 在深谈TCP/IP三步握手四步挥手原理及衍生问题—长文解剖IP
如果对网络工程基础不牢,建议通读<细说OSI七层协议模型及OSI参考模型中的数据封装过程?> 下面就是TCP/IP(Transmission Control Protoco/Interne ...
- java锁一次交互二次握手_Java后台开发面试实战(二):TCP三次握手四次挥手
感谢牛客网网友提供的面试经验! 1. 解释一下TCP三次握手四次挥手 图片来源于微信公众号:码农求职小助手 答: 嗯(稍作思考)- 三次握手简单来说,在数据传输开始前: 第一次握手:客户端向服务端发送 ...
- tcp 二次握手时延_一篇搞懂TCP的三次握手 四次挥手
TCP的三次握手四次挥手,估计大家都听过.但是真的能把每一步说明白的人比较少.我还记得在之前面试的时候被面试官一顿问,然后一脸懵B... 都是大学没好好上课 ,这篇文章就跟大家讲讲到底这三握四挥是在搞 ...
- TCP三次握手四次挥手 TCP/UDP区别
三次握手 第一次握手: 建立连接时,客户端发送syn包(syn=j)到服务器,并进入SYN_SEND状态,等待服务器确认: SYN:同步序列编号(Synchronize Sequence Numbe ...
- [计算机网络][总结][常见问题][TCP][三次握手][四次挥手]
TCP三次握手 四次挥手 三次握手 目的:保证传输的可靠性,为了防止已失效的连接请求报文段突然又传送到了服务端,因而产生错误.主要防止资源的浪费. 具体过程:当客户端发出第一个连接请求报文段时并没有丢 ...
- linux 查看握手时间,实战:tcpdump抓包分析三次握手四次挥手
本文档以实战的形式介绍tcpdump抓包分析三次握手四次挥手的过程. 执行tcpdump命令 tcpdump -n -i ens32 host 192.168.10.10 and 42.186.113 ...
- Wireshark验证TCP三次握手四次挥手
本文介绍如何通过Wireshark抓包工具验证TCP的三次握手四次挥手过程. 首先本地起了一个tomcat服务器,跑了一个简单的基于SpringMVC的rest服务. 打开Wireshark,捕获指定 ...
- TCP三次握手四次挥手(图解)
<TCP-IP协议栈概略图与TCP三次握手四次挥手> 目录 1 TCP过程详解 1.1 三次握手 1.2 四次挥手 2 使用tcpdump分析三次握手的过程 2.1 tcpdump抓包和t ...
最新文章
- 目标形体形状轮廓重建:ICCV2019论文解析
- 使用PHP+Sphinx建立高效的站内搜索引擎
- ubuntu修改登陆用户名称_修改ubuntu的用户名(注意用户名和主机名的区别)
- Python报错:UnicodeDecodeError: 'gbk' codec can't decode byte 0xae in position 199: illegal multibyte s
- IDEA-2020版本 Gradle项目控制台输出乱码
- RxJS mergeMap 学习笔记
- Springboot初次学习
- 【LeetCode笔记】55. 跳跃游戏(Java、贪心法)
- oracle imp 包,oracle imp
- 由项目浅谈JS中MVVM模式
- Linux php5 curl 扩展
- C++ 一维高斯积分的实现
- android优酷视频黑屏,为什么优酷视频黑屏?优酷视频黑屏的原因与解决方法
- win7系统rpc服务器不可用无法开机,win7系统RPC服务器不可用的解决方法
- 白帽杯2022-Misc 游戏秘籍 write-up
- HTML基础-02:常用布局
- 2020美团秋招笔试题解
- REST and RPC
- 基于含有非期望产出的SBM模型的共同前沿和群组前沿的DEA效率测算
- 假期怕剧荒?五一假期追剧人正确打开方式