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
  • 同网段 IP192.168.1.1 - 192.168.1.254
如果子网掩码是 255.255.0.0(这个可以直接得到可用主机数是65534):
  • 网络号192.168
  • 主机号1.100
  • 同网段 IP192.168.0.1 - 192.168.255.254
同一个子网(192.168.1.X)内的设备可以直接通信,不同子网(如 192.168.2.X)需要 网关路由
怎么路由?
路由(Routing) 指的是 不同网段之间的数据传输。
每台设备都有一个 默认网关(Default Gateway),当数据要发往 不同子网 的设备时,它会:
  1. 检查目标 IP 地址
  1. 发现目标 IP 不在本地子网
  1. 把数据包发给网关(通常是路由器)
  1. 网关转发数据到目标子网
  1. 目标设备收到数据
局域网 vs. 互联网
比较项
局域网(LAN)
互联网(Internet)
覆盖范围
一个房间、一栋楼、一个公司
全球
通信方式
设备使用 局域网 IP(如 192.168.X.X)互相通信
设备使用 公网 IP 互相通信
是否需要互联网
❌ 不需要,可以离线运行
✅ 需要互联网连接
数据传输速度
高速(100Mbps - 10Gbps)
相对较慢,受带宽限制
安全性
,外部无法访问
可能存在黑客攻击风险
成本
,只需路由器/交换机
较高,需要 ISP 提供的服务
如何让局域网设备访问互联网?
局域网设备通常 没有公网 IP,需要 通过路由器或网关访问互联网
  1. 设备发送请求到 路由器(网关)网关(一般是路由器)负责连接局域网和互联网,通常分配一个固定的 IP 地址:例如 192.168.1.1
  1. 路由器使用它的 公网 IP(如 203.0.113.5)向互联网发起请求。
  1. 外部服务器返回数据,路由器再转发给局域网设备。
📌 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 仍然可用
 
嵌入式C——面向对象编程思想重新认识指针
Loading...