计算机网络学习27:TCP连接与连接释放

简介: 客户端和服务端都是先建立传输控制模块

三次握手


客户端和服务端都是先建立传输控制模块。


SYN=1,表明这是一个TCP连接请求报文段。序号字段seq被设置了一个初始值x,作为TCP客户进程所选择的初始序号。


TCP规定SYN被设置为1的报文段不能携带数据,但要消耗掉一个序号。


由于是TCP客户端主动发起的,因此称为主动打开链接。TCP服务进程是被动打开(监听)


TCP服务端发送的报文中的SYN=1,ACK=1表明这是一个 连接请求确认报文段。seq序号字段作为服务器选择的初始序号,确认号ack为x+1,这是对tcp 客户进程选择的初始序号 的确认。同时这个报文段也不能设置数据,因为这个是SYN被设置为1的报文段。同样也消耗掉一个序号。


这个时候客户端返回的 ACK=1, seq=x+1, ack=y+1,这是因为TCP客户进程发送的第一个TCP报文段的序号为x,并且不携带数据。请注意:TCP规定普通的TCP报文段可以携带数据,如果不携带数据,则不消耗序号。


在这种情况下,所发送的下一个数据报文段的序号仍是seq=x+1。确认号ack=y+1就是对服务器的确认。

TCP客户进程为什么最后还要发送给一个普通的TCP确认报文段呢?换句话说,就是两次握手能否建立连接?

如果改为 两次握手:

这将白白浪费服务器的资源。

四次挥手

客户端发送的报文段首部中的终止位 FIN =1,确认为ACK=1,表明这是一个TCP连接释放报文段。


同时也对之前收到的报文段进行确认:序号seq=u,它等于客户进程发送的最后一个数据的最后字节序号+1,。


ack=v,等于TCP客户进程最后一个进程收到的服务器的seq+1;


TCP规定:终止位FIN=1的报文段即使不携带数据,也要消耗掉一个序号。

30e8da831b334634977deb81c49b813b_watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5rSy55qE5a2m5Lmg56yU6K6w,size_20,color_FFFFFF,t_70,g_se,x_16.png

服务器发的:ACK=1,表明是一个普通的 TCP确认报文段。


序号seq字段的值为v,等于服务器进程之前已传送过的数据的最后一个字节的序号+1;


ack就是对上次的seq=u进行确认+1;同时服务进程通知高层应用进程:客户进程要断开与自己的连接。


此时TCP客户进程到TCP服务进程这个方向的连接就释放了。

这是TCP连接属于半关闭状态。也就是服务器进程到客户进程这个方向的连接没有关闭。

这个状态可能会持续一段时间。等待TCP服务进程发送的释放报文段。

然后TCP高层应用进程就通知 服务进程进行被动释放(没有数据要传输了)。

在TCP客户进程发送的 第二次TCP普通确认中 seq=u+1 是因为 之前发送的TCP连接释放报文段虽然不携带数据,但要消耗掉一个序号。ack就是对之前seq=w的确认了。

MSL:最长报文段寿命。

b96ab5e31951d2709dbf64cdd8d68dc8_watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5rSy55qE5a2m5Lmg56yU6K6w,size_20,color_FFFFFF,t_70,g_se,x_16.png

相关实践学习
深入解析Docker容器化技术
Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。Docker是世界领先的软件容器平台。开发人员利用Docker可以消除协作编码时“在我的机器上可正常工作”的问题。运维人员利用Docker可以在隔离容器中并行运行和管理应用,获得更好的计算密度。企业利用Docker可以构建敏捷的软件交付管道,以更快的速度、更高的安全性和可靠的信誉为Linux和Windows Server应用发布新功能。 在本套课程中,我们将全面的讲解Docker技术栈,从环境安装到容器、镜像操作以及生产环境如何部署开发的微服务应用。本课程由黑马程序员提供。     相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://www.aliyun.com/product/kubernetes
相关文章
|
8月前
|
编解码 异构计算
RT-DETR改进策略【Neck】| BiFPN:双向特征金字塔网络-跨尺度连接和加权特征融合
RT-DETR改进策略【Neck】| BiFPN:双向特征金字塔网络-跨尺度连接和加权特征融合
486 10
RT-DETR改进策略【Neck】| BiFPN:双向特征金字塔网络-跨尺度连接和加权特征融合
|
7月前
|
网络协议 物联网
VB6网络通信软件上位机开发,TCP网络通信,读写数据并处理,完整源码下载
本文介绍使用VB6开发网络通信上位机客户端程序,涵盖Winsock控件的引入与使用,包括连接服务端、发送数据(如通过`Winsock1.SendData`方法)及接收数据(利用`Winsock1_DataArrival`事件)。代码实现TCP网络通信,可读写并处理16进制数据,适用于自动化和工业控制领域。提供完整源码下载,适合学习VB6网络程序开发。 下载链接:[完整源码](http://xzios.cn:86/WJGL/DownLoadDetial?Id=20)
237 12
|
8月前
|
计算机视觉
RT-DETR改进策略【Neck】| GFPN 超越BiFPN 通过跳层连接和跨尺度连接改进RT-DETR颈部网络
RT-DETR改进策略【Neck】| GFPN 超越BiFPN 通过跳层连接和跨尺度连接改进RT-DETR颈部网络
207 12
RT-DETR改进策略【Neck】| GFPN 超越BiFPN 通过跳层连接和跨尺度连接改进RT-DETR颈部网络
|
8月前
|
计算机视觉
YOLOv11改进策略【Neck】| GFPN 超越BiFPN 通过跳层连接和跨尺度连接改进v11颈部网络
YOLOv11改进策略【Neck】| GFPN 超越BiFPN 通过跳层连接和跨尺度连接改进v11颈部网络
1571 10
YOLOv11改进策略【Neck】| GFPN 超越BiFPN 通过跳层连接和跨尺度连接改进v11颈部网络
|
8月前
|
编解码 异构计算
YOLOv11改进策略【Neck】| BiFPN:双向特征金字塔网络-跨尺度连接和加权特征融合
YOLOv11改进策略【Neck】| BiFPN:双向特征金字塔网络-跨尺度连接和加权特征融合
1813 7
YOLOv11改进策略【Neck】| BiFPN:双向特征金字塔网络-跨尺度连接和加权特征融合
|
7月前
|
安全 网络协议 网络安全
当虚拟机出现网络连接问题时,应该先检查Hyper-V的网卡连接配置
当虚拟机出现网络连接问题时,应首先检查Hyper-V的网卡配置。具体步骤包括:确认虚拟机运行状态、检查虚拟交换机类型和物理网卡连接、确保虚拟机网络适配器正确连接到虚拟交换机,并验证网络配置(IP地址等)。常见问题如虚拟交换机配置错误、网络适配器未连接或防火墙阻止连接,可通过重新配置或调整设置解决。必要时重启虚拟机和宿主机,查看事件日志或联系技术支持以进一步排查问题。
|
8月前
|
人工智能 网络协议 IDE
使用通义灵码AI高效学习muduo网络库开发指南
Muduo 是一个基于 C++11 的高性能网络库,支持多线程和事件驱动,适用于构建高效的服务器和应用程序。它提供 TCP/IP 协议支持、异步非阻塞 I/O、定时器、异步日志等功能,并具备跨平台特性。通过 Git 克隆 muduo 仓库并切换至 C++17 分支可开始使用。借助 AI 工具如 Deepseak-v3,用户可以更便捷地学习和理解 Muduo 的核心模块及编写测试用例,提升开发效率。
|
10月前
|
负载均衡 网络协议 算法
不为人知的网络编程(十九):能Ping通,TCP就一定能连接和通信吗?
这网络层就像搭积木一样,上层协议都是基于下层协议搭出来的。不管是ping(用了ICMP协议)还是tcp本质上都是基于网络层IP协议的数据包,而到了物理层,都是二进制01串,都走网卡发出去了。 如果网络环境没发生变化,目的地又一样,那按道理说他们走的网络路径应该是一样的,什么情况下会不同呢? 我们就从路由这个话题聊起吧。
222 4
不为人知的网络编程(十九):能Ping通,TCP就一定能连接和通信吗?
|
8月前
|
网络协议 测试技术 Linux
Golang 实现轻量、快速的基于 Reactor 模式的非阻塞 TCP 网络库
gev 是一个基于 epoll 和 kqueue 实现的高性能事件循环库,适用于 Linux 和 macOS(Windows 暂不支持)。它支持多核多线程、动态扩容的 Ring Buffer 读写缓冲区、异步读写和 SO_REUSEPORT 端口重用。gev 使用少量 goroutine,监听连接并处理读写事件。性能测试显示其在不同配置下表现优异。安装命令:`go get -u github.com/Allenxuxu/gev`。
142 0
|
10月前
|
网络协议
TCP报文格式全解析:网络小白变高手的必读指南
本文深入解析TCP报文格式,涵盖源端口、目的端口、序号、确认序号、首部长度、标志字段、窗口大小、检验和、紧急指针及选项字段。每个字段的作用和意义详尽说明,帮助理解TCP协议如何确保可靠的数据传输,是互联网通信的基石。通过学习这些内容,读者可以更好地掌握TCP的工作原理及其在网络中的应用。

热门文章

最新文章