TCP连接的关闭

模拟TCP传输的客户端和服务端 一、创建TCP传输的客户端 1、建立TCP客户端的Socket服务,使用的是Socket对象,建议该对象一创建就明确目的地,即要连接的主机;  2、如果连接建立成功,说明数据传输通道已建立,该通道就是Socket流,是底层建立好的,既然是流,说着这里既有输入流,又有输出流,想要输入流或者输出流对象,可以通过Socket来获取,可以通过getOutputStream()和getInputSt 阅读详情

这是我自己总结的TCP连接关闭是几种情形,不保证正确性与全面性,假定A端和B端通信:

1、双方四次握手的过程;

2、A端半关闭,经过一段时间,B端数据发送完毕并被A端确认,B端半关闭,A端进入TIME_WAIT状态;

3、A端或B端主动直接RST;

4、保活定时器启动:B端停止响应(路由故障,对方主机崩溃、重启,网线被拔等等),迫使A端保活定时器启动,2个小时(具体由协议栈实现)之后B端仍无响应(有若干种情况),A端放弃连接;

5、A端重传定时器启动,经过一段时间(具体由内核决定)尝试重传后,仍得不到B端ACK,A端发送RST;

6、A端坚持定时器启动,B端无响应,尝试若干次后,A段发送RST;

7、A端FIN_WAIT_2定时器超时,B端无响应,A端放弃连接调用tcp_close();

8、设定了linger的closesocket(或者是close)。

 

最好是看内核协议栈的源代码,有时间再研究吧:)

TCP如何关闭连接(详细版) 函数关闭的孤⼉连接,由于⽆法再发送和接收数据,所以这个状态不可以持续太久,⽽tcp_fin_timeout 控制了这个状态下连接的持续时⻓,默认值是。,⾜以让两个⽅向上的数据包都被丢弃,使得原来连接的数据包在⽹络中都⾃然消失,再出现的数据包⼀定都是新建⽴连接所产⽣的。状态,就表示主动⽅的发送通道已经关闭,接下来将等待对⽅发送FIN 报⽂,关闭对⽅的发送通道。,如果接收缓冲区有已接收的数据,则将会被丢弃,并且后续再收到新的数据,会对数据进⾏ ACK。函数的⼀⽅的连接叫做「孤⼉连接」,如果你⽤。 阅读详情

相关推荐

Window下杀掉TCP连接

杀掉TCP的连接,以便于关闭需要关闭的通信

TCP关闭连接

TCP关闭连接

kk的任意门 4907

我的IOCP学习笔记 - EasyIocp

之前我有上传过"完整的IOCP实例" 后来被网友找出bug 所以重新上传 1 http: blog youkuaiyun.com iirecord article details 27840969 这里是关于工程大致说明 2 http: blog youkuaiyun.com iirecord article details 32955109 这里是工程运行展示 3 http: blog youkuaiyun.com iirecord article details 36908835 这里是勘误部分 会根据网友回馈解决bug 更新代码 强烈建议在看此勘误blog 根据勘误blog的链接下载最新版代码 ">之前我有上传过"完整的IOCP实例" 后来被网友找出bug 所以重新上传 1 http: blog youkuaiyun.com iirecord article details 27840969 这里是关于工程大致说明 2 http: blog youkuaiyun.com iirecord article details 32955109 这里是工程运行展示 3 http: blog [更多]

tcp 连接详细关闭过程

TCP协议的连接是全双工连接,一个TCP连接存在双向的读写通道。  简单说来是 “先关读,后关写”,一共需要四个阶段。以客户机发起关闭连接为例: 1.服务器读通道关闭 2.客户机写通道关闭 3.客户机读通道关闭 4.服务器写通道关闭 关闭行为是在发起方数据发送完毕之后,给对方发出一个FIN(finish)数据段。直到接收到对方发送的FIN,且对方收到了接收确认ACK之后,双方的数据通信

baotoushashou的专栏 1776

人工智能100问☞第5问:什么是AI三要素?

人工智能的核心三要素是​​数据、算法和算力​​,分别作为AI的“燃料”、“大脑”和“动力”,三者协同驱动智能系统的学习、推理与决策能力。

bjdx_001的博客 1995

(二)MS-MPI多机通信

1.关于MPI多机通信 一台计算机处理数据的能力是有限的,MPI的主要作用就是用来实现并行计算机,即将多台主机联机,实现大规模、高性能的计算机机群。我们知道一台计算机同时运行多个进程时,由于计算机资源是共享的,多个进程都会占用一些资源,每个进程运行的效率就会降低,比如当一台计算机同时跑着多个大型应用时会变得非常卡顿。所谓多机通信,可以理解为将本应该在同一台主机上运行的多个进程分配到多台主机上,以往...

xinwuya_的博客 4392

高性能网络编程(四)TCP连接的关闭

TCP连接的关闭有两个方法close和shutdown,这篇文章将尽量精简的说明它们分别做了些什么。 为方便阅读,我们可以带着以下5个问题来阅读本文: 当socket被多进程或者多线程共享时,关闭连接时有何区别? 关连接时,若连接上有来自对端的还未处理的消息,会怎么处理? 关连接时,若连接上有本进程待发送却未来得及发送出的消息,又会怎么处理? so_linger这个功能的用处在哪? 对于监听socket执行关闭,和对处于ESTABLISH这种通讯的socket执行关闭,有何区别? 下面分三部分进

傅红雪的专栏 809

【安全加固】应对Sweet32攻击:TLS/SSL协议3DES漏洞深度解析与修复指南

本文深度解析了CVE-2016-2183(Sweet32攻击)漏洞,该漏洞利用TLS/SSL协议中3DES加密算法的64位块大小缺陷,通过大量数据流量实施“生日攻击”导致信息泄露。文章提供了从原理分析、系统排查到跨平台修复的完整指南,重点指导如何在Windows、Linux服务器及网络设备中禁用不安全的3DES密码套件,并采用AES-GCM等更安全的加密方式,以彻底修复此TLS/SSL漏洞。

weixin_29230649的博客 586

TCP连接关闭总结

由于涉及面太广,只作简单整理,有兴趣的可参考《UNIX Networking Programming》volum 1, Section 5.7, 5.12, 5.14, 5.15, 6.6 以及7.5 SO_LINGER选项。以一个简单的echo服务器为例,客户端从标准输入读入字符,发送给服务器,服务器收到后再原样返回,客户端收到后打印到标准输出。那么,关于套接字的关闭有以下几种情形:

Shallway 1万+

【花雕学编程】Arduino FOC 之AS5048A磁编码器模块

您的硬件平台、使用场景和Arduino版本可能影响使用方法的选择。在Arduino平台上实现FOC可以提供平滑的运行和高度的扭矩、速度和位置控制,它通过精确控制电机的电流和电压来实现高效率、高精度和低噪声的操作。5、创新:Arduino可以让你用电子的方式来表达你的创意和想象,你可以用Arduino来制作各种有趣和有用的项目,如机器人、智能家居、艺术装置等。1、高性能电机控制:FOC是一种高级的电机控制算法,可以精准控制PMSM(永磁同步电机)和BLDC(无刷直流)电机,实现平滑的转速和扭矩输出。

雕爷学编程 1496

[Dify] 如何构建一个带评分功能的 Dify AI 教练系统

本文介绍如何利用Dify开源平台构建具备自动评分功能的AI教练系统。系统通过Prompt设计AI教练角色,使用OpenAPI定义评分工具接口,结合工作流编排实现提问、回答收集、评分和反馈的全流程。文章详细讲解了从AI教练身份设定、多维度评分标准设计到前端可视化展示的实现方法,并提供了可扩展建议,适用于语言训练、面试模拟等多种场景。该系统展示了Dify平台在构建智能化评估应用方面的优势,实现零代码开发专业AI教练解决方案。

技术小甜甜:传播可落地技术,帮助个人和企业降低解决真实场景问题的成本 334

TCP的连接和关闭

 TCP 是一个面向连接的协议,无论哪一方向另一方发送数据之前,都必须先在双方之间建立一条连接。本节将详细讨论一个TCP 连接是如何建立的以及通信结束后是如何终止的。建立一个 TCP 连接  TCP使用三次握手 ( three-way handshake ) 协议来建立连接,图 3-10 描述了三次握手的报文序列。这三次握手为: 请求端(通常称为客户)发送一个 SYN 报文段

青青的专栏--C/C++ OOA/D Design Pattern 2543

UE5实现物体高亮描边效果(含UE相关源码浅析)

UE5实现物体高亮描边效果

专注GIS开发 7335

TCP连接的建立与关闭

五层网络模型分为:物理层、数据链路层、网络层、传输层、应用层。其中,传输层有两种主要协议:面向连接的TCP(Transmission Control Protocol 传输控制协议)、无连接的UDP(User Datagram Protocol 用户数据报协议)。   TCP是面向连接的传输层协议,提供点对点的可靠交付服务。TCP是面向字节流的,提供全双工通信,允许连接双方任何时候都能发送数据。 ...

大灰狼的小绵羊哥哥的博客 2951

uniapp - 如何跟内嵌 web-view 组件内的网页交互,与 web-view 内嵌网页进行双向通信(uniapp 与 webview 网页之间的 “相互“ 传值)提供详细的示例代码及解决方案

uni-app如何实现在H5环境中与web-view中的网页交互通讯uniappuni-app 与 web-view内嵌网页 双向通信 如何跟内嵌web-view交互uniappAPP与webview子页面交互uniappAPP与webview子页面交互关于uni-app 使用 web-view 页面之间互相跳转、通信等问题uniapp的web-view嵌入网页,网页与uniapp通信webview如何与uniapp写的H5页面交互嵌套webview调用uniapp各种API组件实现H5和app通讯和交互

✅ 精选推荐文章 1万+

Codex 100个真实案例 - 用AI生成建筑平面图SVG(室内设计师的新武器)

本案例用 Codex 生成一套完整的 Python 脚本,自动绘制 SVG 格式的建筑平面图。我们会设计一个90平两室一厅的户型——客厅、主卧、次卧、厨房、卫生间一应俱全,还会自动摆放家具(沙发、床、餐桌、橱柜)、标注尺寸和面积、绘制水电路走向、生成多种配色方案。最终输出的 SVG 文件可以直接用浏览器打开展示,也可以转成 PNG 交给客户。室内设计师看了都说好!

yueyeguzhuo的专栏 766

TCP连接关闭过程笔记

作者:fbysssmsn:jameslastchina@hotmail.com  blog:blog.youkuaiyun.com/fbysss声明:本文由fbysss原创,转载请注明出处关键字:TCP协议 关闭连接前言:TCP协议的连接是全双工连接,一个TCP连接存在双向的读写通道。 简单说来是 “先关读,后关写”,一共需要四个阶段。以客户机发起关闭连接为例:1.服务器读通道关闭2.客户机写通道关闭3.客户

fbysss的专栏 8943

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

tcp 连接关闭详解

注:tcp关闭连接不区分客户端和服务端,哪一端口可以主动发起关闭连接请求。所以为了描述方便,描述中的“主动方”表示主动发起关闭连接一方,“被动方”表示被动关闭连接一方。 1. tcp关闭连接状态转换   上图是tcp连接主动关闭端的状态转换图: (1)应用层调用close函数发起关闭连接请求 (2)发送FIN到对端,关闭写通道,自己进入FIN_WAIT1状

hjxhjh的专栏 1690

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

Linux 下TCP连接关闭情况分析

一、TCP连接关闭的几种方式: 1、“正常”关闭:调用close()关闭socket、没close但进程正常结束(当然这是不应该的做法)、进程core掉、在shell命令行中kill掉进程,都可抽象成“正常”关闭。因为即使core掉,内核也会马上帮应用程序回收(close)socket文件描述符。      “正常”关闭,默认情况下(非默认即设置Linger下面会介绍),关闭端即客户端TC

zimu2702的专栏 1353

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

面试官:如何关闭一个 TCP 连接?

killcx 工具是主动发送一个 SYN 报文,对方收到后会回复一个携带了正确序列号和确认号的 ACK 报文,这个 ACK 被称之为 Challenge ACK,这时就可以拿到对方下一次期望收到的序列号,然后将序列号填充到伪造的 RST 报文,并将其发送给对方,达到关闭 TCP 连接的效果。上图中,服务端针对 SYN 报文响应的 Challenge ACK 报文里的「确认号」,就是服务端下一次期望收到的序列号,Challenge ACK 报文里的「序列号」,就是客户端下一次期望收到的序列号。

m0_63437643的博客 1197

java 关闭tcp连接,tcp close关闭连接和SIGPIPE信号

经常有人反映发送消息的客户端经常自己挂掉,真的有必要花时间看看了。看了看服务端的日志,一般出现在客户端的某些信息不完整时,服务器关掉连接的时候。通过抓包分析了一下,tcp链接在close的时候,客户端会收到econnrest,不是正常的fin包. 发现close系统调用的时候,服务器端发出rst报文, 而不是正常的fin。如果服务器的接收缓冲区还有数据,服务器协议栈就会发rst代替fin。这是li...

weixin_42128315的博客 912

如何正确关闭TCP连接

如何正确关闭TCP连接 参考自:https://blog.netherlabs.nl/articles/2009/01/18/the-ultimate-so_linger-page-or-why-is-my-tcp-not-reliable 假设我们在两个POSIX兼容操作系统上运行以下两个程序,目的是从程序A发送100万字节来编程B(这里可以在此处找到程序): A: sock = socket(AF_INET, SOCK_STREAM, 0); connect(sock, &remot

专注于C/C++/Linux领域创作 6741

java 关闭的连接_TCP连接的关闭

TCP连接的关闭有两个方法close和shutdown,这篇文章将尽量精简的说明它们分别做了些什么。为方便阅读,我们可以带着以下5个问题来阅读本文:1、当socket被多进程或者多线程共享时,关闭连接时有何区别?2、关连接时,若连接上有来自对端的还未处理的消息,会怎么处理?3、关连接时,若连接上有本进程待发送却未来得及发送出的消息,又会怎么处理?4、so_linger这个功能的用处在哪?5、对于监...

weixin_42315338的博客 1192

安全关闭Tcp连接

第一行是我们输入的数据,这些数据会发送给sender,最后一行是我们接收到的数据大小,很明显是比原来的要少的。这是因为sender本身并没有read操作,所以这些输入的数据会滞留在缓冲区,但是sender发送完数据,直接调用close,根据前面对close的介绍,这时候sender会发送一个RST,导致Tcp连接强行断开,所以nc并没有完全接受完数据。当前在套接字发送缓冲区中的数据将被发送掉,后跟TCP的正常连接终止序列。关闭读功能,套接字中不再有数据可接收,而且套接字接收缓冲区中的现有数据都被丢弃。

weixin_45419466的博客 631
上一篇: 有符号数的向左位移运算
下一篇: 调用closesocket()背后发生的事
HardIOCP
博客等级 码龄16年 7粉丝 13原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值