本文转自测试人社区,霍格沃兹测试开发学社学员笔记
原文链接:https://ceshiren.com/t/topic/28200
一、TCP 报文头信息
- 序号:占四个字节,表示发送的数据字节流
- 确认号:占四个字节,发送方期待接受的下一个序列号,只有ACK=1时才生效
- ACK:确认号的标志,ACK=1表示确认号有效,ACK=0表示报文不含确认号信息
- SYN:连接请求序号标志,用于建立连接,SYN=1表示请求连接。
- FIN:结束标志,用于释放链接,为1 表示关闭本方数据流
二、TCP 建立连接过程
- 首先,客户端发送连接请求报文
- 服务端接受连接后回复ACK报文,并为这次连接分配资源
- 客户端接受到ACK报文后也向服务端发送ACK报文,并分配资源
- 然后双方开始通信
三、TCP 断开连接过程
- 假设客户端发起终端连接,也就是发送FIN报文
- 服务端接收到FIN报文后,先发送一个ACK报文,这时客户端进入fin_wait状态,继续等待server的fin报文
- 当服务端确定数据已发送完毕,则向客户端发FIN报文;
- client端收到FIN报文后,发送ACK进入time_wait状态,如果服务端没有收到可以重新发送。客户端等2MSL后依然没有收到回复,则证明server端已正常关闭。
- client关闭连接
四、总结
三次握手
- 首先 Client 端发送连接请求报文
- Server 段接受连接后回复 ACK 报文,并为这次连接分配资源
- Client 端接收到 ACK 报文后也向 Server 段发生 ACK 报文,并分配资源
四次挥手
- Client 端发起中断连接请求(发送 FIN 报文)
- Server 端接到 FIN 报文后,先发送 ACK,Client 端进入 FIN_WAIT 状态,继续等待 Server 端的 FIN 报文。
- 当 Server 端确定数据已发送完成,则向 Client 端发送 FIN 报文
- Client 端收到 FIN 报文后, 发送 ACK 后进入 TIME_WAIT 状态,如果 Server 端没有收到 ACK 则可以重传。Client 端等待了 2MSL 后依然没有收到回复,则证明 Server 端已正常关闭
- Client 端关闭连接
推荐
Python全栈开发与自动化测试开发班
由浅入深实战进阶,从小白到高手
以Python全栈开发为基础,深入教授自动化测试技能,为学员打造全面的技术能力。通过系统学习和实际项目实战,学员将具备在职场中脱颖而出的竞争力。不仅能够灵活运用Python进行开发,还能够保障项目质量通过自动化测试手段。这是一个全面提升职业竞争力的机会。
课程详情
Python开发必备基础技能与项目实战
Pvthon 编程语言/算法和数据结构/面向对象编程Web后端开发/前端开发/测试管理平台项目实战
人工智能ChatGPT实战
人工智能辅助学习各种开发和测试技能/Pytorch深度学框架/平台开发实战
数据分析与自动化办公
数据采集/Pandas与数据处理技术/ECharts与数据可视化技术/爬虫实战/自动化办公/批量文件处理
UI自动化测试与高级项目实战
Web自动化测试/App自动化测试/ PageObject设计模式
接口自动化测试
接口协议分析/Mock实战/服务端接口测试
性能测试
性能测试流程与方法/JMeter 脚本参数化/Grafana监控系统搭建
简历指导与模拟面试
1V1简历指导/模拟真实面试/测试开发岗面试全攻略名企私教服务
名企专家1v1辅导/行业专家技术指导/针对性解决工作难题/绩效提升辅导与晋升复盘
课程亮点
名企私教服务 先学习后付费 高额奖学金
专属社群+晚自习在线答疑
5V1全方位辅导作业+考试强化学习效果
简历修改 模拟面试 就业内推 面试复盘
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。