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

你可能感兴趣的文章
Nginx 负载均衡详解
查看>>
nginx 配置 单页面应用的解决方案
查看>>
nginx 配置https(一)—— 自签名证书
查看>>
nginx 配置~~~本身就是一个静态资源的服务器
查看>>
Nginx 配置解析:从基础到高级应用指南
查看>>
nginx+Tomcat性能监控
查看>>
Nginx下配置codeigniter框架方法
查看>>
nginx报错:the “ssl“ parameter requires ngx_http_ssl_module in /usr/local/nginx/conf/nginx.conf:128
查看>>
nginx添加模块与https支持
查看>>
Nginx用户认证
查看>>
Nginx的Rewrite正则表达式,匹配非某单词
查看>>
Nginx的使用总结(一)
查看>>
Nginx的使用总结(二)
查看>>
Nginx的可视化神器nginx-gui的下载配置和使用
查看>>
Nginx的是什么?干什么用的?
查看>>
Nginx访问控制_登陆权限的控制(http_auth_basic_module)
查看>>
nginx负载均衡器处理session共享的几种方法(转)
查看>>
nginx负载均衡的5种策略(转载)
查看>>
nginx负载均衡的五种算法
查看>>
Nginx运维与实战(二)-Https配置
查看>>