📄 一句话概括
TCP/IP 的上两层:传输层是"管道工"——把货可靠(TCP)或快速(UDP)地送到对方程序手里,还负责用端口分清货该给哪个程序;应用层才是最终干活的店员——网页、域名翻译、邮件全是它的业务。标题里的"做准备"就是指:传输层把通道铺稳,应用程序只管谈生意。
一、位置回顾:上两层 = 会客的层
3.2 拆完下两层(接口层管一段、网际层管全程),货已经能横跨千网送到目标电脑了。但 1.5 说过——电脑本身不会上网,程序才会上网:
应用层 ← 最终干活的程序(HTTP/DNS/SMTP)★ 本节
传输层 ← 把货送到"程序"手里(TCP/UDP + 端口)★ 本节
─────── 3.2 分界线 ───────
网际层 ← 跨网全程(IP)
网络接口层 ← 这一段路(以太网/Wi-Fi)
一句话分工:传输层管"送到对端哪个程序",应用层管"程序拿货干什么活"。
二、传输层:管道工 + 分房员
传输层干两件事,缺一不可:
1. 送达方式二选一(收 3.2 埋的坑)
| TCP(保价快递) | UDP(同城闪送) | |
|---|---|---|
| 口号 | 可靠送达 | 快速送达 |
| 手段 | 先打招呼建立连接、确认收货、丢了补发、乱序重排 | 打包就发,不管对方在不在 |
| 快慢 | 稍慢(管家规矩多) | 快(没有仪式感) |
| 适合 | 网页、文件、邮件——丢一个字节都不行 | 视频通话、游戏、直播——卡一下没关系 |
💡 填 3.2 的坑
3.2 说过"IP 尽力而为、丢了不补"。"可靠"不是 IP 给的,是传输层的 TCP 在上面补出来的——确认、补发、重排全靠它。所以:网络基础不等于服务可靠,可靠是花钱(开销)买的服务。
2. 端口:把货分给正确的程序
一台服务器上同时跑着几十个程序(网页服务、域名翻译、邮件……),货到了楼里怎么分?靠端口:
- IP 找到楼,端口找到房间——完整网络地址写作
IP:端口(如142.250.x.x:80) - 常用端口名册(会认即可):
80网页 HTTP、443加密网页 HTTPS、53域名翻译 DNS、25邮件 SMTP - 范围
0~65535;你自己写程序用的都是"散客号",知名号留给知名服务 - 收 2.3 的旧账:那时的"物理端口 ≠ TCP 软件端口"警告在此兑现——本节的端口全是软件端口(一个编号,不是插座),传输层靠它分房
💡 收 Java 13.2 的旧账
当时写 Socket 代码里的 new Socket("host", 8080) 和 ServerSocket(8080)——那个 8080 就是本节的软件端口。Java 课本的"IP 找主机、端口找程序",在这里拿到了协议层的出处。
三、应用层:真正干活的店员
- 成员:1.5 的主角们正式上岗——浏览器(HTTP)、域名翻译(DNS)、邮件(SMTP/IMAP)、文件传输(FTP)……
- 特点:应用层协议直接面向业务——"我要这个网页""这个域名对应的 IP 是多少",谈的都是具体事务
- 分工红利:应用层完全不用操心货怎么送——底下接口层、网际层、传输层把路修好、把货送稳,店员只管接待客人
- 多语言层之二:和应用层一样"一 层多种语言",每换一种业务就换一种应用层协议
四层连读(把 3.2 + 本节拼起来):接口层运一段 → 网际层跨全程 → 传输层送到程序 → 应用层干成事——寄快递的完整旅程到此闭环。
四、动手 Demo17:亲眼看端口分房
- 打开命令行(Win+R → cmd):
netstat -an | findstr LISTENING - 列出你电脑上正在守号的程序(
0.0.0.0:8080表示"在 8080 号房间听电话") - 开个网页再执行一遍,对比新增的
ESTABLISHED行——每一条都是一根"已接通的管道",冒号后面就是对方房间号 - 30 秒观察:本机随机占用的号都在几千到几万(散客号),而浏览器访问网站永远默认去
443/80(知名号)——名册各归各位。
❓ 自测一下
- "为驱动应用程序做准备"——做准备的是哪层?做什么准备?
- TCP 和 UDP 怎么选?视频通话用的是哪个,为什么?
- IP、端口各负责找到什么?完整地址怎么写?
- "可靠送达"是谁的功劳?IP 为什么不负责这个?
答案:① 传输层——铺通道(TCP/UDP 连接)+ 分对程序(端口);② 看业务:要完整选 TCP、要实时选 UDP;视频通话用 UDP,卡一下能容忍、丢帧重发反而添乱;③ IP 找楼(设备)、端口找房间(程序),写作 IP:端口;④ 传输层 TCP(确认+补发+重排);IP 只尽力而为——可靠是上层花钱买的服务,分层各司其职。
常见误区:
- ❌ "TCP 一定比 UDP 好" → 只是取舍不同:保价快递和闪送没有优劣,看货
- ❌ "端口是设备上的插座" → 那是 2.3 的物理端口;本节端口是 0~65535 的编号,纯软件概念
- ❌ "一台服务器一个 IP 只能跑一个服务" → 端口就是为了让一台机器同时跑几十个服务
- ❌ "应用层协议(如 HTTP)负责把数据送到对方电脑" → 送达全程是下三层的活,应用层只管业务对话
六、下一步学什么
- ☑ 3.4 收发数据时的规则(数据打包) ✅ 已完成 —— 点此复习:端口和序号就印在包的头部,本节讲清了那些"头"长什么样
相关笔记
- 收发数据时的规则(数据打包) —— 下一节:本节讲的端口和序号,在那里被印到了包的头部
- 负责传输数据的网络分层(网络接口层与网际层) —— 下两层特写,与本节拼出完整四层
- 各种网络之间的通用语言(TCP/IP) —— 四层全家福
- 是谁在负责收发数据(应用程序、P2P应用) —— 应用层主角的最早登场
- 网络的具体结构(接口(端口)、链路) —— 物理端口 vs 软件端口的伏笔
- TCP通信 —— Socket 里的端口拿到了协议层出处