| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 网络协议 -> 【网络是怎么连接的】—— 2.4 从服务器断开并删除套接字 -> 正文阅读 |
|
[网络协议]【网络是怎么连接的】—— 2.4 从服务器断开并删除套接字 |
目录 ??????? 2.4.1 数据发送完毕后断开连接收发数据结束的时间点:应用程序判断所有数据都已经发送完毕 这时,发送方发起断开过程,但不同的应用程序会选择不同的断开时机。有的需要等服务器响应,有的不用。当然,服务器这边也可以发起断开过程,假设现在服务器发起断开: 首先,服务器的应用程序调用 Socket 库的 close 程序,然后协议栈生成包含断开信息的TCP头部(将控制位中的 FIN 比特设为 1),然后还是和之前介绍的一样,协议栈委托IP模块发送数据,服务器的套接字也会记录断开操作的相关信息。 客户端收到信息,协议栈将套接字标记为断开状态,然后向服务器返回ACK应答。当应用程序向协议栈要数据时,协议栈会告诉它数据已经全部接收完了。这时客户端的应用程序也会像服务器一样,调用 close 来结束数据收发操作,并告诉服务器,服务器返回应答,通信正式结束。 2.4.2 删除套接字通信结束就可以删除套接字了,但为了防止误删,会等待一段时间再删除。误删的可能情况有: 客户端发送 FIN、服务器返回 ACK 号、服务器发送 FIN、客户端返回 ACK 号。 这里同样要考虑丢包的情况,如果最后客户端返回的ACK丢失,服务器可能会重发一次FIN,但如果客户端的套接字已经删除了,端口释放,重新分给了别的程序,这时的这个FIN就发错了对象,导致别的程序执行断开操作。 具体等待的时间和包重传的操作方式有关,一般会等待几分钟。 2.4.3 数据收发操作小结1. 创建套接字。 2. 连接操作。 客户端生成一个 SYN 为 1 的 TCP 包并发送给服务器,TCP 包的头部还包含了客户端向服务器发送数据时使用的初始序号,以及服务器向客户端发送数据时需要用到的窗口大小。 服务器接收后也返回一个 SYN 为 1 的TCP 包,这个包的头部中也包含了序号和窗口大小,此外还包含表示确认已收到前面的包的 ACK 号,然后客户端也会向服务器返回一个包含表示确认的 ACK 号的TCP 包,连接操作结束。 3.收发消息。 客户端向服务器发送请求消息。TCP 会将请求消息切分成一定大小的块,并在每一块前面加上 TCP 头部,头部中包含序号,它表示当前发送的是第几个字节的数据。 服务器收到数据时,会向客户端返回 ACK 号,不不断将新的窗口大小告知客户端。 4. 断开操作。 服务器会发起断开过程。服务器先发送一个 FIN 为 1 的 TCP 包,客户端返回一个表示确认收到的 ACK 号,然后双方还会交换一组方向相反的 FIN 为 1 的TCP 包和包含 ACK 号的 TCP,然后等一段时间后套接字删除。 本节完。 |
|
网络协议 最新文章 |
使用Easyswoole 搭建简单的Websoket服务 |
常见的数据通信方式有哪些? |
Openssl 1024bit RSA算法---公私钥获取和处 |
HTTPS协议的密钥交换流程 |
《小白WEB安全入门》03. 漏洞篇 |
HttpRunner4.x 安装与使用 |
2021-07-04 |
手写RPC学习笔记 |
K8S高可用版本部署 |
mySQL计算IP地址范围 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/15 14:02:20- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |