type
status
date
slug
summary
tags
category
icon
password
由于我没有系统学习过计算机网络,这门课程在本科属于比较晦涩的一门课,对于嵌入式开发,之前也有用到这方面知识,比如单片机上价格WIFI模块通过TCP协议和上位机通信,只知道怎么用而不知道原理。本文通俗解释计算机网络一些最最最最基本的概念。面向嵌入式学习计算机网络。先从实战入手,再一步一步回归到基本知识,这是我的学习习惯。更新ing~
代码入手
先直接写代码,从代码入手,搭建一个TCP通信。
服务器:
客户端
提出问题:
再提出问题,解释问题里的问题里的问题里的问题,一步步!
问题一:为什么服务器不用指定自己的IP?
解释
INADDR_ANY
是一个特殊的 IP 地址,它的值通常是0.0.0.0
。
- 当服务器使用
INADDR_ANY
绑定 IP 时,它表示 “监听本机上的所有网络接口”,而不仅仅是特定的一个 IP 地址。
为什么这样做?
- 服务器可能有多个网络接口(网卡):
- 例如,一台计算机可能有 WiFi、以太网(有线网)、环回(127.0.0.1),每个网络接口都有不同的 IP 地址。
- 如果服务器只绑定
127.0.0.1
,那么它只能接受来自本机的连接,外部设备无法访问。 - 如果服务器绑定
192.168.1.100
(假设是局域网 IP),那么只能接受局域网的连接,127.0.0.1 的客户端无法连接。
- 使用
INADDR_ANY
,服务器可以接受来自任何 IP 地址的连接: - 例如,假设服务器有以下 IP:
- 本地环回地址:
127.0.0.1
- 局域网地址:
192.168.1.100
- 互联网 IP(如果有公网地址):
203.0.113.5
- 绑定
INADDR_ANY
后,客户端可以通过 任意一个 IP 连接到服务器。
问题二:为什么客户端要指定服务器的 IP:127.0.0.1?
- 客户端 必须知道服务器的具体地址,否则无法建立连接。
127.0.0.1
是 本地环回地址(localhost),表示 “本机”,即 客户端和服务器都在同一台电脑上运行。
- 在本地测试时,使用
127.0.0.1
连接服务器,等价于localhost
。
如果服务器在另一台机器上
如果服务器运行在局域网的另一台计算机(例如 IP 是
192.168.1.100
),客户端应该连接这个 IP:然后在局域网内的计算机上运行客户端,它就能连接到服务器了。
如果服务器有公网 IP
如果服务器在互联网上(有公网 IP
203.0.113.5
),客户端可以连接:不管客户端在哪,都可以连接到服务器。
问题三:IP地址的分类
类型 | 示例 IP | 特点 |
本地环回 | 127.0.0.1 | 只能用于本机,客户端和服务器在同一台电脑上运行 |
局域网 IP | 192.168.1.100 | 仅限于局域网设备之间通信,不能直接被互联网访问 |
公网 IP | 203.0.113.5 | 互联网上的 IP,可以被全球访问(需要端口开放) |
什么是局域网?
局域网(LAN,Local Area Network)是指 在小范围内连接的计算机网络,通常覆盖一个房间、一栋楼、一个学校、一个公司或一个家庭网络。
- 设备之间通过 网线、WiFi、交换机或路由器 互连。
- 只有在 同一个局域网内的设备,才能直接进行通信。
- 典型的局域网设备包括 电脑、手机、打印机、NAS(网络存储) 等。
常见的局域网 IP 段:
IP 段 | 作用 |
192.168.0.0 - 192.168.255.255 | 家庭或小型企业网络 |
172.16.0.0 - 172.31.255.255 | 企业或大型组织 |
10.0.0.0 - 10.255.255.255 | 大型机构,如大学、公司 |
子网掩码
子网掩码用于区分 网络部分 和 主机部分,单独的 IP 地址是不够的,必须结合子网掩码,才能知道网络号和主机号。局域网常见的子网掩码:
也即是说如果你的 IP 地址是
192.168.1.100
,子网掩码是 255.255.255.0
,那么就表明了- 网络部分 是
192.168.1
- 主机部分 是
100
- 前 3 组数字(24位)是网络号(192.168.1),最后一组数字8位是主机号。(0~255)
- 这个子网最多支持 254 台设备(
192.168.1.1
~192.168.1.254
)。
以后看到
192.168.2.50
就知道这是不同子网需要路由。如果子网掩码是255.255.0.0
,那么说明以后给你一个IP地址,那么前面两个是网络号。假设你有一个 IP 地址:
192.168.1.100
你怎么知道:
- 它属于哪个网络?
- 哪些设备和它在同一个子网?
- 它的主机号是多少?
📌 需要子网掩码!
如果子网掩码是
255.255.255.0
(这个可以直接得到可用主机数是244(去掉0和255))::- 网络号:
192.168.1
- 主机号:
100
- 同网段 IP:
192.168.1.1
-192.168.1.254
如果子网掩码是
255.255.0.0
(这个可以直接得到可用主机数是65534):- 网络号:
192.168
- 主机号:
1.100
- 同网段 IP:
192.168.0.1
-192.168.255.254
同一个子网(192.168.1.X)内的设备可以直接通信,不同子网(如
192.168.2.X
)需要 网关路由。怎么路由?
路由(Routing) 指的是 不同网段之间的数据传输。
每台设备都有一个 默认网关(Default Gateway),当数据要发往 不同子网 的设备时,它会:
- 检查目标 IP 地址
- 发现目标 IP 不在本地子网
- 把数据包发给网关(通常是路由器)
- 网关转发数据到目标子网
- 目标设备收到数据
局域网 vs. 互联网
比较项 | 局域网(LAN) | 互联网(Internet) |
覆盖范围 | 一个房间、一栋楼、一个公司 | 全球 |
通信方式 | 设备使用 局域网 IP(如 192.168.X.X )互相通信 | 设备使用 公网 IP 互相通信 |
是否需要互联网 | ❌ 不需要,可以离线运行 | ✅ 需要互联网连接 |
数据传输速度 | 高速(100Mbps - 10Gbps) | 相对较慢,受带宽限制 |
安全性 | 高,外部无法访问 | 可能存在黑客攻击风险 |
成本 | 低,只需路由器/交换机 | 较高,需要 ISP 提供的服务 |
如何让局域网设备访问互联网?
局域网设备通常 没有公网 IP,需要 通过路由器或网关访问互联网:
- 设备发送请求到 路由器(网关),网关(一般是路由器)负责连接局域网和互联网,通常分配一个固定的 IP 地址:例如
192.168.1.1
。
- 路由器使用它的 公网 IP(如
203.0.113.5
)向互联网发起请求。
- 外部服务器返回数据,路由器再转发给局域网设备。
📌 NAT(网络地址转换)
- 由于 IPv4 地址有限,局域网设备 共享一个公网 IP 访问互联网。
✅ 所有设备对外的 IP 看起来都是 "202.96.128.1",但路由器内部通过端口映射,知道数据要返回给哪个设备。
- ISP 给你的光猫分配了公网 IP,路由器使用 NAT 技术,将局域网 IP(
192.168.1.100
)转换为公网 IP(203.0.113.5
),让局域网设备能上网。
问题四:WIFI是什么?
连上WIFI就能上网了,这么简单吗?其实不是看,WIFI只是连接到路由器的方式,不能直接访问互联网。WIFI也和TCPIP没有任何关系。
Wi-Fi ≠ 互联网,但其实 Wi-Fi 只是一个无线局域网(WLAN),真正的互联网连接还需要宽带网络。
Wi-Fi(无线保真,Wireless Fidelity) 是一种无线网络通信技术,允许设备在没有网线的情况下连接到局域网(LAN)。
📌 一个完整的 Wi-Fi 网络
数据是如何流动的?
举个例子,当你用手机访问 百度(www.baidu.com):
1️⃣ 手机(192.168.1.100) → 通过 Wi-Fi 连接到路由器
2️⃣ 路由器(192.168.1.1) → 通过 光猫 连接到 ISP
3️⃣ ISP → 访问百度服务器的 公网 IP(例如 220.181.38.148)
4️⃣ 百度服务器返回网页数据
5️⃣ 数据回传给 ISP → 你的路由器 → 你的手机
路由器
路由器 是你家里的“网络管理器”,它的作用是 创建家庭局域网(LAN),并连接互联网。
- 为什么需要路由器?
运营商给的 宽带信号 只能让一个设备上网,但你家里有很多设备(手机、电脑、电视等)。
路由器可以:
✅ 创建 Wi-Fi 信号,让无线设备上网
✅ 给多个设备分配 IP 地址,让它们共享同一个宽带
✅ 做数据转发,管理设备之间的数据流
- 路由器怎么连接?(WAN,LAN) 📡 路由器的 WAN 口 ((Wide Area Network,广域网))连接到光猫的 LAN口((局域网口)
📡 路由器的 LAN 口 可以连接电脑、电视等设备
📡 Wi-Fi 让手机、平板无线连接
WAN 口(广域网口):路由器的 WAN 口 连接 光猫,获取 公网 IP,通过 ISP 访问互联网。
LAN 口(局域网口):路由器的 LAN 口 连接家里的设备(手机、电脑、电视等),分配 内网 IP。LAN 口的概念不仅仅指 物理网口,也包括 无线连接(Wi-Fi),当手机连接 Wi-Fi 时,它实际上是在“无线 LAN(WLAN)”里,和用网线连接到 LAN 口的电脑属于同一个局域网,只是无线连接而已。
光猫
光猫(光纤调制解调器,Modem)
光猫 是你家里连接到运营商的第一步,它的作用是 把光纤信号转换成家用网络信号,光纤接在猫上,猫调制解调。
- 为什么需要光猫?
📡 运营商(ISP)提供的光纤信号是数字光信号,普通设备不能直接使用,必须由光猫解码成可以使用的网络信号(以太网)。同样也要把以太网编码传回去。
- 光猫的主要作用:
✅ 连接光纤网络(WAN 口)
✅ 提供一个网口(LAN 口)给路由器或电脑,它一般有 1~4 个 LAN 口,其中一个会连接到路由器的 WAN 口
✅ 一些光猫自带 Wi-Fi(但性能一般)
- 光猫的输出是什么?
🚀 一个“宽带”信号,通常是一个网线接口(LAN 口),可以接入路由器或电脑
ISP
🌍 互联网服务提供商(ISP)
运营商(ISP,比如中国电信、中国移动)提供的服务:
1️⃣ 给你分配一个 公网 IP(在互联网上唯一),路由器需要一个唯一的公网 IP,才能在互联网上与其他服务器通信。你的家里并不是所有设备都有公网 IP,只有路由器的 WAN 口有公网 IP。
2️⃣ 让你的家庭网络可以访问全球互联网
3️⃣ 通过他们的数据中心、路由器、光纤线路,把你的数据传输到全球各地
📌 你的路由器最终通过 ISP,连接到了互联网的“大网”。
📌 如果宽带欠费,ISP 会切断你的互联网访问,即使 Wi-Fi 仍然可用。
- 作者:Torah
- 链接:https://tangly1024.com/article/1ab1d4c4-f0c4-80de-a940-f206bdb4d719
- 声明:本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。