对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 ↩︎


相关实践学习
通过Ingress进行灰度发布
本场景您将运行一个简单的应用,部署一个新的应用用于新的发布,并通过Ingress能力实现灰度发布。
容器应用与集群管理
欢迎来到《容器应用与集群管理》课程,本课程是“云原生容器Clouder认证“系列中的第二阶段。课程将向您介绍与容器集群相关的概念和技术,这些概念和技术可以帮助您了解阿里云容器服务ACK/ACK Serverless的使用。同时,本课程也会向您介绍可以采取的工具、方法和可操作步骤,以帮助您了解如何基于容器服务ACK Serverless构建和管理企业级应用。 学习完本课程后,您将能够: 掌握容器集群、容器编排的基本概念 掌握Kubernetes的基础概念及核心思想 掌握阿里云容器服务ACK/ACK Serverless概念及使用方法 基于容器服务ACK Serverless搭建和管理企业级网站应用
相关文章
|
缓存 网络协议 安全
TCP通信机制:三次握手、四次挥手、滑动窗口
TCP通信机制:三次握手、四次挥手、滑动窗口
801 1
TCP通信机制:三次握手、四次挥手、滑动窗口
|
缓存 网络协议 安全
TCP三次握手四次挥手及常见问题解决方案
TCP三次握手四次挥手及常见问题解决方案
TCP三次握手四次挥手及常见问题解决方案
|
网络协议 测试技术
|
网络协议 网络性能优化
计算机网络【UDP与TCP协议(三次握手、四次挥手)】(下)
计算机网络【UDP与TCP协议(三次握手、四次挥手)】(下)
计算机网络【UDP与TCP协议(三次握手、四次挥手)】(下)
|
缓存 网络协议 网络性能优化
计算机网络【UDP与TCP协议(三次握手、四次挥手)】(上)
计算机网络【UDP与TCP协议(三次握手、四次挥手)】(上)
计算机网络【UDP与TCP协议(三次握手、四次挥手)】(上)
|
网络协议
TCP/UDP相关-三次握手四次挥手以及为什么三次握手-如何实现可靠UDP传输
TCP/UDP相关-三次握手四次挥手以及为什么三次握手-如何实现可靠UDP传输
157 0
|
网络协议
TCP三次握手与四次挥手
TCP三次握手与四次挥手
164 0
|
7月前
|
机器学习/深度学习 人工智能 网络协议
TCP/IP五层(或四层)模型,IP和TCP到底在哪层?
TCP/IP五层(或四层)模型,IP和TCP到底在哪层?
135 4
|
监控 网络协议 网络架构
IP协议【图解TCP/IP(笔记九)】
IP协议【图解TCP/IP(笔记九)】
161 0
|
域名解析 网络协议
IP协议, TCP协议 和DNS 服务分别是干什么的?
大家好,我是阿萨。昨天讲解了网络四层协议[TCP/IP协议族分为哪4层?]今天我们学习下IP 协议, TCP 协议和DNS 协议分别是干什么的。
314 0
IP协议, TCP协议 和DNS 服务分别是干什么的?

热门文章

最新文章