传输层基础

1. 理解"IP + 端口 = 服务"

概述:

复制代码
IP 定位主机
端口定位主机上的进程/服务

也就是说,网络里真正要找到的不是"电脑"本身,而是:

复制代码
某台电脑上的某个程序

比如:

复制代码
192.168.1.10:22

意思不是"找到这台机器"就结束了,而是:

复制代码
找到 192.168.1.10 这台机器上的 22 号端口对应的服务

1)为什么光有 IP 不够

一台服务器上可以同时运行很多服务:

  • SSH

  • 网站

  • 数据库

  • Redis

  • Jupyter

  • 自己写的 API

如果只有 IP,没有端口,系统根本不知道你要访问哪个程序。

所以:

复制代码
IP + 端口

本质上就是一个网络入口标识。

2)举例说明

(1)

复制代码
10.0.0.5:3306

拆解:

复制代码
这是 10.0.0.5 这台机器上的 MySQL 之类数据库服务入口

(2)

复制代码
203.0.113.8:443

拆解:

复制代码
这是某台公网服务器上的 HTTPS 服务入口

(3)

复制代码
ssh -p 60000 user@1.2.3.4

拆解:

  • ssh:使用 SSH 客户端

  • -p 60000:目标端口不是默认 22,而是 60000

  • user@1.2.3.4:连接 1.2.3.4 这台机器,并尝试以 user 身份登录


3. "连接超时 vs 拒绝连接"

1)连接超时(timeout)

连接超时的感觉是:

复制代码
我发起了连接请求,但一直没人理我

也就是客户端发出请求后,长时间等不到回应。

常见原因:

  • 网络根本不通

  • 路由到不了目标

  • 防火墙丢弃了数据包

  • 校园网/运营商限制

  • 目标 IP 写错

  • 目标端口被中间网络静默拦截

你可以把它理解成:

复制代码
你去敲门,但门后一点动静都没有

2)拒绝连接(connection refused)

拒绝连接的感觉是:

复制代码
我已经到目标机器门口了,
目标机器明确告诉我:这个端口没人提供服务

常见原因:

  • 目标主机在线

  • 目标端口可达

  • 但该端口没有程序在监听

比如:

  • SSH 服务没启动

  • 端口写错了

  • 服务只监听了别的端口

  • 本机立刻返回 RST 拒绝

你可以把它理解成:

复制代码
你去敲门,里面有人立刻回应:这间房没人办公

3)两者的本质区别

连接超时

说明更像是:

复制代码
路上出了问题,或者请求被静默丢掉了

拒绝连接

说明更像是:

复制代码
路是通的,目标主机也活着,但目标端口没有服务

4)怎么判断

如果是 timeout

优先怀疑:

  • IP 不通

  • 防火墙

  • NAT / 路由

  • 网络出口限制

  • 中间链路问题

如果是 refused

优先怀疑:

  • 服务没启动

  • 端口写错

  • 监听地址不对

  • SSH 配置端口和你访问端口不一致

总结:

复制代码
timeout:先查网络路径
refused:先查目标服务

4. TCP/UDP 使用场景

1)TCP 的特点

TCP 是:

  • 面向连接

  • 可靠传输

  • 有顺序

  • 有重传

  • 有流量控制和拥塞控制

所以 TCP 适合:

复制代码
必须完整、准确、有顺序送达的数据

典型场景:

  • SSH

  • HTTP / HTTPS

  • 文件传输

  • 数据库连接

  • 邮件

  • 远程登录

因为这些应用不能接受:

  • 少一段

  • 乱序

  • 半截数据

比如 SSH 如果用 UDP,键盘输入乱了、丢了,就没法正常远程控制。


2)UDP 的特点

UDP 是:

  • 无连接

  • 不保证可靠

  • 不保证顺序

  • 开销小

  • 延迟低

所以 UDP 适合:

复制代码
更重视实时性,
允许少量丢失,
应用自己能容忍或补救

典型场景:

  • 语音通话

  • 视频直播

  • 在线游戏

  • DNS 查询

  • 某些实时控制场景

比如视频会议里,偶尔丢一帧还能接受;

但如果每丢一帧都等重传,画面反而会卡得更严重。


3)怎么做判断

你可以问自己两个问题:

问题 1:数据必须一字不差吗?

如果必须,那通常偏向 TCP。

问题 2:我更怕"丢一点"还是更怕"延迟变大"?

  • 更怕丢失:偏 TCP

  • 更怕延迟:偏 UDP

相关推荐
devilnumber11 小时前
Java 递归算法 详解 + 核心要点 + 实战运用 + 避坑指南
java·开发语言·算法
V搜xhliang024612 小时前
AI智能体的数据安全与合规实践
人工智能·学习·数据分析·自动化·ai编程
杨浦老苏12 小时前
家庭实验室监控仪表盘HomeLab-Monitor
运维·docker·监控·群晖
无敌的牛13 小时前
redis学习过程
数据库·redis·学习
回忆2012初秋13 小时前
【Nginx】原理、配置与运维实战(2)
运维·nginx·策略模式
asdfg125896313 小时前
JavaBean是什么?怎么理解?有什么用途?
java·开发语言
dsyyyyy110113 小时前
JavaScript变量
开发语言·javascript·ecmascript
Urbano13 小时前
工装外套全制作流程、工序痛点及自动化设备升级方案
运维·自动化
映翰通朱工14 小时前
工业4G网关无公网IP远程运维实战(内网终端异地访问方案)
运维·服务器·网络·安全·智能路由器
洪晓露14 小时前
将 rke2 集群证书延长至 10 年
运维·服务器·数据库