【网络基础】03、TCP传输连接的建立与释放

本文涉及的产品
容器服务 Serverless 版 ACK Serverless,317元额度 多规格
容器服务 Serverless 版 ACK Serverless,952元额度 多规格
简介:

一、TCP的传输连接管理的三个阶段 

IP协议的作用范围提供主机之间的逻辑通信

TCP和UDP协议的作用范围提供进程之间的逻辑通信

TCP (Transmission Control Protocol)   传输控制协议

UDP (User Datagram Protocol )      用户数据报协议

  当运输层采用面向连接的TCP协议时,尽管下面的网络是不可靠的(只提供尽最大努力服务),但这种逻辑通信信道就相当于一条全双工的可靠信道

当运输层采用无连接的UDP协议时,这种逻辑通信信道是一条不可靠信道


1、TCP连接的建立都是采用客户端/服务器方式

主动发起连接建立的应用进程叫做客户端(client)。

被动等待连接建立的应用进程叫做服务器(server)。

传输连接就有三个阶段,即:连接建立数据传送连接释放

传输连接的管理就是使传输连接的建立和释放都能正常地进行


2、连接建立过程中要解决以下三个问题

要使每一方能够确知对方的存在

要允许双方协商一些参数(如最大报文段长度,最大窗口大小,服务质量等)。

能够对运输实体资源(如缓存大小,连接表中的项目等)进行分配。


3、TCP连接的状态转移

wKiom1YecEfCaZ9KAAO3hp3xJ8c981.jpg


wKioL1hP4BjAKdisAAF6UIMMdeM284.png

4、TCP的三次握手建立传输连接

TCP的状态 (SYN, FIN, ACK, PSH, RST, URG)

wKiom1YeH-6yoxLxAAFBKkyzRK8136.jpg


在TCP层,有个FLAGS字段,这个字段有以下几个标识:

SYN  synchronous     建立联机 

ACK  acknowledgement  确认

PSH  push         传送 

FIN  finish        结束

RST  reset         重置

URG  urgent        紧急

Sequence number      顺序号码

acknowledge number    确认号码

其中,对于我们日常的分析有用的就是前面的五个字段。

第一次握手主机A向B发出连接请求报文段

  其首部中发送位码为:同步位为SYN=1,并随机产生序号seq=x,表明传送数据时的第一个数据字节的序号是x;并进入SYN_SEND状态,等待服务器确认; 


第二次握手:主机B收到连接请求报文段后(主机B由SYN=1知道,A要求建立联机),如同意,则发回确认;

  B在确认报文段中应使SYN=1,ACK=1,其确认号ack=x+1,自己选择的序号seq=y的包;此时服务器进入SYN_RECV状态;


第三次握手:主机A收到此报文段后B给出确认

  B在确认报文段中使用ACK=1,确认号ack=y+1,序号为seq=x+1

  

A的TCP通知上层应用进程,连接已经建立

B的TCP收到主机A的确认后,也通知其上层应用进程;TCP连接已经建立


5、TCP的4次挥手释放传输连接

wKioL1YeJI7jYw0VAAE5E7jA8oI033.jpg

第一次挥手:数据传输结束后,通信的双方都可释放连接 

  现在A的应用进程先向其TCP发出连接释放报文段,并停止再发送数据,主动关闭 TCP连接。

A把连接释放报文段首部的FIN = 1,其序号seq = u,等待B的确认。


第二次挥手:B发出确认

  确认报文段中,ACK=1,确认号ack = u +1,而这个报文段自己的序号 seq = v。

  TCP服务器进程通知高层应用进程,从A到B这个方向的连接就释放了,TCP连接处于半关闭状态;

B若发送数据,A仍要接收


第三次挥手:若B已经没有要向A发送的数据,其应用进程就通知TCP释放连接

  在确认报文段中 FIN=1,ACK= 1,确认号ack=u +1,自己的序号seq=w;


第四次挥手: A收到连接释放报文段后,必须发出确认

在确认报文段中 ACK=1,确认号ack=w+1,自己的序号 seq =u+1。 


二、常问问题

1、为什么建立连接协议是三次握手,而关闭连接却是四次挥手呢?

  这是因为服务端的LISTEN状态下的SOCKET当收到SYN报文的连接请求后,它可以把ACK和SYN(ACK起应答作用,而SYN起同步作用)放在一个报文里来发送但关闭连接时,当收到对方的FIN报文通知时,它仅仅表示对方没有数据发送给你了;但未必你所有的数据都全部发送给对方了,所以你可能未必会马上会关闭SOCKET,也即你可能还需要发送一些数据给对方之后,再发送FIN报文给对方来表示你同意现在可以关闭连接了,所以它这里的ACK报文和FIN报文多数情况下都是分开发送的。

 

2、为什么TIME_WAIT状态还需要等2MSL后才能返回到CLOSED状态? 

MSL 报文最大生存时间,他是任何报文在网络上存在的最长时间,超过这个时间报文将被丢弃

  这是因为虽然双方都同意关闭连接了,而且挥手的4个报文也都协调和发送完毕,按理可以直接回到CLOSED状态(就好比从SYN_SEND状态到ESTABLISH状态那样);但是因为我们必须要假想网络是不可靠的,你无法保证你最后发送的ACK报文会一定被对方收到,因此对方处于LAST_ACK状态下的SOCKET可能会因为超时未收到ACK报文,而重发FIN报文,所以这个TIME_WAIT状态的作用就是用来重发可能丢失的ACK报文。


3、为什么不能用两次握手进行连接?

  我们知道,3次握手完成两个重要的功能,既要双方做好发送数据的准备工作(双方都知道彼此已准备好),也要允许双方就初始序列号进行协商,这个序列号在握手过程中被发送和确认
  如果把三次握手改成仅需要两次握手,死锁是可能发生的。

作为例子,考虑计算机S和C之间的通信,假定C给S发送一个连接请求分组,S收到了这个分组,并发送了确认应答分组。按照两次握手的协定,S认为连接已经成功地建立了,可以开始发送数据分组。可是,C在S的应答分组在传输中被丢失的情况下,将不知道S是否已准备好,不知道S建立什么样的序列号,C甚至怀疑S是否收到自己的连接请求分组。在这种情况下,C认为连接还未建立成功,将忽略S发来的任何数据分组,只等待连接确认应答分组。而S在发出的分组超时后,重复发送同样的分组。这样就形成了死锁。















本文转自xiexiaojun51CTO博客,原文链接: http://blog.51cto.com/xiexiaojun/1882424  ,如需转载请自行联系原作者
相关实践学习
通过Ingress进行灰度发布
本场景您将运行一个简单的应用,部署一个新的应用用于新的发布,并通过Ingress能力实现灰度发布。
容器应用与集群管理
欢迎来到《容器应用与集群管理》课程,本课程是“云原生容器Clouder认证“系列中的第二阶段。课程将向您介绍与容器集群相关的概念和技术,这些概念和技术可以帮助您了解阿里云容器服务ACK/ACK Serverless的使用。同时,本课程也会向您介绍可以采取的工具、方法和可操作步骤,以帮助您了解如何基于容器服务ACK Serverless构建和管理企业级应用。 学习完本课程后,您将能够: 掌握容器集群、容器编排的基本概念 掌握Kubernetes的基础概念及核心思想 掌握阿里云容器服务ACK/ACK Serverless概念及使用方法 基于容器服务ACK Serverless搭建和管理企业级网站应用
相关文章
|
9天前
|
网络协议 网络安全 网络虚拟化
本文介绍了十个重要的网络技术术语,包括IP地址、子网掩码、域名系统(DNS)、防火墙、虚拟专用网络(VPN)、路由器、交换机、超文本传输协议(HTTP)、传输控制协议/网际协议(TCP/IP)和云计算
本文介绍了十个重要的网络技术术语,包括IP地址、子网掩码、域名系统(DNS)、防火墙、虚拟专用网络(VPN)、路由器、交换机、超文本传输协议(HTTP)、传输控制协议/网际协议(TCP/IP)和云计算。通过这些术语的详细解释,帮助读者更好地理解和应用网络技术,应对数字化时代的挑战和机遇。
41 3
|
20天前
|
网络协议 算法 网络性能优化
计算机网络常见面试题(一):TCP/IP五层模型、TCP三次握手、四次挥手,TCP传输可靠性保障、ARQ协议
计算机网络常见面试题(一):TCP/IP五层模型、应用层常见的协议、TCP与UDP的区别,TCP三次握手、四次挥手,TCP传输可靠性保障、ARQ协议、ARP协议
|
23天前
|
物联网 5G 数据中心
|
27天前
|
Docker 容器
docker swarm启动服务并连接到网络
【10月更文挑战第16天】
26 5
|
1月前
|
安全 网络架构
无线网络:连接未来的无形纽带
【10月更文挑战第13天】
66 8
|
1月前
|
存储 网络协议 Java
【网络】UDP回显服务器和客户端的构造,以及连接流程
【网络】UDP回显服务器和客户端的构造,以及连接流程
52 2
|
1月前
|
人工智能 安全 搜索推荐
|
1月前
|
监控 安全 5G
|
1月前
|
网络协议 网络架构
【第三期】计算机网络常识/网络分层模型与数据包封装传输过程
【第三期】计算机网络常识/网络分层模型与数据包封装传输过程
46 0

热门文章

最新文章