Linux中三次握手,四次挥手状态图,端口复用 半关闭状态,心跳包

tcp三次握手和四次挥手状态图:

为什么需要2MSL:

原因1:让四次挥手过程更加可靠,确保最后一个发送给对方的ACK到达;若对方没有收到ACK应答,对方会再次发送FIN请求关闭,此时在2MSL时间内被动关闭方仍然可以发送ACK给对方;

原因2:为了保证在2MSL时间内,不能启用相同的SOCKET_PAIR

问题:

启动服务端和客户端,然后先关闭服务端,又立即启用时会报错:bind error:Adddress already in use;先关闭客户端,又立即启用就不会报错。 

端口复用:

解决端口复用的问题:bind error:Adddress already in use,发生在关闭服务端后,又立即启用。

int setsockopt(int sockfd, int level, int optname,
                      const void *optval, socklen_t optlen);

在bind函数之前调用,添加以下代码就可以解决端口复用:

int opt=1;
setsockopt(lfd,SOL_SOCKET,SO_REUSEADDR,&opet,sizeof(int));

 SO_REUSEADDR:如果*val为非零,重用bind中的地址。

半关闭状态:

如果一方close,另一方没有close,则认为时半关闭状态,处于半关闭状态的时候,可以接收数据,但是不能发送数据,相当于把缓冲区的写缓冲区操作关闭了。

注意:半关闭一定出现在主动关闭的一方。

int shutdown(int sockfd, int how);

函数参数:
sockfd:监听描述符

how:

       If how is  SHUT_RD,
       further  receptions  will  be  disallowed.   If how is SHUT_WR, further
       transmissions will be disallowed.  If how is SHUT_RDWR, further  recep‐
       tions and transmissions will be disallowed.
 

shutdown和close的区别:

1 shutdown可以实现半关闭,close不行;

2 shutdown关闭的时候,不考文件描述符的引用计数,是彻底关闭;

  close考虑文件描述符的引用计数(创建子进程加一,dup函数也加一),调用一次close只是将引用次数减一,只有减到零才真正关闭。 

长连接和短连接:

长连接:连接建立好之后,一直保持连接不关闭

短连接:连接使用完之后就立刻关闭。

心跳包:

心跳包是用于长连接是否正常的字符串;

作用:检查与对方的连接是否正常;

心跳包一般用于长连接。 

发送心跳过程:

1 服务A给B发送心跳数据AAAA,服务B收到AAAA之后,给A回复BBBB,此时A收到BBBB之后,认为连接正常。

假如A连续发送多次(3~5)之后,仍然没有收到B的回复,则认为连接异常。

异常之后,A应该重新建立连接:

先close原来的连接,然后在connect连接。

如何让心跳数据和正常的业务数据不混淆:

解决方法:

双方可以协商协议,如四个字节长度+具体数据

如果对方发送心态数据应该:0004AAAA;

如果发送业务数据:0009123456789;

对方收数据的时候,先收4个字节的报头数据,若最后计算长度为4,且数据内容是AAAA,则认为是心跳数据,然后B发送0004BBBB。 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/737770.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

盛元广通粮油质量检测实验室管理系统

近年来对于食品安全问题层出不穷,为提高粮食检测中心管理水平,关系到千千万万的消费者的健康饮食问题,粮油作为老百姓日常生活饮食必需品、消耗品,需从源头上对粮食在本省(区、市、县)不同粮食品种检测检测…

Intel@cpu产品参数和命名@单核睿频和全核睿频

文章目录 选择合适的cpuintel cpu型号和命名小结 cpu排行时钟速度睿频单核睿频和全核睿频网络上流传的方法 在线查询 产品比较跑分比较 选择合适的cpu 如何选择游戏 CPU - 英特尔 (intel.cn)在决定购买具体的产品之前,建议广泛地查阅用户对它的评价以及是否有哪些因素是不满足…

7个学习自动化测试小技巧希望能帮助到你

一、编程语言 当我开始担任手动测试人员时,我不喜欢编码。但是,当我逐渐进入自动化领域时,对我来说很清楚,如果没有对编程语言的一些基本了解,就无法编写逻辑自动化测试脚本。 对编程有一点了解,不仅可以…

网络安全防御保护 Day7

1.因为FW1和FW2已处于双机热备状态,所以只需要对主设备进行配置即可。进入FW1的配置界面,选择“网络”界面,点击“IPsec”,进行IPsec通道的基本配置,这里选择的是“电信”链路。 2.完成上述配置后,进行待加…

揭秘防爆气象仪器:超声波监测原理如何守护安全?

TH-WFB5随着科技的不断进步,防爆气象仪器已成为现代工业生产中不可或缺的重要设备。这些仪器采用先进的超声波监测原理,能够实时、准确地监测环境中的各种气象参数,为企业的安全生产提供有力保障。 一、超声波监测原理简介 超声波是指频率高于…

从焦虑到成功:一个软件测试工程师的逆袭之路

日常大家聊天时经常提及一个关键词——大环境不好,由此带来了很多行为的变化,有的人迷茫,有的人躺平。本文给大家介绍发生在我身上和身边的真实案例,希望能带给你一些输入。 案例一:曾经的我也极度焦虑 我是2008年参加…

BUU [网鼎杯 2020 半决赛]AliceWebsite

BUU [网鼎杯 2020 半决赛]AliceWebsite 开题&#xff1a; hint附件是源码。在index.php中有一个毫无过滤的本地文件包含 <?php $action (isset($_GET[action]) ? $_GET[action] : home.php); if (file_exists($action)) {include $action; } else {echo "File not…

Unity接入海量RTSP直播流,多线程渲染

Unity 播放海量RTSP视频&#xff0c;多线程播放&#xff0c;长时间运行稳定 Unity 播放海量RTSP视频&#xff0c;多线程渲染 使用的libvlc库&#xff0c;目前支持windows、Linux平台 25路视频同时播放&#xff0c;测试持续运行1晚上&#xff0c;运行稳定&#xff0c;不掉帧&am…

安卓studio安装(从安装到配置到helloworld)

安卓studio安装 2024.3.11官网的版本&#xff08;有些翻墙步骤下载东西也解决了&#xff09; 这次写的略有草率&#xff0c;后面会更新布局的&#xff0c;因为截图量太大了&#xff0c;有需要的小伙伴可以试着接受一下哈哈哈哈 !(https://gitee.com/jiuzheyangbawjf/img/raw/ma…

二叉搜索树题目:前序遍历构造二叉搜索树

文章目录 题目标题和出处难度题目描述要求示例数据范围 解法一思路和算法代码复杂度分析 解法二思路和算法代码复杂度分析 解法三思路和算法代码复杂度分析 解法四思路和算法代码复杂度分析 题目 标题和出处 标题&#xff1a;前序遍历构造二叉搜索树 出处&#xff1a;1008. …

【解决】Sublime Text找不到Package Control选项,且输入install也不显示Install Package(其中一种情况)

【问题描述】 Sublime Text 找不到 Package Control 选项&#xff0c;且输入 install 也不显示 Install Package 【解决方法】&#xff08;其中一种情况&#xff09; 1、工具栏 Preferences -> Settings&#xff0c;点开查看设置文档 2、检查 "ignored_packages&q…

提示并输入一个字符串,统计该字符中大写、小写字母个数、数字个数、空格个数以及其他字符个数要求使用C++风格字符串完成

#include <iostream> #include <array> using namespace std;int main() {cout<<"请输入一个字符串"<<endl;//array<string,100> str;string str;getline(cin,str);int daxie0,xiaoxie0,num0,space0,other0;int lenstr.size();;for(in…

使用sunny-Ngrok免费实现内网穿透

1、注册用户 网址&#xff1a;https://ngrok.cc/login/register 2、实名认证 注册成功之后&#xff0c;登录系统&#xff0c;进行实名认证&#xff0c;认证费两元。认证通过后才能开通隧道。 3、开通隧道 选择免费的隧道 4、开通成功后查看开通隧道 5、启动隧道 下载…

日常002:双系统时间不一致问题

日常002&#xff1a;双系统时间不一致问题 推荐解决方法&#xff1a;Windows管理员执行如下命令&#xff0c;将硬件时钟设置为UTC时间 reg add "HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\TimeZoneInformation" /v RealTimeIsUniversal /d 1 /t REG_DWO…

计算机网络—以太网接口和链路配置

目录 1.拓扑图 2.以太网交换机基础配置 3.配置手动模式的链路聚合 4.配置静态 LACP 模式的链路聚合 5.配置文件 1.拓扑图 2.以太网交换机基础配置 华为交换机接口默认开启了自协商功能&#xff0c;需要手动配置S1与 S2上G0/0/9和G0/0/10接口的速率。 首先修改交换机的设…

力扣--动态规划97.交错字符串

思路分析&#xff1a; 动态规划数组定义&#xff1a; dp[i][j] 表示&#xff1a;使用字符串 s1 的前 i 个字符和字符串 s2 的前 j 个字符&#xff0c;能否构成字符串 s3 的前 i j 个字符的交错组合。 初始化&#xff1a; dp[0][0] 初始化为 1&#xff0c;表示空串是 s1 和 s2 …

蓝桥杯[OJ 2928]分糖果-CPP(贪心、字典序)

目录 一、题目描述&#xff1a; 二、整体思路 (一)字典序比较规则 (二)正确理解题意 &#xff08;三&#xff09;分类讨论 三、代码 一、题目描述&#xff1a; 二、整体思路 (一)字典序比较规则 首先要知道字典序是怎么比较大小的&#xff0c;简单来说按以下次序进行比较&am…

再也不想去字节跳动面试了,6年测开面试遭到这样打击.....

前几天我朋友跟我吐苦水&#xff0c;这波面试又把他打击到了&#xff0c;做了快6年软件测试员。。。为了进大厂&#xff0c;也花了很多时间和精力在面试准备上&#xff0c;也刷了很多题。但题刷多了之后有点怀疑人生&#xff0c;不知道刷的这些题在之后的工作中能不能用到&…

权限管理系统-0.4.0

五、权限管理 5.1 引入JWT JWT是JSON Web Token的缩写&#xff0c;即JSON Web令牌&#xff0c;是一种自包含令牌。 是为了在网络应用环境间传递声明而执行的一种基于JSON的开放标准。 JWT的声明一般被用来在身份提供者和服务提供者间传递被认证的用户身份信息&#xff0c;以…

C语言基础练习——Day05

目录 选择题 编程题 数字在升序数组中出现的次数 整数转换 选择题 1、如下程序的功能是 #include <stdio.h> int main() {char ch[80] "123abcdEFG*&";int j;puts(ch);for(j 0; ch[j] ! \0; j){if(ch[j] > A && ch[j] < Z)ch[j] ch[j] e…