当前位置: 首页 > news >正文

2.2.2 Posix API与网络协议栈 3

3 断开连接 四次挥手

不分客户端,服务器,只分主动方和被动方

  1. 主:tcp包里fin这一位 置1
  2. 被:回,ack这一位 置1
  3. 被: fin=1
  4. 主:ack=1

与posix api关系,调用了close() ,不是网络的函数,是fd文件系统的函数

  1. fd回收

  2. 发fin空包: close类似send,但是send一个final的空包

    被动方recv返回0说明收到fin空包,知道结束了,那么调用close()

    shutdown()最好别用,没必要 鸡肋

    状态和右下小图对应上

  3. 现象

    1. 不一定先发的数据先到,比如被动方先发的ack还没到主动方,fin先到

      可能的,先fin_wait1-ack-finwait2-timewait

      请添加图片描述

    2. 双方同时调用close

      close-fin-fin_wait1-ack-closing-time_wait

      双方time_wait,如果服务器出现大量time_wait,为什么?就是因为双方同时close,卡住了

      请添加图片描述

小图对应三次握手跳了没看

send - b发syn - a回ack,syn -b 回ack- established

tcp做p2p(peer - to -peer去中心,点对点, 绕开网络快):双方close以后同时建立连接,握手, 没有client server双方平等

connect前 bind绑定端口 optional

请添加图片描述

作业:

2台虚拟机,本地,远程地址 都绑定实现tcp点对点,2份一样代码在a,b

答案:https://gitlab.0voice.com/King/tcp-p2p

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • react redux和@reduxjs/toolkit工具
  • SpringBoot集成kafka-监听器注解
  • 知识图谱问答召回机制-GraphRAG
  • “领导让我帮忙买30杯奶茶,实际花费535元,但领导却只转了500元,我该如何提醒领导转我35元的差额?”
  • 【全开源】php在线客服系统源码 (搭建教程+全新UI)
  • 如何上传NPM包:一步步指南
  • Linux磁盘操作之df命令
  • 利用Pandas的groupby和矢量化运算,减少显式循环,提高处理速度
  • 如何有效激活微信陌生客户:加好友后的沟通策略!
  • 滴滴出行:分布式数据库的架构演进之路|OceanBase案例
  • 【机器学习】线性回归
  • 汇川技术|Inoproshop软件菜单[在线、调试]
  • 如何高质量将PDF拆分多个文件?这6款工具超好用
  • 汽车DV与PV测试
  • SuperMap WebGPA外部大数据集群部署实践
  • [js高手之路]搞清楚面向对象,必须要理解对象在创建过程中的内存表示
  • Brief introduction of how to 'Call, Apply and Bind'
  • CAP 一致性协议及应用解析
  • CODING 缺陷管理功能正式开始公测
  • const let
  • download使用浅析
  • eclipse的离线汉化
  • ES6 ...操作符
  • es6要点
  • JavaSE小实践1:Java爬取斗图网站的所有表情包
  • LeetCode29.两数相除 JavaScript
  • Vue官网教程学习过程中值得记录的一些事情
  • 规范化安全开发 KOA 手脚架
  • 数组的操作
  • 小程序01:wepy框架整合iview webapp UI
  • 一文看透浏览器架构
  • 移动端 h5开发相关内容总结(三)
  • 曜石科技宣布获得千万级天使轮投资,全方面布局电竞产业链 ...
  • #pragma 指令
  • #systemverilog# 之 event region 和 timeslot 仿真调度(十)高层次视角看仿真调度事件的发生
  • (C#)一个最简单的链表类
  • (day 2)JavaScript学习笔记(基础之变量、常量和注释)
  • (Demo分享)利用原生JavaScript-随机数-实现做一个烟花案例
  • (Redis使用系列) Springboot 实现Redis 同数据源动态切换db 八
  • (八十八)VFL语言初步 - 实现布局
  • (超详细)语音信号处理之特征提取
  • (二)【Jmeter】专栏实战项目靶场drupal部署
  • (翻译)Entity Framework技巧系列之七 - Tip 26 – 28
  • (附源码)springboot 智能停车场系统 毕业设计065415
  • (附源码)springboot码头作业管理系统 毕业设计 341654
  • (原創) 如何解决make kernel时『clock skew detected』的warning? (OS) (Linux)
  • (转)GCC在C语言中内嵌汇编 asm __volatile__
  • **Java有哪些悲观锁的实现_乐观锁、悲观锁、Redis分布式锁和Zookeeper分布式锁的实现以及流程原理...
  • .gitignore
  • .net core docker部署教程和细节问题
  • .Net 代码性能 - (1)
  • .NET 中 GetProcess 相关方法的性能
  • .Net 中Partitioner static与dynamic的性能对比
  • .NET中的Event与Delegates,从Publisher到Subscriber的衔接!
  • .Net中的集合