OSI参考模型
表示层:数据的编解码与加解密,以及压缩,socket也属于这一层
会话层:连接的建立
概述
因特网
inter-前缀意为“相互的”,internet表示相互连接的网络,任意的通信协议。
Internet表示全球最大的开放特定计算机网络,使用TCP/IP协议族作为通信规则,前身为ARPANET
发展概述
ARPANET -> Internet
- 1969,ARPANET
- mid 1970s,多种网络互联的研究
- 1983,TCP/IP成为ARPANET的标准协议,也是公认的Internet诞生时间
三级结构的Internet
- 1985,NSFNET
- 1990,ARPANET closed
- 1991,Internet开始商业化
多层次ISP结构的Internet
- 1993,NSFNET逐渐被商用Internet主干网取代,政府机构将其交给ISP运营
- 1994,万维网WWW技术促使因特网迅猛发展
- 1995,NSFNET停止运作,Internet正式商业化
ISP
标准化—RFC
组成
信息交换技术
电路交换
报文交换
报文加首部,便于给交换机提供信息
分组交换
将原来的报文分组,带首部依次发送每个组
计算机网络概念
定义
要点
互连
通过有线/无线方式进行通信
集合
至少两台以上计算机
自治
独立的计算机,具备自己的硬件和软件,
定义
一些 通用可编程的硬件(包括智能手机、电脑等各种计算机,这些硬件并不只用于数据通信,而且能支持广泛的应用程序)互联而成。
分类
按交换技术分类
- 电路交换
- 报文交换
- 分组交换
按使用者分类
- 专用
- 公用
按传输介质分类
- 有线 Wired
- 无线 Wireless
按覆盖范围分类
覆盖范围从大到小排列:
- 广域网 WAN Wide Area 国家、洲
- 城域网 MAN Metropolitan Area 城市
- 局域网 LAN Local Area 机构、楼房
- 个域网 PAN Personal Area 个人电子设备 组成的多处理机系统WPAN
按拓扑结构分类
总线
星型
环形
网状
性能指标
比特、字节、速率(数据率,比特率)
1 GiB = 2^30^ B(操作系统) 1 GB = 10^9^ B(硬盘厂商) binary 表示二进制
- kilo bps, ==k==bps, Mbps, Gbps, Tbps : 1000
- B, KB, MB, GB, GB : 1024
- bps 进制为1000,Byte 进制为1024,8 b = 1 B
带宽(Band Width)
1 Mbps = 0.125 MB/s = 128 KB/s 下载速度一般用字节表示
吞吐量
时延(Delay)
主机的发送速率
主机的发送速率,由网卡的发送速率、信道带宽、接口速率共同决定,取最小的那一个,速率应该尽量匹配。
发送时延、传播时延、处理时延
发送时延->发送速率和分组数据包长度
传播时延->电线长度和光速(电磁波速率)
处理时延->忽略
在发送数据时,电流的大小或电压水平会发生变化,这些变化被用来表示一串二进制码。具体来说,以下是这个过程的简要说明:
- 信号变化:在数字信号传输中,电流或电压会在不同的电平之间切换。比如,当电流达到某个高电压水平时,可以表示比特1,而在低电压水平时表示比特0。
- 时间同步:为了确保接收方能够正确识别这些电压变化,发送方和接收方通常会使用时钟信号进行同步。这保证了信号在正确的时间被读取,从而将电流的变化准确地转化为二进制数据。
- 比特流的形成:这些电流变化在时间轴上连续发生,从而形成一个比特流(例如 10101010),每个比特对应一个电压状态的变化。
通过这些方式,电流的变化被抽象为数字信息,使得数据可以在计算机和网络之间进行有效传输。
哪一个占主导?
时延计算要点
1个分组,1段链路
从上图也可以看出,即使是100MB的数据块,一共是800M个比特,发送时延都是全部计入的,而传播时延只需将距离除以传输速度即可。
横坐标是时间,纵坐标是位置,比特是一个接着一个向前传播的,发送时延取决于发送方:每个比特的发送时间都要计入发送时延,传播时延取决于最后一个比特的尾部传到对面所需的时间。
n个分组,n段链路
- 第一段链路:n个分组发送时延+1个传播时延
- 第二段链路:发送和接收同时进行,等到第一段链路传输完成,第二段还剩最后1个分组未发送,因此第二段链路的实际时延为1个分组发送时延+1个传播时延
- n段路,m组:n个传播时延+[m+(n-1)*1]个分组发送时延,
- 存储转发:只有完整地接收一个比特,才能开始发送的工作
电路交换和分组交换时延
- 电路先要建立连接,然后直接发送整个报文,没有存储转发,相当于一组一链路
- 分组交换不用先建立连接,每一个分组采用存储转发方式。牢记四个变量:
- 1个分组发送时间,
- 分组数量,
- 1个链路传播时间,
- 链路数量
报文交换和分组交换
报文交换需要整整发送两次,分组交换需要发送组数加1次,流水线
时延带宽积
传播时延x带宽 传播过去一个比特的时间内,发送了多少比特,也称为比特单位的链路长度
往返时间(RTT)
Round-Trip 传输耗时要考虑在内,双向交互
利用率
丢包率(Packet Loss)
一些路由算法在未满时就会有丢包操作
体系结构
OSI 参考模型 & TCP/IP 模型
表示层:通信双方交换信息表示问题(数据格式转换),包括字符集转换,数据格式化,文本压缩,数据加密和解密的工作
会话层:对话管理,会话管理

网络Network 网际Internet
核心:TCP IP
分层的必要性
信号(bit)如何在两台机器之间传输—物理层
分组如何在网络内传输—数据链路层(MAC地址)
PPP ARP
分组如何在不同网络间传输(路由)—网络层(IP地址)
核心协议:IP ICMP
进程之间基于网络的通信,端到端的通信—传输层(端口号)
核心协议:TCP UDP
应用进程之间的交互实现特定网络—应用层
核心协议:HTTP POP3 SMTP(TCP) DNS RTP(UDP)
案例:在浏览器敲下一个URL后发生了什么?—应用进程间基于网络的通信
浏览器发送HTTP请求(访问URL指向的资源),HTTP属于应用层协议,需要向下传输通过物理层传到路由器的物理层,再向上传输到达网络层,经过解析之后,再通过物理层传到服务器的物理层,物理层向上传输到应用层,应用层的Web服务器应用程序会解析HTTP报文,之后返回HTTP响应(URL对应的资源),通过类似的方法传回给浏览器进程。
专用术语
对等实体通过所属层级的通信协议,在下方层级的服务(下层两个对等实体间的逻辑通信能够向上层提供服务)下进行逻辑通信(不用考虑其他层,实际上这种通信不存在)。
实体
对等实体
协议
语法:定义报文格式
语义:根据语法解析报文内容,定义出双方行为
同步:行为发生的时序关系(先后顺序)
服务
服务访问点、服务原语
协议数据单元PDU、服务数据单元SDU
面试要点
- TCP/IP协议体系的认知
- 链路层
- 以太网帧的格式
- MTU的概念
- ARP协议(掌握一下ARP缓存的原理)
- 网络层
- 掌握IP的首部格式
- 掌握IP的分片
- 掌握IP选路
- ICMP协议
- 掌握报文格式
- 分类:查询 + 差错
- 两种 + 五种
- 传输层
- UDP,次要一点,掌握特点和首部各个字段
- 掌握TCP
- 特点 + 首部字段 + 可靠机制
- 连接控制 : 三次握手,四次挥手,同时打开,同时关闭,半关闭(可能问到为什么需要)
- 流量控制机制:滑动窗口,慢启动,拥塞避免,快速重传,快速恢复
- 超时重传机制
- 应用层
- 掌握DNS协议
- 名字空间
- 指针查询(反向查找或逆向解析)基本原理
- DNS缓存
- FTP协议(活化石):
- 控制流和数据流
- 两种工作模式: PASV 和 PORT
- 各种指令和响应码
- 断点续传和匿名FTP的概念
- HTTP协议:
- 报文格式:请求报文,响应报文,请求头各种字段,响应头各种字段。
- HTTP状态码。
- HTTPS协议。
- 握手的详细过程。
- 摘要算法,数字签名,数字证书的原理和过程。
- 掌握DNS协议
OSI七层模型
OSI模型 - 维基百科,自由的百科全书 (wikipedia.org)
在网络通信的过程中,将发出数据的主机称为源主机,接收数据的主机称为目的主机。当源主机发出数据时,数据在源主机中从上层向下层传送。源主机中的应用进程先将数据交给应用层,应用层加上必要的控制信息就成了报文流,向下传给传输层。传输层将收到的数据单元加上本层的控制信息,形成报文段、数据报,再交给网际层。网际层加上本层的控制信息据报,传给网络接口层。网络接口层将网际层交下来的IP数据报组装成帧,并以比特流的形式传给网络硬件(即物理层),数据就离开源主机。
物理层、数据链路层
双绞线、集线器(HUB):多台计算机之间物理连接,遇到并发情况会有数据碰撞与紊乱,而且数据都是广播形式传递,无法同时向上和向下传输(半双工,相当于对讲机,只能听不能说)。CSMA/CD协议,发送以前进行载波侦听。属于物理层。
交换机:全双工。物理连接,也支持和其他交换机连接(桥接)能更好处理并发情况,里面有一张mac地址表,用来区分不同设备,计算机1第一次联络计算机2,将计算机2的MAC地址发送给交换机,由于不知道这个mac对应哪个接口,交换机通过数据泛洪的方式,广播给所有计算机,都收到了,但只有计算机2对应的接口会回应,mac表中添加计算机2的信息,以后他们的通信就不需要广播了。在数据链路层。
重点:以太网帧 MTU概念 ARP协议(MAC和IP互查,缓存)
协议
MAC LLC
逻辑链路控制 - 维基百科,自由的百科全书 (wikipedia.org) LLC
无线网络
移动网络 (Celluar Network)
无线局域网 (WLAN)
IEEE 802.11 是无线局域网(WLAN)的通用标准。
1999年,几家富有远见的公司联合起来组成了一个全球性非营利性协会——无线以太网兼容性联盟(Wireless Ethernet Compatibility Alliance, WECA),其目标是使用一种新的无线网络技术,无论品牌如何,都能带来最佳的用户体验。在2000年,该小组采用术语“Wi-Fi”作为其技术工作的专有名称,并宣布了正式名称:Wi-Fi Alliance。Wi-Fi产品经由Wi-Fi联盟的一家独立授权测试实验室进行严格测试,产品成功通过测试后,授予制造商或销售商使用Wi-Fi标志、Wi-Fi CERTIFIED标志和相关商标,Wi-Fi联盟使用术语“Wi-Fi CERTIFIED”来称呼这类通过认证的产品。802.11ax为Wi-Fi 6。
Wi-Fi与IEEE 802.11常常被混淆,两者的区别可以概述为IEEE 802.11是一种无线局域网标准,而Wi-Fi是IEEE 802.11标准的一种实现。
无线接入点 - 维基百科,自由的百科全书 (wikipedia.org) WAP
无线个人网 (WPAN)
蓝牙 - 维基百科,自由的百科全书 (wikipedia.org) Bluetooth (WPAN,IEEE 802.15.1)
ZigBee - 维基百科,自由的百科全书 (wikipedia.org) ZigBee (LR-WPAN,IEEE 802.15.4)
有线局域网 (LAN)
以太网 - 维基百科,自由的百科全书 (wikipedia.org) Ethernet LAN (IEEE 802.3)
点对点协议 - 维基百科,自由的百科全书 (wikipedia.org) PPP
PPPoE - 维基百科,自由的百科全书 (wikipedia.org) PPP over Ethernet PPPoE
PPPoA - 维基百科,自由的百科全书 (wikipedia.org)
拨号连接 - 维基百科,自由的百科全书 (wikipedia.org) Dial-up
调制解调器 - 维基百科,自由的百科全书 (wikipedia.org) 猫 modem
数字用户线路 - 维基百科,自由的百科全书 (wikipedia.org) DSL
非对称数字用户线路- 维基百科,自由的百科全书 (wikipedia.org) ADSL
固接专线 - 维基百科,自由的百科全书 (wikipedia.org) IPLC
硬件
网络交换机 - 维基百科,自由的百科全书 (wikipedia.org) Network switch
桥接器 - 维基百科,自由的百科全书 (wikipedia.org) 网桥 Network Bridge
网络适配器 - 维基百科,自由的百科全书 (wikipedia.org) 网卡 Network Adapter
集线器 - 维基百科,自由的百科全书 (wikipedia.org) Hub
8P8C - 维基百科,自由的百科全书 (wikipedia.org) RJ45
串行接口 - 维基百科,自由的百科全书 (wikipedia.org) COM
并行端口 - 维基百科,自由的百科全书 (wikipedia.org) LPT
USB - 维基百科,自由的百科全书 (wikipedia.org) Universal Serial Bus
校验算法
CRC(循环冗余校验)和汉明码都是错误检测和纠正的算法,但它们的底层原理和用途有所不同:
纠错码 - 维基百科,自由的百科全书 (wikipedia.org)
CRC(循环冗余校验)
CRC 是一种通过数学方法检测数据传输错误的技术。它在底层通过多项式除法来生成校验码,将数据视为一个二进制多项式,并与一个预定的生成多项式相除。CRC的底层原理包括以下几个步骤:
- 数据多项式化:将待校验的数据视为一个二进制多项式,例如“1011”对应 ($x^3 + x + 1$)。
- 生成多项式:选择一个生成多项式(如 CRC-32 使用 ($x^{32} + x^{26} + x^{23} + \ldots + x + 1$))。
- 模2除法:将数据多项式和生成多项式进行模2除法(不需要进位的二进制除法),余数即为CRC校验码。
- 传输和校验:接收方用相同的生成多项式再进行除法运算,若余数为零,则说明数据没有错误。
CRC 常用于检测网络传输中的错误,因为其计算效率高,适合硬件实现,并能检测较高概率的错误。
2^n^M % P = FCS (Frame Check Sequence, 帧检验序列)
2^n^M + FCS % P = 0 如果M在传输过程中出现差错,结果将几乎不可能为0
汉明码
汉明码是一种错误纠正码,可以检测并纠正单比特错误,部分版本还能检测双比特错误。它的原理基于在数据中加入特定的校验位,使得数据在传输时出现单比特错误时可以被定位并纠正。
- 奇偶校验位的设置:汉明码会在原始数据中插入多个位置的奇偶校验位。这些位置是按二的幂次方设置的(如第1、2、4、8位等),每个校验位负责检查某些特定位置的数据位。
- 校验位计算:每个校验位用来检查特定数据位的奇偶性。对于一个给定的二进制数据,可以通过指定的位操作生成一组校验位。
- 错误检测和纠正:传输后,通过重新计算校验位的结果并与收到的校验位对比,可以检测并定位单个比特错误的位置,然后进行纠正。
汉明码适用于内存或磁盘数据校验和恢复等场景,但较不适合复杂错误模式的网络数据传输。
多址接入
当多个用户接入网络时,解决如何高效地共享一个无线资源(时间/频率/空间/载波)的技术。
CSMA 载波侦听多路访问
严格意义上不算MA,因为并没有真正共享
CSMA(Carrier Sense Multiple Access) 是一种载波监听多址接入协议,通常用于有线网络中,允许多台设备共享同一信道资源。CSMA 的核心思想是通过监听信道来避免冲突,主要有以下两种变体:
CSMA/CD
(Collision Detection,碰撞检测)半双工
- 应用于有线以太网(如 IEEE 802.3 标准)。在此模式下,设备在发送数据前先监听信道。如果信道空闲,数据即可发送;如果信道忙,设备会等待空闲后发送。
- 若在发送过程中发生冲突(检测到信号碰撞),设备会立即停止发送,并在随机时间后重试。
- CSMA/CD 主要用于有线网络,如早期的以太网,由于信道冲突频繁,现已逐渐被交换式以太网替代。
CSMA/CA
(Collision Avoidance,碰撞避免)
- 常用于无线网络(如 Wi-Fi/IEEE 802.11),因无线信道难以检测碰撞。
- CSMA/CA 通过在发送数据前监听信道,并等待一定时间以减少冲突发生,确保信道空闲时才进行发送。
- CSMA/CA 的碰撞避免机制更加适合无线信道的开放式环境。
CDMA 码分多址
多路复用技术
CDMA 是码分多址接入(Code Division Multiple Access)技术,主要用于蜂窝网络中。CDMA 的关键思想是通过为每个用户分配独特的伪随机码(PN 码)来区分不同用户的数据流,这样多个用户可以在同一频带内同时发送数据而不产生干扰。CDMA 的工作原理和优势如下:
- 伪随机码分配:每个用户的数据流会被一个特定的伪随机码调制,接收端利用相同的伪随机码解调,从而提取对应的数据。
- 同时占用信道:不同用户使用不同的伪随机码,可以在同一频带内同时传输数据,极大提高了频谱利用率。
- 抗干扰能力强:CDMA 的码分多址方式在信号干扰和路径损耗上有较强的容忍度,适合蜂窝移动通信。
- 应用:CDMA 主要应用于 2G、3G 的通信网络,特别是在美国、韩国的移动通信系统中被广泛使用,如 CDMA2000。
WCDMA
WCDMA(Wideband Code Division Multiple Access) 是宽带码分多址接入技术,基于 CDMA 的一种改进版本,是 3GPP(第三代合作伙伴计划)推出的 3G 标准之一。它在 CDMA 基础上使用更宽的带宽,从而提高数据速率和网络容量,是全球范围内 3G 网络的主流技术之一。
- 更宽的频谱带宽:WCDMA 使用 5 MHz 的带宽(相比 CDMA 的 1.25 MHz 带宽),支持更高的数据传输速率和更多用户接入。
- 更高的数据速率:在理想条件下,WCDMA 可实现高达 2 Mbps 的速率,支持语音、数据、视频等多种业务。
- 频谱效率:通过更宽的频谱和 CDMA 的抗干扰特性,WCDMA 能在高用户密度环境下提供稳定的连接。
- 应用:WCDMA 被广泛应用于全球的 3G 网络中,尤其是欧洲和亚洲的 GSM 网络运营商采用 WCDMA 技术升级到 3G。此技术在 4G LTE 的发展中逐步退出历史舞台。
TD-SCDMA
TD-SCDMA(Time Division Synchronous Code Division Multiple Access,时分同步码分多址)是中国自主研发的第三代移动通信标准,也是 3G 标准之一,由中国大唐电信和西门子公司联合开发,并被国际电信联盟(ITU)接纳为 3G 标准之一。TD-SCDMA 在中国得到了广泛的应用,但在国际市场上相对较少。
TD-SCDMA 的优势
- 频谱利用率高:采用 TDD 模式和同步技术,使得 TD-SCDMA 的频谱利用率相比传统的 FDD 制式更高,适合频谱资源紧张的环境。
- 适合不对称数据业务:可以根据实际流量需求调整上下行资源分配,特别适合数据业务占用较高的场景。
- 自主知识产权:TD-SCDMA 是中国自主研发的 3G 标准,拥有大量核心专利,减少了对外部技术的依赖。
TD-SCDMA 的局限性
- 国际支持度低:TD-SCDMA 主要在中国应用,国际上接受度不高,设备的生态系统较小,终端设备支持度有限。
- 覆盖和稳定性问题:与 WCDMA 和 CDMA2000 相比,TD-SCDMA 的覆盖范围和信号穿透性相对较差,容易受信号衰减影响。
- 技术升级受限:由于 3G 技术已经逐渐被淘汰,TD-SCDMA 的技术升级和演进受到了较大限制。
FDMA 频分多址
FDMA(Frequency Division Multiple Access)
- 原理:通过将可用频谱划分成多个独立的频段,每个用户使用一个独立的频段传输数据,彼此不会干扰。
- 应用:早期的模拟蜂窝网络(如 1G),一些卫星通信系统也使用 FDMA。
- 特点:实现简单,适合带宽分配相对固定的场景,但频谱利用效率不高。
OFDMA 正交频分多址
OFDMA(Orthogonal Frequency Division Multiple Access)
- 原理:将信道划分为多个子载波,通过正交性减少子载波之间的干扰,允许多个用户同时占用不同的子载波进行传输。
- 应用:4G LTE、Wi-Fi 6(802.11ax)、WiMAX(802.16)等。
- 特点:频谱利用效率高,适合宽带数据传输,并在密集环境下表现优异。
SC-FDMA 单载波频分多址
SC-FDMA(Single Carrier Frequency Division Multiple Access)单载波频分多址
原理:将上行链路的数据划分成多个子载波进行传输,使用单载波调制来减少功率峰值。
应用:4G LTE 上行链路。
特点:降低了上行链路中的峰均功率比(PAPR),适合移动设备的功率限制。
TDMA 时分多址
TDMA(Time Division Multiple Access)
- 原理:将信道分为不同的时间片,每个用户轮流在特定时间片上使用信道,从而达到多用户共享信道的目的。
- 应用:GSM(2G)、PHS、部分卫星通信。
- 特点:在一定程度上提高了频谱利用率,但时延较高,受限于用户数量增加后的带宽分配。
SDMA 空分多址
SDMA(Space Division Multiple Access)
- 原理:通过空间隔离的方式区分用户信号,通常结合智能天线等技术,在同一频段和时间使用不同方向的波束来服务不同用户。
- 应用:主要在蜂窝基站和无线局域网中使用,配合 MIMO(多输入多输出)技术使用,增强信道容量。
- 特点:适合用户密集度高的环境,频谱利用效率较高。
NOMA 非正交多址
NOMA(Non-Orthogonal Multiple Access)
- 原理:不同用户可以同时占用同一时间和频率资源,通过功率差异进行用户分离,接收端使用 SIC(Successive Interference Cancellation)分离信号。
- 应用:5G 网络中使用较多,提升频谱效率。
- 特点:频谱利用效率高,适合高用户密度场景,但对接收端的处理要求较高。
PDMA 模式分割多址
PDMA(Pattern Division Multiple Access)
- 原理:通过对信号的模式(如频域、时域、空域等)进行不同配置来分割用户信道。
- 应用:5G NR(New Radio)新型多址接入技术之一。
- 特点:结合空间、时间等多个维度的模式,进一步提高频谱效率。
MIMO
MIMO(Multiple Input Multiple Output)多输入多输出
- 原理:通过多根天线发送和接收多个数据流,提高信道容量。
- 应用:4G LTE、Wi-Fi 6、5G 等。
- 特点:不属于严格的多址技术,但与 SDMA、OFDMA 等结合,能够显著提升数据传输速率和覆盖范围。
ALOHA
- 原理:用户在任意时间段发送数据包,碰撞后重新发送;时隙 ALOHA 则将时间分割成固定时隙,用户在时隙开始时发送数据,减少了冲突概率。
- 应用:早期的卫星通信、无线传感器网络。
- 特点:简单易实现,但冲突率高,频谱利用率较低,通常不用于高效的现代网络。
网络层
IP地址:MAC地址属于物理地址,不够抽象,换了网卡还得重新建立联系。IP 地址是在计算机网络中用于标识设备的,然而它本身与具体的硬件设备无关是为了支持路由而设计的,使得数据能够在复杂的网络中找到目标设备,本质上是网络层的一种抽象,根据一定的规则和协议进行分配,帮助实现数据包在全球范围内的传输。
ARP协议:实际通信还是要通过物理地址也就是mac的,机器1传给交换机目标IP地址,机器2收到ip广播,记录来源的mac地址,这样机器2就知道了机器1的mac,并将自己的mac返回给机器1(ARP协议,根据IP解析MAC)以后就能直接通信。缺点:MAC地址表溢出,全网泛洪,效率低下。(网络层和数据链路层的边界)
子网掩码: 上述交换机的缺点导致其只能连接少数设备,所以就应该把网络分成一个个子网,由交换机负责单个子网的通信,子网掩码就是告诉计算机 子网的ID是IP前几位,消息发给交换机,如果根据子网掩码,目的IP不是子网,就将信息传给路由器。网络层
路由器: 同一台路由器连接的计算机,他们的网关(子网的关口、出口)相同,都是路由器的IP地址。路由器上有一张路由表,可以配置目标网段和 next jump ,用来决定各网段消息下一步应该交给哪个路由器。OSPF自动学习自动管理路由表,BGP是为了应对庞大的网络,确定数据包的最佳路径。在网络层
路由器vs交换机
- 工作层次不同:
- 路由器:工作在 网络层(OSI 模型的第 3 层),基于 IP 地址来转发数据包。它可以在不同的网络之间进行数据转发,比如将本地局域网与互联网连接起来。路由器可以通过 IP 地址进行路由选择,确定数据包的最佳传输路径。
- 交换机:工作在 数据链路层(OSI 模型的第 2 层),基于 MAC 地址来转发数据帧。它用于在同一个局域网(LAN)内连接多个设备,并通过 MAC 地址表来进行帧的转发和处理。高端交换机(如三层交换机)也可以在网络层上进行工作,具备一定的路由功能。
- 主要用途:
- 路由器:用于连接不同的网络,比如将你的家庭网络或局域网与互联网连接。它不仅能处理 LAN 内部的通信,还能通过 WAN 端口将内部网络连接到外部网络(如互联网)。路由器在网络之间转发数据,并为不同的网络分配和管理 IP 地址。
- 交换机:用于同一网络中的设备互联,主要在局域网(LAN)内部使用。交换机可以通过多个端口连接多个设备(如电脑、服务器、打印机等),并基于 MAC 地址表快速高效地在这些设备之间转发数据。它不会管理或处理外部网络通信。
- 数据转发方式:
- 路由器:根据IP 地址进行路由。它维护一个路由表,用来确定数据包的最佳路径,可能需要跨越多个网络。路由器使用不同的网络协议(如 OSPF、BGP)来管理和更新这些路由表。
- 交换机:根据MAC 地址转发数据帧。它通过学习每个设备的 MAC 地址并将其存储在 MAC 地址表中,来确定应该将数据帧转发到哪个端口。交换机在一个局域网内部通过这种方式高效转发流量。
- 连接范围:
- 路由器:通常连接不同的网络,比如家庭网络和互联网之间,或者连接多个子网。它的主要作用是通过不同的 IP 网段来连接和隔离不同的网络。
- 交换机:主要连接同一个局域网中的设备,如多台计算机、打印机等,形成一个共享的局域网。
- 网络地址分配与管理:
- 路由器:一般可以通过 DHCP(动态主机配置协议) 分配 IP 地址,管理局域网内设备的 IP 地址,并充当网络的网关,将局域网中的设备连接到外部网络。
- 交换机:通常不具备 DHCP 等功能,它只是转发数据,不会负责分配 IP 地址。不过,高级管理型交换机可能具备一些网络管理功能。
- NAT(网络地址转换)功能:
- 路由器:大多数路由器提供 NAT 功能,这允许多个内网设备通过一个公共 IP 地址访问外部网络(如互联网)。NAT 会在网络地址翻译时修改 IP 数据包的源或目标 IP 地址。
- 交换机:没有 NAT 功能。它仅在局域网内部转发数据帧,不处理 IP 层的转换。
重点:ip首部格式 ip分片 ip选路 路由表 ICMP格式、分类(2+5)
协议
地址解析协议 - 维基百科,自由的百科全书 (wikipedia.org) ARP IPv4 IP地址到MAC地址 ✅
邻居发现协议 - 维基百科,自由的百科全书 (wikipedia.org) NDP 基于IPv6
网际协议 - 维基百科,自由的百科全书 (wikipedia.org) IP ✅
互联网控制消息协议 - 维基百科,自由的百科全书 (wikipedia.org) ICMP ✅
互联网组管理协议 - 维基百科,自由的百科全书 (wikipedia.org) IGMP ✅
边界网关协议 - 维基百科,自由的百科全书 (wikipedia.org) BGP 基于 TCP ✅
内部网关协议 - 维基百科,自由的百科全书 (wikipedia.org) IGP
开放式最短路径优先 - 维基百科,自由的百科全书 (wikipedia.org) OSPF 基于IP ✅
路由信息协议 - 维基百科,自由的百科全书 (wikipedia.org) RIP 基于UDP ✅
IPsec - 维基百科,自由的百科全书 (wikipedia.org) IPSec
网络地址转换 - 维基百科,自由的百科全书 (wikipedia.org) NAT ✅
概念
网络套接字 - 维基百科,自由的百科全书 (wikipedia.org) Socket ✅
互联网服务提供商 - 维基百科,自由的百科全书 (wikipedia.org)ISP ✅
互联网托管服务 - 维基百科,自由的百科全书 (wikipedia.org)
光导纤维 - 维基百科,自由的百科全书 (wikipedia.org) Fiber
隧道协议 - 维基百科,自由的百科全书 (wikipedia.org) Tunnel ✅
通用路由封装 - 维基百科,自由的百科全书 (wikipedia.org) GRE
虚拟专用网 - 维基百科,自由的百科全书 (wikipedia.org) VPN ✅
代理服务器 - 维基百科,自由的百科全书 (wikipedia.org) Proxy ✅
SOCKS - 维基百科,自由的百科全书 (wikipedia.org) SOCKS
防火墙 - 维基百科,自由的百科全书 (wikipedia.org) Firewall
硬件
路由器 - 维基百科,自由的百科全书 (wikipedia.org)
住宅网关 - 维基百科,自由的百科全书 (wikipedia.org)
Network Address Transition
NAT协议,公网IP:IPv4数目限制,子网共用一个IP,发送数据的时候传给路由器,路由器内部NAT映射表记录内网IP对应的内网端口以及随机分配的可用公网端口号,信息从路由器的端口里出去,之后报文里的IP和端口全部都是公网的(篡改)冒充子网计算机跟目的地通信。某个端口收到响应,路由器根据NAT表映射到内网的IP跟端口,然后把响应传给桌子往计算机
目的地的路由器收到报文后,再次根据NAT映射表,将报文精准发送给对应IP的对应端口,但是此时的目的地并不知道来源的真实端口和IP。因此不能直接与其通信,两台处于不同子网的设备是不能相互找到和通信的,因此有了端口转发,VPN等方式通信
- 内部到外部的通信
- 内网设备(使用私有 IP 地址)发起访问外部网络的请求时,NAT 会将内网设备的私有 IP 地址和端口号转换为路由器的公共 IP 地址和一个动态分配的外部端口。
- 这种方式允许内网设备共享一个公共 IP 地址,通过不同的外部端口来区分多个连接。
- 外部响应的处理
- 当外部网络(例如互联网上的服务器)响应内网设备的请求时,NAT 路由器根据维护的 NAT 表将外部响应流量(发往公共 IP 地址和端口)转换回相应的内网设备的私有 IP 地址和端口。
- 这使得内网设备能够从外部网络获取响应数据。
- 默认不处理外部对内部的主动连接
- NAT 的设计初衷是为了保护内网,并允许内网设备访问外部网络。所以,外部设备无法直接发起请求到 NAT 后的内网设备,除非进行额外的配置(例如端口转发)。
- 当外部网络试图访问路由器的公共 IP 地址时,NAT 路由器会没有匹配的 NAT 规则来将外部请求路由到内网设备,因为没有预先建立的映射关系。
如何让外部访问内部设备?
虽然默认情况下 NAT 不允许外部设备主动访问内网设备,但通过一些配置,可以实现外部访问内部网络:
- 端口转发(Port Forwarding):
- 通过手动配置 NAT 路由器,你可以将外部的特定端口请求映射到内网设备的 IP 地址和端口。这样,当外部网络访问路由器的公共 IP 地址和该端口时,路由器会将流量转发给指定的内网设备。
- 例如,将外部的
203.0.113.5:8080
端口映射到内网设备192.168.1.10:80
,从而实现外部访问内网中的 Web 服务器。
- DMZ(Demilitarized Zone,非军事区):
- DMZ 功能允许你将内网中的某台设备完全暴露给外部网络。所有未指定端口的外部请求都将被路由到 DMZ 主机。
- 这使得外部设备能够访问该主机,但同时也减少了该设备的安全性。
- VPN(虚拟专用网络):
- 通过在外部设备和内网之间建立 VPN 连接,外部设备可以成为虚拟子网中的一部分,获得与内网设备直接通信的能力。VPN 通常是一种更安全的访问内部设备的方式。
- 反向连接:
- 内网设备可以主动与外部设备建立连接(如通过反向 SSH 隧道),让外部设备通过该连接间接访问内网中的设备。
DHCP
分配IP 内网-使用DHCP协议首次连接路由器,设备要广播DHCP Discover 请求,表示自己需要连接网络。路由器监听DHCP请求,能够动态管理自己的IP池,通过DHCP Offer给计算机分配IP地址和默认网关(用于访问外部地址)以及子网掩码和DNS 设备收到以后Request,路由器收到以后发送ACK,确认分配并连接成功。设备使用某个IP地址的时间有限,到时间如果设备不再续用,DHCP服务器会回收。某些设备可能需要为静态的IP,这个可以通过MAC绑定也可以手动配置。
公网 静态:根据运营商提供的静态IP,子网掩码,网关,dns手动配置。动态DHCP。 拨号 家庭公网使用PPPoE协议向运营商动态租用(PPPoE提供了身份验证功能,也就是宽带账号)
DNS
IP和域名 Domain Name dns可以将域名解析为ip地址,提供了用户友好的方式来访问互联网资源 属于应用层
传输层
端口:同一台设备中,不同应用程序有不同端口,发送地址时候要加上目标端口和目标IP (UDP给应用程序标注了身份)传输层
TCP: UDP没有确认机制,可靠性差于是有了TCP,在不可靠信道上建立可靠连接,但是速度慢,网络游戏和视频流仍然使用UDP
重试机制(接收方确认) 传输层
数据分包整理机制(分包,标注序号,大段数据的小段错误不用全部重新发送,接收方回复确认要针对序号进行回复)
连接的建立(三次握手)
流量控制机制,动态调整一次发送分包个数(滑动窗口、拥塞控制,慢启动,快速重传,快速恢复)
接收方一次可能接不住全部包
连接的断开(四次挥手)
应用层传输协议
协议
网络控制程序 - 维基百科,自由的百科全书 (wikipedia.org) NCP
传输控制协议 - 维基百科,自由的百科全书 (wikipedia.org) TCP ✅
用户数据报协议 - 维基百科,自由的百科全书 (wikipedia.org) UDP ✅
TCP/UDP端口列表 - 维基百科,自由的百科全书 (wikipedia.org)
重点:udp tcp(特点,首部,校验和,连接控制三握四挥 同关 同开 半关,流量控制记住,超时重传)
应用层
理论上讲,有了以上三层协议的支持,数据已经可以从一个主机上的应用程序传输到另一台主机的应用程序了,但此时传过来的数据是字节流,不能很好的被程序识别,操作性差,因此,应用层定义了各种各样的协议来规范数据格式,常见的有http,ftp,smtp等,在请求Header中,分别定义了请求数据格式Accept和响应数据格式Content-Type,有了这个规范以后,当对方接收到请求以后就知道该用什么格式来解析,然后对请求进行处理,最后按照请求方要求的格式将数据返回,请求端接收到响应后,就按照规定的格式进行解读。
除了HTTP和HTTPS之外,还有很多其他的网络协议,用于不同的应用和目的。以下是一些常见的协议:
- **FTP (File Transfer Protocol)**:用于在计算机之间传输文件。前缀为
ftp://
。 - **SFTP (Secure File Transfer Protocol)**:在FTP的基础上增加了加密层,确保文件传输的安全性。前缀通常为
sftp://
。 - **FTPS (FTP Secure)**:FTP的安全版本,通过TLS/SSL加密传输。前缀为
ftps://
。 - **SMTP (Simple Mail Transfer Protocol)**:用于发送电子邮件。虽然它通常不在URL中直接使用,但它是邮件服务器之间传输邮件的主要协议。
- **IMAP (Internet Message Access Protocol)**:用于从邮件服务器检索电子邮件。常见的前缀是
imap://
。 - **POP3 (Post Office Protocol version 3)**:也是用于从邮件服务器检索电子邮件的协议,前缀为
pop3://
。 - Telnet:一种远程终端协议,用于通过网络连接到远程计算机。前缀为
telnet://
。 - **SSH (Secure Shell)**:用于安全地远程登录到计算机系统。前缀为
ssh://
。 - HTTP(Hypertext Transfer Protocol):超文本传输协议,是一种用于从web服务器传输网页的协议。
http://
表示该网页使用的是HTTP协议。HTTP是一个无状态的协议,意味着每次请求都是独立的,不会记录之前的交互状态。https://
:在HTTP的基础上,HTTPS(HTTP Secure)增加了加密层(使用TLS/SSL协议),用于确保数据在传输过程中是安全的。https://
用于需要保护数据隐私和完整性的网页,如在线银行和购物网站。
应用间通信架构
终端(通信技术术语)_百度百科 (baidu.com) Terminal终端
主从式架构 - 服务器-客户机(C/S)_百度百科 (baidu.com) Client/Server ✅
服务器 - 维基百科,自由的百科全书 (wikipedia.org) server ✅
B/S结构_百度百科 (baidu.com) Browser/Server ✅
软件设计模式
协议
域名系统 - 维基百科,自由的百科全书 (wikipedia.org) DNS 基于 TCP UDP ✅
动态主机设置协议 - 维基百科,自由的百科全书 (wikipedia.org) DHCP 基于UDP ✅
超文本传输协议 - 维基百科,自由的百科全书 (wikipedia.org) HTTP ✅
WebSocket - 维基百科,自由的百科全书 (wikipedia.org) WebSocket ✅
万维网 - 维基百科,自由的百科全书 (wikipedia.org) WWW ✅
- 网页浏览器 - 维基百科,自由的百科全书 (wikipedia.org) WWW Browser ✅
表示层 - 维基百科,自由的百科全书 (wikipedia.org) Presentation Layser
会话层 - 维基百科,自由的百科全书 (wikipedia.org) Session Layer
- 传输层安全性协议 - 维基百科,自由的百科全书 (wikipedia.org) SSL/TLS ✅
重点:
dns 指针查询 反向查找 逆向解析 dns 缓存 名字空间
ftp 控制流 数据流 工作模式pasv+port 指令+响应码 断点续传
http 报文格式(请求头字段和响应头字段)状态码
https 详细握手 摘要算法 数字签名 数字证书