Tomiaocat 的个人博客 Tomiaocat 的个人博客
Tags Archives Links
  • 开始使用
  • Tags
  • Archives
  • Links
  • Search
  • RSS
问: 我的服务器A请求服务器B,是一个http请求,且我的服务器A安全组入站规则只开放了80端口,假设这一次请求的四元组是[A:25056,B:80],B服务器响应的时候应该算是A服务器的入站,但A服务器只开放了80端口入站,为什么A还能收到B的响应? 答: 你提出的这个问题非常棒,它触及了TCP/IP协议栈中状态跟踪(Stateful Inspection)的关键机制。 核心解释:TCP连接的状态跟踪 你的服务器A能够收到服务器B的响应,即使A的安全组只开放了80端口入站,原因在于: TCP连接的建立是双向的: 当服务器A(客户端角色)主动向服务器B(服务器角色)发起一个TCP连接时,A会从一个临时端口(你例子中的25056)向B的80端口发送SYN包。这个过程是A主动发起的出站连接。 安全组(或防火墙)是状态化的: 现代的安全组(无论是云平台上的安全组,还是Linux系统上的iptables等防火墙)都是有状态的(Stateful)。这意味着它们会跟踪已建立的连接状态。 允许已建立连接的回包: 当服务器A从25056端口发起连接到服务器B的80端口时,安全组会记录下这个出站连接的状....

HTTP请求的响应回来时为什么不被入站安全组限制?

TCP
首先看到发起请求的1ms内就不可能是对方原因,主要排查方向在我方请求工具类, 按照日志找到HttpUtils工具类所在行,然后打开git提交记录,看看别人最近改了啥, 果然,领导改我工具类了,还多复制了一行检查空闲链接的事件居然调到了600000毫秒,600秒检查一次空闲连接,是有可能拿到半死不活的连接,先恢复到之前的二十秒,上线观察

发起HTTP请求,1毫秒内NoHttpResponseException 问题排查

待分类
HTTP 报文的结构是严格定义的: 起始行 (Start Line):例如 POST /path HTTP/1.1 头部字段 (Headers):Key: Value 格式,每行一个,例如 Content-Type: ... 空行 (Empty Line):一个空行(CRLFCRLF,即 \r\n\r\n)作为请求头和请求体之间的分隔符。这个空行是强制的,即使没有请求体也要有。 请求体 (Message Body):可选,如果存在,则根据 Content-Length 或 Transfer-Encoding: chunked 指示的长度来读取。

HTTP 报文格式回顾

待分类
深入浅出 TCP 协议:从水管到数据包的奇妙旅程 今天我们深入探讨了 TCP (传输控制协议) 这一互联网基石的奥秘,从宏观的连接概念到微观的数据流转,希望能帮助大家更好地理解这个“幕后英雄”。 1. TCP 与应用层协议:自定义的挑战 问:如果我想基于 TCP 做一套自己的应用层协议需要具备哪些能力? 答: 要在 TCP 之上构建自己的应用层协议,你需要深入理解网络编程基础、具备强大的协议设计能力,并考虑安全和性能。 核心能力包括: 网络编程基础: 熟练掌握 Socket 编程(创建、绑定、监听、连接、收发数据、关闭),并理解 TCP 的面向连接、可靠传输、流量控制、拥塞控制等特性。 协议设计能力: 这是核心。你需要定义: 消息格式: 明确消息头(包含类型、长度、序列号等元数据)和消息体。 消息边界: 解决 TCP 的“粘包”问题,常用方法是使用长度前缀或特殊结束符。 协议语义: 定义消息类型、操作、请求/响应模式、错误处理、会话管理(如心跳)等。 序列化/反序列化: 如何将数据结构转换为字节流发送,以及如何将字节流解析回数据结构(例如使用 JSON、Protocol Buffer....

深入浅出 TCP 协议:从水管到数据包的奇妙旅程

TCP
tcpdump 是 Linux/Unix 系统中一款强大的命令行网络抓包工具,可实时捕获网络接口上的数据包并解析,常用于网络故障排查、协议分析、流量监控等场景。以下从基本语法、核心选项、过滤规则、高级用法及实用案例等方面详细讲解。 一、基本语法 tcpdump 的核心语法结构为: tcpdump [选项] [过滤表达式] 选项:控制抓包的行为(如指定接口、输出格式、保存文件等)。 过滤表达式:筛选需要捕获的数据包(如指定主机、端口、协议等)。 二、核心选项详解 选项用于调整抓包的范围和输出方式,常用选项如下: 选项作用示例 -i <接口>指定抓包的网络接口(如 eth0、lo);-i any表示所有接口tcpdump -i eth0(抓 eth0 接口的包) -n不进行 DNS 解析(直接显示 IP,不转主机名)tcpdump -n(输出 IP 而非域名) -nn不解析 IP 和端口(端口显示数字,不转服务名如 80 不显示 http)tcpdump -nn(IP 和端口均为数字) -v/-vv/-vvv增加输出详细程度(v:基本详情;vv:更多协议细节;vvv:最详细)....

tcpdump命令详解

linux
在 MyBatis 的 <if> 标签中,表达式 isDeduc != null and isDeduc == 0 是基于 OGNL (Object-Graph Navigation Language) 表达式进行解析的。OGNL 在处理不同类型的数据时会进行隐式类型转换,这就可能导致一些看似不合理的判断结果。 为什么 isDeduc 是空字符串时,表达式依然为 true? 1. OGNL 的类型转换规则 OGNL 在处理表达式时,如果字段类型不匹配,会尝试进行隐式类型转换。例如: 如果 isDeduc 是字符串类型 (String),但表达式中使用了 isDeduc == 0,OGNL 会尝试将字符串转换为数字。 空字符串 ("") 在转换为数字时,会被解析为 0。 2. 示例分析 假设 isDeduc 的值是空字符串 (""),表达式 isDeduc != null and isDeduc == 0 的执行过程如下: isDeduc != null:空字符串 ("") 是一个有效的字符串对象,不为 null,所以条件为 true。 isDeduc == 0:由于 isD....

天天帮领导改bug之空字符串和0

帮领导改bug
maven构建工具,使用起来很简单,也正是因为简单,才会使很多项目的pom文件被写的一团糟,尤其是小团队中没有架构师护航,没有专人管理基础构建. 打包优化 排除无用依赖:用 mvn dependency:analyze 检测「未使用的依赖」和「使用了但未声明的依赖」。 瘦身可执行 JAR:Spring Boot 项目可用 spring-boot-maven-plugin 的 excludes 排除不需要的依赖(如开发工具类)。 分层构建:配合 Docker 实现「依赖层缓存」,加快镜像构建(如将 BOOT-INF/lib 和 BOOT-INF/classes 分开)。 我们就运行一下mvn dependency:analyze [WARNING] Used undeclared dependencies found: [WARNING] com.sun.mail:jakarta.mail:jar:1.6.7:compile [WARNING] org.springframework:spring-context:jar:5.3.24:compile [WARNING] org.spr....

看看公司的老项目中有多少依赖没有被引用

maven
给Oracle数据库初学者的学习建议 针对你朋友正在学习Oracle SQL的情况,我提供以下系统化的学习建议: 一、基础学习路径 先掌握SQL通用基础 先从标准SQL学起:SELECT, INSERT, UPDATE, DELETE等基本语句 理解关系型数据库基本概念:表、视图、索引、主键、外键等 Oracle特有核心知识 Oracle数据类型(VARCHAR2 vs VARCHAR, NUMBER等) Oracle特有的伪表DUAL ROWNUM分页机制(12c以下版本) 序列(SEQUENCE)的使用 NVL/NVL2函数处理NULL值 二、实用学习资源推荐 官方文档 Oracle官方SQL参考手册(可从Oracle官网下载) Oracle Database Concepts文档(理解架构) 入门书籍 《Oracle SQL入门经典》 《Oracle PL/SQL编程》 在线学习平台 Oracle Learning Library(免费官方资源) Udemy/Oracle相关课程 慕课网/腾讯课堂等中文平台Oracle课程 三、实践建议 搭建练习环境 申请公司测试数据库权限 或安....
有更新!

我有一个老铁,她公司使用的是oracle数据库

待分类
MySQL和Oracle虽然都遵循SQL标准,但在具体语法上存在不少差异。以下是主要的语法区别: 1. 分页查询 MySQL: SELECT * FROM table_name LIMIT 10 OFFSET 20; 或 SELECT * FROM table_name LIMIT 20, 10; Oracle: -- 12c以下版本 SELECT * FROM ( SELECT a.*, ROWNUM rn FROM ( SELECT * FROM table_name ORDER BY column_name ) a WHERE ROWNUM <= 30 ) WHERE rn > 20; -- 12c及以上版本 SELECT * FROM table_name OFFSET 20 ROWS FETCH NEXT 10 ROWS ONLY; 2. 字符串连接 MySQL: SELECT CONCAT('Hello', ' ', 'World'); 或使用||(需设置SQL模式) Oracle: SELECT 'Hello' || ' ' || 'World' FRO....

MySQL与Oracle的SQL语法差异

sql
MySQL和Oracle都是流行的关系型数据库管理系统,但它们在多个方面存在显著差异: 1. 公司所有权与许可 MySQL:最初由MySQL AB开发,现为Oracle公司所有,开源(GPL许可)和商业许可双模式 Oracle:Oracle公司专有商业软件,需要购买许可证 2. 架构与性能 MySQL: 轻量级设计 适合中小型应用 读写操作通常较快 支持有限的分区功能 Oracle: 企业级架构 针对大规模、高并发环境优化 高级分区选项(范围、列表、哈希、复合分区) 更复杂的优化器 3. 功能对比 存储过程/函数: Oracle有更强大的PL/SQL MySQL的存储过程功能相对简单 事务支持: Oracle:完全ACID兼容,高级并发控制 MySQL:只有InnoDB引擎支持完整ACID 复制与高可用: MySQL:主从复制简单易用 Oracle:Data Guard、RAC等企业级解决方案 4. 扩展性与集群 MySQL: 主要通过主从复制扩展 分片需要应用层实现 Oracle: Real Application Clusters(RAC)支持多节点共享存储 自动存储管理(ASM)....

MySQL与Oracle的主要区别

数据库
再挤一挤时间,我一定能变的更好

好忙啊,学习进度严重滞后了

生活
那些全栈都是什么神仙啊😭😭😭😭😭😭😭

前端真的好难,学好久都学不会,要奔溃了

待分类
我真的回来了.solo,好久不见呀! 此文测试google Analytics!

我回来了,SOLO!

待分类
1
RSS 开始使用
Tomiaocat - 记录精彩的程序人生

野生程序猿
13 文章
0 浏览     0 当前访客
© 2025 Tomiaocat 的个人博客