博客
关于我
TCP三次握手四次挥手
阅读量:697 次
发布时间:2019-03-15

本文共 972 字,大约阅读时间需要 3 分钟。

TCP三次握手与四次挥手

一、从TCP报文段内容上分析

TCP协议的三次握手过程中,SSM(序号同步)机制是核心所在。序号seq字段为32位,用于标记数据段的顺序。TCP将连接中发送的所有数据视为无结构但有序的字节流。每个字节都会被编上序号,序号的起始值由本地随机生成,并按照顺序分配给报文段的第一个字节。序列号seq即为当前报文段的第一个字节的数据编号。

确认号ack字段也是32位,与序号类似,但其作用不同。ack字段用来指定期待收到对方下一个报文段的第一个数据字节的序号。序号表示当前携带数据的第一个字节编号,ack则表示期望下次报文段的第一个字节编号。确认位ACK字段则用于标记确认号字段是否有效,ACK=1时确认号字段有效,ACK=0则无效。

TCP通过确认号字段和ACK字段来实现SSM机制。这一机制保证了两端对数据传输顺序的认识一致,从而使得数据可以准确地校验和重组。此外,SYN标记建立连接,FIN标记终止连接,同时窗口字段用于流量控制和拥塞控制。

二、三次握手

TCP三次握手的核心目的是协商出双方的初始序号并建立可信的通信序列号关系。三次握手过程中,SYN和ACK标志位起着关键作用。

C S
SYN=1,seq=client_isn
ACK=1,ack=client_isn+1
ACK=1,seq=server_isn SYN=0

为什么需要三次握手而不是两次或四次?三次握手的核心在于通过双方的序号信息建立可靠的通信基础。这一过程确保了双方对数据传输顺序的完全一致,从而使得后续数据传输得以准确校验和重组。

如果使用两次握手,可能导致确认号无法正确校验对方的序号信息;而三次握手则通过三次通信请求,确保双方序号信息的可靠同步。至于四次握手,则只多了一次确认,无必要且不必要。

三、四次挥手

四次挥手的过程主要用于终止TCP连接。连接的终止涉及四次专门的 UserControl码(即FIN段)。四次挥手的核心作用是确保双方能够知晓彼此已完成连接终止操作,从而避免数据传递错误或重复。

C S
FIN=1
ACK=1
ACK=1 FIN=1
ACK=1

在四次挥手过程中,客户端和服务器交换FIN和ACK字段,最终确认双方都已完成连接终止。这种双向确认机制确保了连接的安全性和可靠性。

内容如有错误请指出,感谢您的解读!

转载地址:http://wlgmz.baihongyu.com/

你可能感兴趣的文章
python 序列化操作
查看>>
Python 开发者,这 7 个 VS Code 插件极力推荐
查看>>
python手把手视频_硬货 | 手把手带你构建视频分类模型(附Python演练))
查看>>
python 录音左右声道_Python分离立体声wav压缩文件的左右声道
查看>>
Python 循环异或对文件进行加解密
查看>>
Python开发环境搭建(附VMware安装包及虚拟机环境)
查看>>
python 微信扫码登录_python实现微信第三方网站扫码登录(Django)
查看>>
Python 快速下载依赖
查看>>
python实现非参数统计的Cochran检验 (附完整源码)
查看>>
python 怎么验证是否安装成功 scrapy
查看>>
Python 手写数字识别-1
查看>>
Python实现接口自动化测试库(JSON与Requests)详解
查看>>
Python 手写数字识别-3-sklearn中的几种算法
查看>>
python实现SSIM和MSSSIM计算 (附完整源码)
查看>>
Python 打开文件注意事项
查看>>
python 批量修改文件名_python windows下批量修改文件名
查看>>
Python 抓取网页乱码问题 以及EXCEL乱码
查看>>
python 抓取网页内容
查看>>
python 按照当前日期创建文件
查看>>
Python 接口并发测试详解
查看>>