IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: 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 数据发送完毕后断开连接

2.4.2 删除套接字

2.4.3 数据收发操作小结


???????

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地址范围
上一篇文章      下一篇文章      查看所有文章
加:2021-09-05 11:23:21  更:2021-09-05 11:24:40 
 
开发: 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-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码