博客
关于我
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+pytest接口自动化 —— 接口测试基础
查看>>
python+pytest接口自动化 —— 自动化用例编写思路 (使用pytest编写一个测试脚本)
查看>>
Python+pytest接口自动化之cookie绕过登录(保持登录状态)
查看>>
python+pytest接口自动化:接口测试
查看>>
Python+requests+unittest执行接口自动化测试详情
查看>>
Python+requests+unittest执行接口自动化测试详情
查看>>
python+requests+unittest执行自动化接口测试!
查看>>
Python+Requests编码识别Bug
查看>>
python函数编写_[零基础学python]传说中的函数编写条规
查看>>
Python+selenium —— UI自动化之鼠标操作
查看>>
python函数注释,参数后面加冒号:,函数后面的箭头→是什么?
查看>>
Python+Selenium+Threading进行兼容性测试
查看>>
Python+selenium+unittest的GUI自动化框架实现
查看>>
python函数拟合不规则曲线_Python计算&绘图——曲线拟合问题(转)
查看>>
python函数定义的基本格式_零基础学python-2.19 定义函数、调用函数与默认参数
查看>>
Python+Selenium之数据驱动测试的实现
查看>>
python函数定义与使用+返回值简解
查看>>
Python+Selenium登录
查看>>
Python日期时间模块
查看>>
Python函数合集:足足68个内置函数请收好!
查看>>