网络协议系列之十:TCP连接的建立与释放

简介:

TCP连接的建立(三次握手)

1> 客户端发送(主动)一个SYN给服务端(相当于告诉服务端,我要打开连接了,你注意一下)。客户端的状态变化:CLOSED–> SYN_SENT,服务端状态变化:CLOSED–>LISTEN;
2> 服务端收到SYN报文,发送SYN+ACK两个报文给客户端,其中ACK报文是对客户端发来的SYN报文的确认(相当于告诉客户端,我收到你的连接请求了)。而这里的SYN报文则是服务端主动给客户端发送的请求连接报文(相当于告诉客户端,我要和你建立连接了,你注意一下)。服务端的状态变化:LISTEN–>SYN RECEIVED,客户端的状态无变化
3> 客户端收到服务端的SYN+ACK报文,就知道服务端同意自己的连接请求。接着处理SYN报文,就知道服务端要与自己建立连接,于是发送一个ACK报文(相当于告诉服务端,我同意了你的连接请求,让我们愉快的玩耍吧)。服务端收到客户端的ACK报文后,双方的连接就建立起来了。客户端的状态变化:SYN_SENT–>ESTABLISHED;服务端的状态变化:SYN RECEIVED–>ESTABLISHED

TCP连接的释放(四次挥手):

1> 客户端操作结束后,发送FIN报文给服务端(相当于告诉服务端,我要断开连接了)。服务端状态变化:ESTABLISHED–>CLOSE_WAIT,客户端的状态变化:ESTABLISHED–>FIN_WAIT_1;
2> 服务端收到客户端的FIN报文后,知道客户端要断开连接了,发送一个ACK报文(注意:服务端并没有发送FIN报文,表示服务端还没有准备好断开连接。相当于告诉客户端,我知道了,但是我的数据还没有处理完毕,你再等等呗);
3> 客户端收到ACK 报文后,知道服务端收到了自己的断开连接的请求。但是服务端还没有准备断开,那就等呗。客户端的状态变化:FIN_WAIT_1–>FIN_WAIT_2;
4> 服务端传送完毕之后,给客户端发送一个FIN报文(相当于告诉客户端,我也传送数据完毕,准备断开连接了,状态由CLOSE_WAIT–>LAST_ACK),客户端收到FIN报文后,发送一个ACK报文(好了,我知道了。但是客户端担心服务端收不到自己的ACK报文,所以就启动一个计时器,状态由FIN_WAIT_2–>TIME_WAIT),等待的时候是2MSL(也就是2倍最长报文生存时间)。如果超过这个时间,服务器没有发送重传ACK报文的请求,就认为服务端已经收到了自己ACK报文,所以就关闭自己的连接,状态由TIME_WAIT–>CLOSED。服务端如果收到了ACK报文,那么就断开自己的连接。状态由LAST_ACK–>CLOSED。如果ACK报文发生了丢失,就发送一个重传请求,客户端就会重新发送一个ACK报文,并重置计时器。

相关实践学习
通过Ingress进行灰度发布
本场景您将运行一个简单的应用,部署一个新的应用用于新的发布,并通过Ingress能力实现灰度发布。
容器应用与集群管理
欢迎来到《容器应用与集群管理》课程,本课程是“云原生容器Clouder认证“系列中的第二阶段。课程将向您介绍与容器集群相关的概念和技术,这些概念和技术可以帮助您了解阿里云容器服务ACK/ACK Serverless的使用。同时,本课程也会向您介绍可以采取的工具、方法和可操作步骤,以帮助您了解如何基于容器服务ACK Serverless构建和管理企业级应用。 学习完本课程后,您将能够: 掌握容器集群、容器编排的基本概念 掌握Kubernetes的基础概念及核心思想 掌握阿里云容器服务ACK/ACK Serverless概念及使用方法 基于容器服务ACK Serverless搭建和管理企业级网站应用
目录
相关文章
|
7天前
|
负载均衡 网络协议 算法
不为人知的网络编程(十九):能Ping通,TCP就一定能连接和通信吗?
这网络层就像搭积木一样,上层协议都是基于下层协议搭出来的。不管是ping(用了ICMP协议)还是tcp本质上都是基于网络层IP协议的数据包,而到了物理层,都是二进制01串,都走网卡发出去了。 如果网络环境没发生变化,目的地又一样,那按道理说他们走的网络路径应该是一样的,什么情况下会不同呢? 我们就从路由这个话题聊起吧。
29 4
不为人知的网络编程(十九):能Ping通,TCP就一定能连接和通信吗?
|
3天前
|
网络协议
TCP报文格式全解析:网络小白变高手的必读指南
本文深入解析TCP报文格式,涵盖源端口、目的端口、序号、确认序号、首部长度、标志字段、窗口大小、检验和、紧急指针及选项字段。每个字段的作用和意义详尽说明,帮助理解TCP协议如何确保可靠的数据传输,是互联网通信的基石。通过学习这些内容,读者可以更好地掌握TCP的工作原理及其在网络中的应用。
|
29天前
|
监控 网络协议 网络性能优化
网络通信的核心选择:TCP与UDP协议深度解析
在网络通信领域,TCP(传输控制协议)和UDP(用户数据报协议)是两种基础且截然不同的传输层协议。它们各自的特点和适用场景对于网络工程师和开发者来说至关重要。本文将深入探讨TCP和UDP的核心区别,并分析它们在实际应用中的选择依据。
57 3
|
2月前
|
Web App开发 缓存 网络协议
不为人知的网络编程(十八):UDP比TCP高效?还真不一定!
熟悉网络编程的(尤其搞实时音视频聊天技术的)同学们都有个约定俗成的主观论调,一提起UDP和TCP,马上想到的是UDP没有TCP可靠,但UDP肯定比TCP高效。说到UDP比TCP高效,理由是什么呢?事实真是这样吗?跟着本文咱们一探究竟!
72 10
|
1月前
|
网络协议 算法 网络性能优化
计算机网络常见面试题(一):TCP/IP五层模型、TCP三次握手、四次挥手,TCP传输可靠性保障、ARQ协议
计算机网络常见面试题(一):TCP/IP五层模型、应用层常见的协议、TCP与UDP的区别,TCP三次握手、四次挥手,TCP传输可靠性保障、ARQ协议、ARP协议
|
1月前
|
物联网 5G 数据中心
|
2月前
|
Docker 容器
docker swarm启动服务并连接到网络
【10月更文挑战第16天】
46 5
|
2月前
|
安全 网络架构
无线网络:连接未来的无形纽带
【10月更文挑战第13天】
80 8
|
2月前
|
网络协议 Java API
【网络】TCP回显服务器和客户端的构造,以及相关bug解决方法
【网络】TCP回显服务器和客户端的构造,以及相关bug解决方法
72 2