从寄快递理解网络
每当我们在微信发送消息、刷视频、单购物时,背后"数据"是如何传递的呢?其实它们的传输原理和快递网络差不多。
地址与门牌号
如果要给寄快速,需要哪些信息?当然是收件地址、收件人姓名和联系方式。网络的数据传输同样需要三个关键的东西:
- IP地址:相当于"XX市XX区XX路XX号",用于定位目标计算机(如
192.168.1.1
) - 端口号:类似"XX号楼XX室",是指定接收数据的特定程序(比如HTTP默认端口是80)
- 传输协议:选择顺丰还是EMS,决定哪种配送方式(TCP/UDP)
这三个要素构成的"数字快递单",确保了数据包能准确送达目标程序。就像快递员不会把包裹扔在小区门口,网络协议保证数据直达指定的地方。
网络四层模型
网络有四层模型,分别是应用层、传输层、网络层、数据链路层。
应用层:(HTTP/FTP/DNS) 负责传送各种最终形态的数据,是直接与用户打交道的层,典型协议是 HTTP、FTP 等。 该层包括所有和应用程序协同工作,利用基础网络交换应用程序专用的数据的协议。
网络层:负责分配地址和传送二进制数据(选路线),主要协议是 IP 协议。
传输层:(TCP/UDP) 传输层负责传送文本数据,主要协议是 TCP 协议。 传输层的协议,能够解决诸如端到端可靠性(“数据是否已经到达目的地?”)和保证数据按照正确的顺序到达这样的问题。 在 TCP/IP 协议组中,传输协议也包括所给数据应该送给哪个应用程序。
数据链路层: 负责建立电路连接,是整个网络的物理基础,典型的协议包括以太网、ADSL 等等。
如果类比快递公司的话,就是不同的分工
层级 | 类比部门 | 核心职责 | 常见协议 |
---|---|---|---|
应用层 | 客服中心 | 处理用户具体需求 | HTTP/FTP/DNS |
传输层 | 配送团队 | 确保包裹完整送达 | TCP/UDP |
网络层 | 路线规划部 | 选择最优运输路径 | IP/ICMP |
链路层 | 货车司机 | 实际运输包裹 | 以太网 |
TCP与UDP
TCP三次挥手——建立信任连接
TCP是可靠传输,就像一位负责任的邮差,要确保每个"数据包裹"都能完整送达。它通过三大保障机制构建信任:
- 顺序标号:给每个数据包编号(如包裹单号)
- 确认回执:收件人签收后发送回执
- 超时重发:未收到回执自动补发包裹
也就是TCP的三次握手建立连接
[客户端] [服务器]
|-------- SYN(申请合作) ------->|
|<------- SYN-ACK(确认可合作)----|
|-------- ACK(正式开工) ------->|
TCP四次挥手——优雅的告别
[主动方] [被动方]
|-------- FIN(我说完了) ------->|
|<------- ACK(收到结束通知)------|
|<------- FIN(我也说完了)--------|
|-------- ACK(确认结束) ------->|
为什么需要四次挥手?
- 全双工特性:就像双向车道,需要分别关闭两个方向的传输通道
- 确保数据完整性:给被动方足够时间处理剩余数据
UDP协议
UDP 与 TCP 的主要区别在于 UDP 不一定提供可靠的数据传输。也就是该协议不能保证数据准确无误地到达目的地。
如果比喻为快递就是:
- 即发即忘:寄出后不跟踪进度
- 高效快速:省去确认环节
- 可能丢件:适合实时性要求高的场景
UDP常常用在视频通话,直播推流方面。
DNS解析
DNS 的全称是 Domain Name System。网络的连接网络是通过每台计算机在网络中拥有的惟一 IP 地址来完成的,所以DNS的任务是负责查找网络地址的ip。
当用户访问我们网站一个网页时,他需要经过以下步骤:
- 找到这个网页的存放服务器;
- 服务器将用户的请求信息接入;
- 服务器通过文件路径(URL)查找用户请求网页;
- 用户将该网页内容下载到自己电脑上。
可爱ヾ(≧∇≦*)ゝ