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

内核级理解套接字和全连接队列

一、全连接队列

listen 函数第二个参数 backlog 是输入全连接队列的长度,一般不会太大。那如何理解全连接队列呢?

首先三次握手建立连接的过程和服务器是否 accept 无关,accept 的本质就是把已经建立的连接以文件描述符的形式返回。

那么在服务器来不及 accept 的时候,底层的 TCP 仍然允许用户进行三次握手,建立连接成功之后就会把连接放入全连接队列,即等待服务器 accept 拿走建立好的连接。但是全连接队列不会保存太多建立好的连接,最多保存 backlog + 1 个连接。

就是生产者消费者模型

为什么全连接队列不能为空,或者不能太长?

为空会导致服务器闲置率太高,而且生产者消费者模型不能为空。

太长会导致新连接进入时要等很长时间,因为队伍太长。效率低。

二、内核级理解套接字 socket

首先服务器启动就是一个进程,是进程就会有 pcb,struct files_struct 等,我们就从这里开始。

三、Linux抓包 tcpdump

1、安装

sudo apt-get update
sudo apt-get install tcpdump

2、常见选项

选项含义
-i抓取指定网络接口数据包,-i any 表示抓取所有网络接口数据
-w后面跟文件名,把抓取结果,写入指定文件,但打开是乱码
-r后面跟文件名,把 -w 之后的文件读出来,这个可以看懂
-n把被解释成随机主机名的主机名再解释回去

3、常见指令

(1)tcpdump -i any tcp:指定抓取关于tcp协议的所有网络接口数据包。

(2)tcpdump src host IP地址 and tcp:抓取指定源IP的tcp数据包。

(3)tcpdump dst host IP地址 and tcp:抓取指定目的IP的tcp数据包。

(4)tcpdump port 80 and tcp:抓取指定端口80的tcp数据包。

(5)tcpdump -i eth0 port 80 -w data.pcap:把关于tcp协议的网络接口eth0数据包写入文件data.pcap。

(6)tcpdump -r data.pcap:读出文件data.pcap。


http://www.mrgr.cn/news/39734.html

相关文章:

  • 物联网智能设备:未来生活的变革者
  • centos发送邮件教程:从配置到发送全攻略!
  • 头戴式耳机性价比排名怎样?头戴式耳机性价比之王推荐!
  • 新考纲下的PMP考试有多难?
  • 谁在「力挺」激光雷达
  • 理解 Vue 的 setup 应用程序钩子
  • CDN与高防服务:区别与应用场景
  • YOLO11 | 一年更三版 版版不一样 | 关键改进及网络结构图【全网首发】
  • 深入掌握 Protobuf 与 RPC 的高效结合:实现C++工程中的高效通信
  • 原生 React Native 和 Expo对比
  • 记录一次出现循环依赖问题
  • 【Verilog学习日常】—牛客网刷题—Verilog企业真题—VL69
  • 电商数据洞察新纪元:深度解析API接口集成实战
  • 双十一实用的数码好物分享!学生党必看,性价比超高!
  • 【无人机设计与技术】四旋翼无人机的建模
  • AI异常检测方案实施-基于基准块的无监督学习
  • TIM“PWM”输出比较原理解析
  • 演讲干货整理:泛能网能碳产业智能平台基于 TDengine 的升级之路
  • 影刀---如何进行自动化操作
  • Windows远程Kylin系统-xrdp