一、前言
本系列文章旨在复习计算机网络核心知识,进一步夯实基础,为以后 参与物联网、音视频、直播、即时通讯等领域的项目做一定的知识储备。
文章列表:
- 01-📝计算机网络核心知识|计算机网络通识【计算机网络性能指标、网络协议分层的几种方式、OSI七层模型概念通识】
- 02-📝计算机网络核心知识|【搭建调试环境、新建Java项目、计算机通信基础、计算机连接方式、集线器/网桥/交换机/路由器】
- 03-📝计算机网络核心知识|【MAC地址、IP地址的组成、IP地址的分类、CIDR、子网掩码、超网】
- 04-📝计算机网络核心知识|【 静态路由、动态路由、数据包的传输、ISP、服务器机房、网络分类、家用无线路由器、公网IP、
- 05-📝计算机网络核心知识|物理层/数据链路层【模拟信号&&数字信号、数据链路层】
- 06-📝计算机网络核心知识|网络层【IP数据包Packet、网络协议、Checksum、源IP地址和目标IP地址、ping】
- 07-计算机网络协议核心知识|【传输层-UDP】
- 08-计算机网络协议核心知识|【传输层-TCP之可靠传输】
- 09-📝计算机网络核心知识|传输层TCP2【流量控制原理、拥塞控制:slow start、congestion avoidance、快速重传、快速恢复】
- 10-计算机网络协议核心知识|【传输层-TCP连接】
- 11-计算机网络协议核心知识|【 应用层】
- 12-📝计算机网络核心知识|【Cookie、Session(概念、生命周期、有效期、浏览器的要求等)、跨域(概念、 同源策略、跨域解决方
- 13-计算机网络协议核心知识|【 代理/CDN/网络安全】
- 14-计算机网络协议核心知识|【(非)对称加密/数字签名/证书】
- 15-计算机网络协议核心知识|【HTTPS】
- 16-📝计算机网络核心知识|HTTPS协议【HTTP2、HTTP3】
本文主要关注:
在不同网段之间转发数据,需要有路由器的支持。
二、路由
默认情况下,路由器只知道跟它直连的网段,非直连的网段需要通过静态路由、动态路由告诉它。
1. 静态路由
- 管理员手动添加路由信息
- 适用于小规模网络
- 类型C代表直连(connected)
- 类型S代表静态(static)
路由器查找路由器(下一跳):路由器0和路由器1的接口IP地址必须在同一个网段才能通信,并且IP地址不能和已连设备的IP冲突。
静态路由配置时,一般情况下是配置网段。如果想指定设备IP,可以设置网络(网段)为指定IP,掩码设置为255.255.255.255。
路由配置方法有很多种,下面以路由器0为例: 方法一:配置每一个网段
- 网络(网段):
193.169.1.0 - 掩码:
255.255.255.0 - 下一跳:
200.168.1.2 - 网络(网段):
193.169.2.0 - 掩码:
255.255.255.0 - 下一跳:
200.168.1.2
方法二:合并网段
- 网络(网段):
193.169.0.0 - 掩码:
255.255.0.0 - 下一跳:
200.168.1.2
方法三:默认路由(只要路由不知道怎么走,就走下一跳,类似if-else中的else)
- 网络(网段):
0.0.0.0 - 掩码:
0.0.0.0 - 下一跳:
200.168.1.2
2. 动态路由
- 路由器通过路由选择协议(比如RIP、OSPF)自动获取路由信息
- 适用于大规模网络
3. 数据包的传输过程
简单示意:
192.168.1.10发送数据到192.168.3.10,寻址流程:MA -> M0 -> M1 -> M2 -> M3 -> MF
三、名词解释
1. 网络/互联网/因特网
- 网络(network):将计算机通过交换机/网桥/集线器连接起来形成了网络。
- 互联网(internet):通过路由器把多个网络连接起来就是互联网。
- 因特网(Internet):全世界最大的互联网(全世界的计算机连接在一起)。
一般使用大写I开头的Internet特指因特网,小写开头指的是互联网。
电脑上不了网,其实就是指电脑没有连接到因特网。
2. ISP
ISP(Internet Service Provider),Internet服务提供商,比如移动、电信、网通等。
我们平时拉的宽带(购买的服务)都是通过ISP连接到Internet的。
3. 服务器机房
如果电脑连接的是电信宽带,访问电信机房的资源,电信ISP就会直接找电信机房。访问移动机房的资源,电信ISP就会先找到移动ISP,再由移动ISP找到移动机房。相比之下直接访问电信机房肯定比移动机房速度快。双线机房包含电信和移动的所有资源,访问速度基本一致。
平时下载资源时,会出现很多下载地址,主要还是为了访问速度更快。
4. 网络分类
按照网络的范围进行分类,可以分为:局域网、城域网、广域网等。
- 局域网(Local Area Network,LAN)
- 一般是范围在几百米到十几公里内的计算机所构成的计算机网络。通常用于公司、家庭、学校、医院、大楼等。
- 局域网中使用最广泛的网络技术是:以太网(Ethernet)。
- 在电脑、手机上经常看到WLAN(Wireless LAN),意思是无线局域网。
- 城域网(Metropolitan Area Network,MAN)
- 一般范围是数十公里到数百公里,可以覆盖一个城市。
- 广域网(Wide Area Network,WAN)
- 一般范围是几百公里到几千公里,可以覆盖一个国家。通常都需要租用ISP的线路。
5. 常见的接口
- FastEthernet
- 快速以太网接口(100M)
- 局域网之间连接的大部分都是以太网口
- GigabitEthernet
- 千兆以太网接口
- Serial
- 串行接口
- 路由器之间连接的就是串口
6. 上网方式
- 电话线入户
这就是平时说的:ADSL电话拨号上网(Asymmetric Digital Subscriber Line)。非对称数字用户线路,提供上、下行不对称的传输带宽。
猫(Modem 等于 modulator-demodulator),调制解调器,进行数字信号和模拟信号的转换(电话线传递是模拟信号,计算机传递的是数字信号)。
- 光纤入户
光猫(Optical Modem),光调制解调器,进行数字信号和光信号的转换。
- 网线入户
7. 家用无线路由器的逻辑结构
8. 公网IP、私网IP
IP地址也分为:公网IP、私网IP。
- 公网IP(Public)
- Internet上的路由器中只有到达公网的路由表,没有到达私网的路由表
- 公网IP由因特网信息中心(Internet Network Information Center, Inter NIC)统一分配和管理
- ISP需要向Inter NIC申请公网IP
- 私网IP(Private)
- 主要用于局域网。下面是保留的私网网段:
- A类:
10.0.0.0/8,1个A类网络 - B类:
172.16.0.0/16 ~ 172.31.0.0/16,16个B类网络 - C类:
192.168.0.0/24 ~ 192.168.255.0/24,256个C类网络
- A类:
- 主要用于局域网。下面是保留的私网网段:
9. NAT(Network Address Translation)
私网IP访问Internet需要进行NAT转换为公网IP(这一步可以由路由器来完成)。
NAT的特点:
- 可以节约公网IP资源
- 会隐藏内部真实IP(实际也会被查水表)
NAT的分类:
-
静态转换
- 手动配置NAT映射表
- 一对一转换
-
动态转换
- 定义外部地址池,动态随机转换
- 一对一转换
-
PAT(Port Address Translation)
- 多对一转换,最大程度节约公网IP资源
- 采用端口多路复用方式,通过端口号标识不同的数据流
- 目前应用最广泛的NAT实现方式
专题系列文章
1. 前知识
- 01-探究iOS底层原理|综述
- 02-探究iOS底层原理|编译器LLVM项目【Clang、SwiftC、优化器、LLVM】
- 03-探究iOS底层原理|LLDB
- 04-探究iOS底层原理|ARM64汇编
2. 基于OC语言探索iOS底层原理
- 05-探究iOS底层原理|OC的本质
- 06-探究iOS底层原理|OC对象的本质
- 07-探究iOS底层原理|几种OC对象【实例对象、类对象、元类】、对象的isa指针、superclass、对象的方法调用、Class的底层本质
- 08-探究iOS底层原理|Category底层结构、App启动时Class与Category装载过程、load 和 initialize 执行、关联对象
- 09-探究iOS底层原理|KVO
- 10-探究iOS底层原理|KVC
- 11-探究iOS底层原理|探索Block的本质|【Block的数据类型(本质)与内存布局、变量捕获、Block的种类、内存管理、Block的修饰符、循环引用】
- 12-探究iOS底层原理|Runtime1【isa详解、class的结构、方法缓存cache_t】
- 13-探究iOS底层原理|Runtime2【消息处理(发送、转发)&&动态方法解析、super的本质】
- 14-探究iOS底层原理|Runtime3【Runtime的相关应用】
- 15-探究iOS底层原理|RunLoop【两种RunloopMode、RunLoopMode中的Source0、Source1、Timer、Observer】
- 16-探究iOS底层原理|RunLoop的应用
- 17-探究iOS底层原理|多线程技术的底层原理【GCD源码分析1:主队列、串行队列&&并行队列、全局并发队列】
- 18-探究iOS底层原理|多线程技术【GCD源码分析1:dispatch_get_global_queue与dispatch_(a)sync、单例、线程死锁】
- 19-探究iOS底层原理|多线程技术【GCD源码分析2:栅栏函数dispatch_barrier_(a)sync、信号量dispatch_semaphore】
- 20-探究iOS底层原理|多线程技术【GCD源码分析3:线程调度组dispatch_group、事件源dispatch Source】
- 21-探究iOS底层原理|多线程技术【线程锁:自旋锁、互斥锁、递归锁】
- 22-探究iOS底层原理|多线程技术【原子锁atomic、gcd Timer、NSTimer、CADisplayLink】
- 23-探究iOS底层原理|内存管理【Mach-O文件、Tagged Pointer、对象的内存管理、copy、引用计数、weak指针、autorelease
3. 基于Swift语言探索iOS底层原理
关于函数、枚举、可选项、结构体、类、闭包、属性、方法、swift多态原理、String、Array、Dictionary、引用计数、MetaData等Swift基本语法和相关的底层原理文章有如下几篇:
- 01-📝Swift5常用核心语法|了解Swift【Swift简介、Swift的版本、Swift编译原理】
- 02-📝Swift5常用核心语法|基础语法【Playground、常量与变量、常见数据类型、字面量、元组、流程控制、函数、枚举、可选项、guard语句、区间】
- 03-📝Swift5常用核心语法|面向对象【闭包、结构体、类、枚举】
- 04-📝Swift5常用核心语法|面向对象【属性、inout、类型属性、单例模式、方法、下标、继承、初始化】
- 05-📝Swift5常用核心语法|高级语法【可选链、协议、错误处理、泛型、String与Array、高级运算符、扩展、访问控制、内存管理、字面量、模式匹配】
- 06-📝Swift5常用核心语法|编程范式与Swift源码【从OC到Swift、函数式编程、面向协议编程、响应式编程、Swift源码分析】
4. C++核心语法
- 01-C++核心语法|C++概述【C++简介、C++起源、可移植性和标准、为什么C++会成功、从一个简单的程序开始认识C++】
- 02-📝C++核心语法|C++对C的扩展【::作用域运算符、名字控制、struct类型加强、C/C++中的const、引用(reference)、函数】
- 03-📝C++核心语法|面向对象1【 C++编程规范、类和对象、面向对象程序设计案例、对象的构造和析构、C++面向对象模型初探】
- 04-📝C++核心语法|面向对象2【友元、内部类与局部类、强化训练(数组类封装)、运算符重载、仿函数、模板、类型转换、 C++标准、错误&&异常、智能指针】
- 05-📝C++核心语法|面向对象3【 继承和派生、多态、静态成员、const成员、引用类型成员、VS的内存窗口】
5. Vue全家桶
- 01-📝Vue全家桶核心知识|Vue基础【Vue概述、Vue基本使用、Vue模板语法、基础案例、Vue常用特性、综合案例】
- 02-📝Vue全家桶核心知识|Vue常用特性【表单操作、自定义指令、计算属性、侦听器、过滤器、生命周期、综合案例】
- 03-📝Vue全家桶核心知识|组件化开发【组件化开发思想、组件注册、Vue调试工具用法、组件间数据交互、组件插槽、基于组件的
- 04-📝Vue全家桶核心知识|多线程与网络【前后端交互模式、promise用法、fetch、axios、综合案例】
- 05-📝Vue全家桶核心知识|Vue Router【基本使用、嵌套路由、动态路由匹配、命名路由、编程式导航、基于vue-router的案例】
- 06-📝Vue全家桶核心知识|前端工程化【模块化相关规范、webpack、Vue 单文件组件、Vue 脚手架、Element-UI 的基本使用】
- 07-📝Vue全家桶核心知识|Vuex【Vuex的基本使用、Vuex中的核心特性、vuex案例】
6. 音视频技术核心知识
- 01-📝音视频技术核心知识|了解音频技术【移动通信技术的发展、声音的本质、深入了解音频】
- 02-📝音视频技术核心知识|搭建开发环境【FFmpeg与Qt、Windows开发环境搭建、Mac开发环境搭建、Qt开发基础】
- 03-📝音视频技术核心知识|Qt开发基础【
.pro文件的配置、Qt控件基础、信号与槽】 - 04-📝音视频技术核心知识|音频录制【命令行、C++编程】
- 05-📝音视频技术核心知识|音频播放【播放PCM、WAV、PCM转WAV、PCM转WAV、播放WAV】
- 06-📝音视频技术核心知识|音频重采样【音频重采样简介、用命令行进行重采样、通过编程重采样】
- 07-📝音视频技术核心知识|AAC编码【AAC编码器解码器、编译FFmpeg、AAC编码实战、AAC解码实战】
- 08-📝音视频技术核心知识|成像技术【重识图片、详解YUV、视频录制、显示BMP图片、显示YUV图片】
- 09-📝音视频技术核心知识|视频编码解码【了解H.264编码、H.264编码、H.264编码解码】
- 10-📝音视频技术核心知识|RTMP服务器搭建【流媒体、服务器环境】
7. 计算机网络核心知识
- 01-📝计算机网络核心知识|计算机网络通识【计算机网络性能指标、网络协议分层的几种方式、OSI七层模型概念通识】
- 02-📝计算机网络核心知识|【搭建调试环境、新建Java项目、计算机通信基础、计算机连接方式、集线器/网桥/交换机/路由器】
- 03-📝计算机网络核心知识|【MAC地址、IP地址的组成、IP地址的分类、CIDR、子网掩码、超网】
- 04-📝计算机网络核心知识|【 静态路由、动态路由、数据包的传输、ISP、服务器机房、网络分类、家用无线路由器、公网IP、
- 05-📝计算机网络核心知识|物理层/数据链路层【模拟信号&&数字信号、数据链路层】
- 06-📝计算机网络核心知识|网络层【IP数据包Packet、网络协议、Checksum、源IP地址和目标IP地址、ping】
- 07-计算机网络协议核心知识|【传输层-UDP】
- 08-计算机网络协议核心知识|【传输层-TCP之可靠传输】
- 09-📝计算机网络核心知识|传输层TCP2【流量控制原理、拥塞控制:slow start、congestion avoidance、快速重传、快速恢复】
- 10-计算机网络协议核心知识|【传输层-TCP连接】
- 11-计算机网络协议核心知识|【 应用层】
- 12-📝计算机网络核心知识|【Cookie、Session(概念、生命周期、有效期、浏览器的要求等)、跨域(概念、 同源策略、跨域解决方
- 13-计算机网络协议核心知识|【 代理/CDN/网络安全】
- 14-计算机网络协议核心知识|【(非)对称加密/数字签名/证书】
- 15-计算机网络协议核心知识|【HTTPS】
- 16-📝计算机网络核心知识|HTTPS协议【HTTP2、HTTP3】
其它底层原理专题
1. 底层原理相关专题
2. iOS相关专题
- 01-iOS底层原理|iOS的各个渲染框架以及iOS图层渲染原理
- 02-iOS底层原理|iOS动画渲染原理
- 03-iOS底层原理|iOS OffScreen Rendering 离屏渲染原理
- 04-iOS底层原理|因CPU、GPU资源消耗导致卡顿的原因和解决方案