首页 > 其他分享 >socket通讯

socket通讯

时间:2023-05-22 14:55:42浏览次数:37  
标签:通讯 socket tcp 回收 进程 连接 服务端 客户端

1、为什么要建立三次连接
确保资源能准确到达,如果只建立2次连接,比如客户端第一次发出消息后,服务端没有返回确认,这时候客户端第二次发出一个消息,然后服务端收到了消息,并告诉客户端我收到了,当客户端与服务端断开连接后,服务端又收到了第一次发送的消息,并回复客户端我收到了,这时候客户端会产生疑问,我并没有向服务端发送消息,为什么会服务端会返回一个消息说我收到了。

2、当一方没有正常发出关闭连接信号会怎样,也就是未发送close(),要看客户端服务端进程是否还存在
客户端与服务端还会保持一段时间的tcp连接,linux中有一个保活机制进行计算时间默认7200秒、探测次数9次、时间间隔75秒
保活机制文件地址:proc/sys/net/ipv4下面
tcp_keepalive_time 保活时间
tcp_keepalive_intvl 保活间隔
tcp_keepalive_probes 探测次数

3、保活机制存在哪些弊端
1) 在出现短暂的网络错误的时候,保活机制会使一个正常的连接断开
2) 保活机制会占用不必要的带宽


4、tcp连接资源回收4种情况
情况1:客户端进程还在,服务端进程还在,2端系统是否会自动回收tcp连接
结果:tcp连接状态为established 不会自动断开连接

情况2:客户端进程不在,服务端进程不在,2端系统是否会自动回收tcp连接
结果: 先kill掉客户端进程后,tcp连接状态进入time_wait,过一段时间会自动回收,服务端会立即回收tcp连接
先kill掉服务端进程后,tcp连接状态进入time_wait,过一段时间会自动回收,客户端会立即回收tcp连接

情况3:客户端进程还在,服务端进程不在,2端系统是否会自动回收tcp连接
结果:先kill掉服务端进程后,tcp连接状态进入fin_wait2,然后连接会自动释放,客户端tcp状态进入close_wait,该状态不会自动回收,kill掉后进入 lask_ack状态

情况4: 客户端进程不在,服务端进程还在,2端系统是否会自动回收tcp连接
结果:先kill掉客户端进程后, tcp连接状态进入time_wait,过一段时间会自动回收,服务端会立即回收tcp连接

标签:通讯,socket,tcp,回收,进程,连接,服务端,客户端
From: https://www.cnblogs.com/sheshidu/p/17420607.html

相关文章

  • 【iOS开发】后台定位&&socket长链接
    参考:iOS9后台定位无限后台定位注意:这个上架appstore可能会被拒绝,如果你的应用不是和地图类相关的话。目前没想到好的解决方案,有的话请发邮件告诉博主一下,谢谢!!!......
  • socket UDP
    UDP套接字概述在使用TCP编程和使用UDP编程之间存在一些本质差异,其原因在于这两个传输层之间的差别:UDP是无连接不可靠的数据报协议,不同于 TCP 提供的面向连接的可靠字节流。从资源的角度来看,相对来说UDP套接字开销较小,因为不需要维持网络连接,而且因为无需花费时间来连接,所以U......
  • 基于 Socket 接口实现自定义协议通信
    访问【WRITE-BUG数字空间】_[内附完整源码和文档]根据自定义的协议规范,使用Socket编程接口编写基本的网络应用软件。掌握C语言形式的Socket编程接口用法,能够正确发送和接收网络数据包开发一个客户端,实现人机交互界面和与服务器的通信开发一个服务端,实现并发处理多个客户端......
  • ICS TRIPLEX工业通讯模块T8110B
    W;① ⑧ 0 ③  0 ① ⑦  7  7 ⑤  9ICSTRIPLEX工业通讯模块T8110B,T8403,T8431,T8403,T8461,T8461C,T8110B,T8403。T8403C,T9432,T9110,T9451,ICSTRIPLEX工业通讯模块T8110B,T8403,T8431,T8403,T8461是电喷发动机控制系统中最重要的传感器之一。发动机转速传感器的作......
  • C# socket的基本理解
    博客园中看到的比较准确的socket理解个人学习用途博客部分内容摘抄自网络......
  • AS3 Socket 通信基础(一)
    我们先来搞清几个概念,这有助于我们更加了解网络通信!  1、网络中进程之间如何通信?  首要解决的问题是如何唯一标识一个进程,否则通信无从谈起!在本地可以通过进程PID来唯一标识一个进程,但是在网络中这是行不通的。其实TCP/IP协议族已经帮我们解决了这个问题,网络层的“ip地址”可......
  • springboot集成websocket
    导入依赖1<dependency>2<groupId>org.springframework.boot</groupId>3<artifactId>spring-boot-starter-websocket</artifactId>4</dependency>编写配置类@ConfigurationpublicclassWebSocketConfig{@Beanpub......
  • permission denied while trying to connect to the Docker daemon socket at unix://
     001、普通用户操作docker遇到如下问题permissiondeniedwhiletryingtoconnecttotheDockerdaemonsocketatunix:///var/run/docker.sock:Get"http://%2Fvar%2Frun%2Fdocker.sock/v1.24/images/json":dialunix/var/run/docker.sock:connect:permissiondenied......
  • c++ socket API使用流程(转)
    原文:https://blog.csdn.net/weixin_43687811/article/details/122657720?spm=1001.2101.3001.6650.16&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7ERate-16-122657720-blog-121686590.pc_relevant_multi_platform_featuressor......
  • SpringBoot实现WebSocket发送接收消息 + Vue实现SocketJs接收发送消息
    SpringBoot实现WebSocket发送接收消息+Vue实现SocketJs接收发送消息参考:1、https://www.mchweb.net/index.php/dev/887.html2、https://itonline.blog.csdn.net/article/details/81221103?spm=1001.2101.3001.6661.1&utm_medium=distribute.pc_relevant_t0.none-task-blog-2......