对TCP三次握手四次挥手的理解

简介: 对TCP三次握手四次挥手的理解

1,TCP段组成

image.png

上图就是TCP段组成部分,每一行由32bits组成。每个部分的含义请参照文章Wireshark-TCP协议分析(包结构以及连接的建立和释放)


1.1, TCP socket


一个socket就是一个处于应用层和传输层之间的软件接口。当一个应用发送消息时,消息会经由socket到达传输层,反之,传输层传递消息给socket至应用层被处理。

TCP socket(虚拟端口)用于确定唯一的网络连接。所谓“虚拟”就是一个物理连接支持多路连接。两个端点被视为一个socket。目的端口和源端口都是由16bits确定的,所以端口最大值可用为65535。


1.2,TCP复用和解复用


复用是多对一的过程。在发送方,有很多应用层的数据需要被传输,传输层接收所有的不同socket端口的消息,加上TCP头部传输给网络层这个过程叫做复用。

解复用是复用的逆过程,是一对多的过程。在接收方,传输层接收网络层的数据包,移除IP头部,检查端口号,传输数据包给相应的socket,进而被不同的应用处理,这个过程叫做解复用。


2,TCP三次握手


TCP利用三次握手的方法通过IP协议建立TCP/IP 连接。三次握手通常指"SYN-SYN-ACK"(其中SYN是synchronize的大写缩写,ACK指acknowledge的大写缩写),更准确地是"SYN,SYN-ACK,ACK",因为两台电脑开启TCP会话需要按序传输以上三条消息。两台电脑传输数据前(SSH数据,HTTP数据),三次握手机理让试图交流的双方进行网络TCP socket(套接字)参数的协商。

三次握手过程的设计也是为了使两端可以同时启动和协商各自的TCP socket连接。并且能够同时在两个方向上协商多个TCP socket连接。通过多路复用单个物理网络接口(例如以太网)来同时传输多个TCP数据流。


2.1,三次握手过程


下表展示了简单的三次握手过程。对照表左侧的事件传递来看一下右图。

image.png


SYN消息和ACK消息由TCP头部的SYN bit或ACK bit表示。SYN-ACK消息由SYN bit和ACK bit两个比特共同表示,同为“1”。TCP根据消息中SYN bit和ACK bit两个比特的值就会知道TCP socket处于何种状态(打开,同步,建立)。


下图是三次握手过程1示意图。

image.png

其中涉及信息交换过程中的序号同步问题,即SN2( Sequence Number),数值最大可为4,294,967,295。


3,TCP四次挥手


TCP利用四次挥手(一对两次握手)的方法通过IP协议结束TCP/IP 连接。发送标记FIN bit(FIN是finish的大写缩写)的消息,表示发送方想要结束连接,标志着发送方不能再发送消息,但是可以接收消息直到对端决定不再发送消息。所以这也是为什么结束过程不像连接过程一样是三次握手。如果是"FIN,ACK-FIN,ACK",最后的ACK消息是不能由申请结束的设备来发送的,因为是该设备已经发送了FIN消息,不能再发送消息了。只有双方都发送了FIN bit和ACK bit消息才被认为连接结束,否则不是。正常结束通信的双方,它们状态改变是不同的。


3.1 ,四次挥手过程


如下图所示是四次挥手过程3示意图。

image.png

客户端应用程序首先发起结束连接的请求消息给服务端,等待确认,服务端接收结束标志,发送确认消息给客户端,并告知自身应用程序关闭连接;服务端程序准备关闭,发送结束连接的消息给客户端,并等待客户端的确认,客户端接收结束消息,发送确认给服务端,服务端接收确认消息,服务端关闭连接,客户端等待2倍的MSL时间,客户端关闭连接。


http://www.tcpipguide.com/free/t_TCPConnectionEstablishmentProcessTheThreeWayHandsh-3.htm ↩︎


http://www.tcpipguide.com/free/t_TCPConnectionEstablishmentSequenceNumberSynchroniz-2.htm ↩︎


http://www.tcpipguide.com/free/t_TCPConnectionTermination-2.htm ↩︎


相关实践学习
容器服务Serverless版ACK Serverless 快速入门:在线魔方应用部署和监控
通过本实验,您将了解到容器服务Serverless版ACK Serverless 的基本产品能力,即可以实现快速部署一个在线魔方应用,并借助阿里云容器服务成熟的产品生态,实现在线应用的企业级监控,提升应用稳定性。
云原生实践公开课
课程大纲 开篇:如何学习并实践云原生技术 基础篇: 5 步上手 Kubernetes 进阶篇:生产环境下的 K8s 实践 相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://www.aliyun.com/product/kubernetes
相关文章
|
缓存 网络协议 安全
TCP通信机制:三次握手、四次挥手、滑动窗口
TCP通信机制:三次握手、四次挥手、滑动窗口
619 1
TCP通信机制:三次握手、四次挥手、滑动窗口
|
网络协议
TCP/UDP相关-三次握手四次挥手以及为什么三次握手-如何实现可靠UDP传输
TCP/UDP相关-三次握手四次挥手以及为什么三次握手-如何实现可靠UDP传输
111 0
|
缓存 网络协议 安全
TCP三次握手四次挥手及常见问题解决方案
TCP三次握手四次挥手及常见问题解决方案
TCP三次握手四次挥手及常见问题解决方案
|
网络协议 测试技术
软件测试|TCP三次握手四次挥手
软件测试|TCP三次握手四次挥手
113 0
软件测试|TCP三次握手四次挥手
|
网络协议
TCP三次握手与四次挥手
TCP三次握手与四次挥手
129 0
|
网络协议 网络性能优化
计算机网络【UDP与TCP协议(三次握手、四次挥手)】(下)
计算机网络【UDP与TCP协议(三次握手、四次挥手)】(下)
计算机网络【UDP与TCP协议(三次握手、四次挥手)】(下)
|
缓存 网络协议 网络性能优化
计算机网络【UDP与TCP协议(三次握手、四次挥手)】(上)
计算机网络【UDP与TCP协议(三次握手、四次挥手)】(上)
计算机网络【UDP与TCP协议(三次握手、四次挥手)】(上)
|
17天前
|
机器学习/深度学习 人工智能 网络协议
TCP/IP五层(或四层)模型,IP和TCP到底在哪层?
TCP/IP五层(或四层)模型,IP和TCP到底在哪层?
28 4
|
网络协议
TCP/IP协议的介绍
TCP/IP协议是众多协议的统称,通过分层结构来管理。可分为七层模型或四层结构
|
网络协议 网络架构
六、TCP/IP模型 和 5层参考模型
六、TCP/IP模型 和 5层参考模型
六、TCP/IP模型 和 5层参考模型