博客
关于我
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/

你可能感兴趣的文章
nodejs包管理工具对比:npm、Yarn、cnpm、npx
查看>>
NodeJs单元测试之 API性能测试
查看>>
nodejs图片转换字节保存
查看>>
nodejs在Liunx上的部署生产方式-PM2
查看>>
nodejs基于art-template模板引擎生成
查看>>
nodejs字符与字节之间的转换
查看>>
NodeJs学习笔记001--npm换源
查看>>
NodeJs学习笔记002--npm常用命令详解
查看>>
nodejs学习笔记一——nodejs安装
查看>>
vue3+Element-plus icon图标无法显示的问题(已解决)
查看>>
NodeJS实现跨域的方法( 4种 )
查看>>
nodejs封装http请求
查看>>
nodejs常用组件
查看>>
nodejs开发公众号报错 40164,白名单配置找不到,竟然是这个原因
查看>>
Nodejs异步回调的处理方法总结
查看>>
NodeJS报错 Fatal error: ENOSPC: System limit for number of file watchers reached, watch ‘...path...‘
查看>>
nodejs支持ssi实现include shtml页面
查看>>
Nodejs教程09:实现一个带接口请求的简单服务器
查看>>
nodejs服务端实现post请求
查看>>
nodejs框架,原理,组件,核心,跟npm和vue的关系
查看>>