ARTICLE DETAIL

资讯详情

深耕商务建站与企业官网运营的一线实战洞察。

telnet测试端口与接口调用关系

telnet测试端口与接口调用关系 目录为什么端口通了接口调用依然失败1. 应用监听的是 IP不是 0.0.0.0最常见2. TCP 端口起来了但应用程序还没就绪3. 应用层协议校验失败4. 鉴权、白名单、限流、路由拦截5. 连接可以建立但数据包会被丢弃 / 重置6. 数据库类端口额外坑对比不同工具的验证层级实操建议面试精简版回答telnet 能通端口只能证明网络层 传输层通了IP 可达、TCP 端口监听、防火墙放行不能证明上层应用接口能正常调用。简单分层理解telnet 工作在TCP 层只做一件事建立 TCP 三次握手。握手成功就显示连通。HTTP/HTTPS、Dubbo、自定义 API 接口是应用层协议在 TCP 之上。TCP 通 ≠ 应用协议正常。为什么端口通了接口调用依然失败1. 应用监听的是 IP不是 0.0.0.0最常见服务只绑定127.0.0.1本机回环地址在服务器本机telnet 127.0.0.1 8080可以连通外部机器 telnet 服务器公网 IP:8080 连不上反过来还有一种坑服务器监听 0.0.0.0端口能 telnet 通但应用只允许本机 / 内网 IP 访问接口。TCP 握手成功但应用收到请求直接拒绝 HTTP 调用。2. TCP 端口起来了但应用程序还没就绪比如 SpringBoot端口由底层 socket 先监听端口 open 了但是 Spring 上下文还没完全加载完毕telnet 能连上但是发 HTTP 请求直接返回 503 / 连接重置接口不可用现象端口监听成功应用还在初始化。TCP 就绪早于应用就绪。3. 应用层协议校验失败telnet 只建立裸 TCP 连接不会发送合法的应用报文HTTP 接口telnet 通但你随便发一串字符服务端直接断开必须发送符合 HTTP 协议的 GET/POST 请求才会正常响应HTTPStelnet 443 端口可以通但 telnet 本身不支持 TLS 握手你用 telnet 访问 https 接口会失败要用openssl s_client -connect host:443Dubbo、gRPC都是自定义二进制协议TCP 通但随便发文本直接报错4. 鉴权、白名单、限流、路由拦截TCP 握手成功防火墙放行但是应用层拦截接口只允许内网 IP你的客户端 IP 不在白名单需要 token/cookie不带就 401/403Nginx 网关路由配置错误端口通但路径不存在 404限流熔断请求进来直接拒绝这些都属于应用层逻辑TCP 握手阶段完全不会感知。5. 连接可以建立但数据包会被丢弃 / 重置防火墙 / 安全组只放行 TCP 握手后续应用报文被 IPS、WAF 拦截服务端连接数满新建 TCP 连接可以短暂建立但是应用无法处理请求很快 RST 断开负载均衡端口健康检查只是 TCP 检查后端实例已经挂了但 LB 依然把端口暴露为可连接6. 数据库类端口额外坑MySQL 3306、Redis 6379 telnet 能连上端口但是账号密码错误数据库只允许指定账号的主机访问redis 开启了密码认证 TCP 连接成功但是业务调用失败。对比不同工具的验证层级工具验证层级能说明什么telnet / nc -zvTCP 传输层IP 可达端口监听防火墙放行curl / wgetHTTP 应用层TCP 正常 HTTP 协议正常 基础路由可达postman / 代码 http 请求业务层HTTP 正常 鉴权、参数、业务逻辑正常实操建议先用telnet/nc排查网络连通性网络、防火墙、端口监听再用curl http://ip:port/xxx验证应用层接口HTTPS 用curl -k https://ip:port/xxx非 HTTP 接口Dubbo 等要用对应客户端测试不能靠 telnet面试精简版回答telnet 测试端口成功仅代表 TCP 三次握手能够完成证明 IP 可达、目标端口存在监听、网络防火墙没有拦截 TCP 流量。 接口调用属于应用层行为依赖应用协议、服务上下文、鉴权、网关路由、业务权限等一系列上层逻辑。TCP 连通不代表应用程序可以正常处理业务请求因此端口通不能证明接口可调用。
返回列表
PREV
查看更多资讯
NEXT
返回资讯列表