网络基础知识
00 min
2024-4-24

什么是网络

网络是由节点和连线构成的图,表示诸多对象及其关系。

什么是计算机网络

计算机网络指的是将地理位置不同的具有独立功能的多台计算机及其外部设备,通过通信线路物理连接(包括有线、无线连接),并在网络操作系统操作、网络管理软件和网络通信协议的管理和协调下,实现资源共享和信息传递的计算机网络。

带宽

在数字设备中,指的是单位时间数据的传输量。
网络传输习惯上使用比特率,即bps每秒传输的二进制位数。
常见的100M网络,实际上指的是理论上的下行速度为100Mbps,换算得12.5MBps。(per second 简写为ps,b为位,B为字节)
 

拓扑

总线型

notion image
将所有设备都连接在公共总线上,结点间使用广播通信方式。一个结点发出的信息,总线上所有其他结点都可以接收到。一段时间只允许一个结点独占总线。
常见使用同轴电缆连接,总线两端需要终结器。
  • 优点:
    • 结构简单、易于实现
    • 易于扩充,增加或移除结点比较灵活
    • 可靠性较高,个别结点发生故障时,不影响网络中其他结点的正常工作
  • 缺点
    • 网络传输能力差,安全性低,总线发生故障时,会导致全网瘫痪
    • 所有数据都需要经过总线传输, 总线是整个网络的瓶颈. 结点数量的增加会影响网络性能.
    •  

环形结构

notion image
环形结构是将互联网的计算机有通信线路连接成一个闭合的环, 在环形结构网络中信息按照固定方向流动, 或顺时针方向, 或逆时针方向.
  • 优点
    • 令牌控制, 没有线路竞争, 实时性强, 传输控制容易
  • 缺点
    • 维护困难, 可靠性相对不高. 一个结点发生故障时, 可能导致全网瘫痪, 可以使用双环拓扑结构, 但是复杂性提升.
    •  

星型拓扑

notion image
每个结点都由一条单独的通信线路与中心结点连接, 其他各结点都与该中心结点有着物理链路的直接互连, 其他结点直接不能直接通信, 其他结点直接的通信需要该中心结点进行转发. 因此中心结点必须有着较强的功能和较高的可靠性.需要中心设备, 例如hub, switch(交换机), router(路由器)
  • 优点
    • 可靠性高, 结构简单, 方便管理, 易于拓展, 传输效率高
  • 缺点
    • 线路利用率低, 中心结点需要很高的可靠性和冗余度
注意: hub工作在一层, 这种星型实际上就是芯片化的总线网络. 只是物理拓扑结构上感觉像是星型.
 

OSI参考模型

OSI是Open System Interconnection的缩写, 意为开放式系统互联. 国际标准化组织(ISO)定制了OSI模型,发布于1984年.该模型定义了不同不同计算就互联的标准, 是设计和描述计算机网络通信的基本框架. OSI模型把网络通信的工作分为7层, 分别是物理层, 数据链路层, 网络层, 传输层, 会话层, 表示层和应用层.
notion image
notion image
  • 物理层: 定义了电器规范, 设备规范, 物理接口等, 电信号的变化, 或数字信号变化, 比特.
  • 链路层: 二层. 将比特组织为帧, 即对字节进行定义, 支持错误检查. 使用物理地址即MAC地址. MAC有48位, 前24位厂商编号由美国的电气和电子工程师协会IEEE分配, 后24位设备序号.
  • 网络层: 三层. 将帧组织称包, 包传递的路径选择(路由), 将包传输到目标地址. 使用逻辑地址即IP地址.
  • 传输层: 四层, 解决传输的问题, 确保数据传输的可靠性; 建立, 维护, 终止虚拟电路; 错误检测和恢复.
  • 会话层: 建立, 管理, 终止应用程序间的逻辑通路, 即会话
  • 表示层: 对应用数据格式化, 加密解密, 压缩解压缩等. 上上层数据转换为适合网络传输的格式, 或将下层数据转化为上层能够处理的数据.
  • 应用层: 七层. 为应用程序提供网络服务接口, 用户使用的时候并不关心会话如何奖励保持, 也不关心协议的协商是否加密等.

数据传输

notion image
数据很大, 在应用层切片, 每一份数据都会在下一层被封装.
在数据链路层会增加tail即校验位, 最后在物理层上都是电平信号0, 1发送出去.
到了对端设备, 由下至上逐层解包组合. 直到合成并还原成应用层的一份数据.

通讯的三种模式

单播

包在计算机网络传输中, 目的地址为单一目标的传输方式. 每次都是点对点的2个实体间互相通信
notion image
上面通信模式, 如果左边主机要发送同样数据给到右边三个主机, 那左边主机就需要连续发送三次分别给到右边三个主机.
例如, 左边主机发起视频会议邀请右边三个主机, 那么左边主机需要将音频数据和视频数据同时发给右边三个主机, 此时单播模式显然不满足要求.

广播

数据在网络中传输, 发往的目标地址是网络中所有设备的传输方式. 所有设备是有范围的, 这个范围称为广播域.
IP v6不支持广播, 由组播替代.
notion image

多播, 组播

把数据同时传递给一组目的地址. 数据源之发出一份数据, 会在尽可能远的设备上复制和分发.
notion image
notion image
冲突域: 网络中设备A发送数据时, 设备B也发送数据, 数据碰撞, 发生冲突, 这两个设备就属于同一个冲突域.
  • 交换机可以隔离冲突域.
  • 路由器可以隔离广播域.

局域网LAN

notion image
局域网Local Area Network, 指的是某一个区域内, 多台计算机互联的计算机组.
常见组网设备, 网线, 有线网卡, 无线网卡, 集线器, 交换机, 路由器等.

网络设备

有线连接, 需要使用网线, 最早使用同轴电缆, 后来使用双绞线, 现在高速网络布线可以采用光纤.
常用的双绞线使用RJ45水晶头
直通采用双端T568B, 互连使用一端T568A一端使用T568B的交叉线, 不过目前新型网卡可以自适应, 都使用直通线连接即可.
notion image

集线器hub

工作在一层. 使用HUB连接的设备看似是星型, 实际是总线型.
它是物理层设备, 只认识电信号, 所以根本不认识什么MAC地址之类的信息.早起用来多机互联, 信号中继的作用.
连入设备越多, 广播信号, 在一个冲突域, 网络效率很低.
使用HUB连接的所有设备, 都在同一个冲突域.

交换机switch

工作在二层. 内部记录着MAC表, 通过自学习, 建立交换机端口和MAC地址对应表. 内部有电路交换数据, 如同信号立交桥. 网桥也工作在这一层.

路由器Router

工作在三层. 内部记录路由表, 记录这路由器的端口到网络对应关系. 这个表可以静态配置, 也可以动态更新.
功能: 分割广播域; 选择路由; 维护和检查路由信息; 连接广域网.
 

广域网WAN

广域网, 又称外网, 公网(Wide Area Network). 连接不同局域网或城域网的计算机通讯网络.

互联网Internet

互联网Internet, 也称因特网. 前身是美国军用ARPA网, 后来连入了很多的科研院校, 并逐步商业化走向全球.
它连接了覆盖全球的网络, 是众多的广域网互联的大型网络.
互联网使用了TCP/IP协议.
 

TCP/IP协议栈

TCP/IP (Transmission Control Protocol / Internet Protocol),传输控制协议/因特网互联协议。
它是一个包含很多工作在不同层的协议的协议族,其中最著名的2个协议分别是TCP和IP协议。
它最早起源于美国国防部(缩写为DoD)的ARPA网项目,1982年应用于美国所有军事网络。IBM、AT&T、DEC从1984年起就开始使用TCP/IP协议。TCP/IP更加广泛的传播是在1989年,加州大学伯克利分校在BSD中加入了该协议。微软是在Win95中增加。
TCP/IP协议,共定义了四层:网络访问层、Internet层、传输层、应用层。
notion image
 

传输层协议

TCP
UDP
连接类型
面向连接
无连接
可靠性
可靠
不可靠
有序
数据包有序号
没有包序
使用场景
大多数场合, 数据不能出任何问题
视频, 音频
端到端
区分客户端和服务器端
不区分客户端和服务器端, 叫发送端和接收端
连接
  • TCP需要通讯双方预先建立连接, 需要三次握手, 四次挥手
  • UDP不需要预先建立连接
可靠性
  • TCP需要确定每一个包是否接收到, 丢包重发, 效率低了些
  • UDP尽可能交付数据, 不需要确认数据包, 丢包无法知道, 也不重复, 效率高
有序
  • TCP包有序, 可以进行顺序控制. 第一个包序号随机生成, 之后的序号都和它有关.
  • UDP包无序, 无法纠正, 只能在应用层进行验证

TCP协议三次握手/四次挥手

notion image
三次握手建立连接 Three-way Handshake
  1. Client首先发送一个SYN包告诉Server端我的初始序列号是X, 发送[SYN] seq=x
  1. Server端收到SYN包后回复给Client一个确认包, 告诉Client说我收到了.Server端也需要告诉Client端自己的初始序列号, 于是Server也发送一个SYN包告诉Client我的初始序列号是Y. [SYN ACK] seq=y ack=x+1. ack=x+1表示服务器端期望客户端下一次序号从x+1开始.
  1. Client收到后, 回复Server一个确认包说我知道了[ACK] seq=x+1 ack=y+1
 
数据传输
 
  1. 客户端发送[PSH] seq=x+1 ack=y+1 len=3 ... 。
    1. seq=x+1表示客户端当前的序号;
    2. ack=y+1是期望从服务器端返回的seq号;
    3. len=3表示当前发送数据的字节大小
  1. 服务器端返回的响应[ACK] seq=y+1 ack=x+1+3 len=0... 。
    1. seq=y+1正是客户端期望的服务器端的序号;
    2. ack=x+4说明服务器端已经接受了3个字节数据,希望从x+4开始接收下一次数据;
    3. len=0,表示服务器端只是响应无数据发送给客户端所以长度为0
  1. 客户端再发送数据[PSH] seq=x+4 ack=y*1 len=10 ...
  1. 服务端响应[ACK] seq=y+1 ack=x+14 len=0 ...
  1. 客户端发送重复上面的过程
 
四次挥手
notion image
  1. Client发送一个FIN包告诉Server需要断开
  1. Server收到后回复一个ACK确认FIN包收到
  1. Server在自己也没有数据发送给Client后, Server也发送一个FIN包给Client, 表示无数据发送了
  1. Client收到后, 就会回复一个ACK确认Server的FIN包
主动发出FIN包就是主动关闭方, 就会进入TIME_WAIT, 原因是被动关闭方发出的FIN包需要确认, 万一此包丢失, 被动关闭方未收到确认会重发FIN包, 主动关闭方还在, 可以重发ACK.
 

IP地址**

IP地址是IP协议提供的一种一个地址格式, 他为互联网上的设备分配一个用来通信的逻辑地址.
目前分为IP v4和IP v6.

IP V4

IP V4是一个32为二进制, 为了方便使用, 使用"点分十进制”表示法, 将这个二进制数每8为断开, 每八位一个字节, 一个字节表示的十进制正整数范围是0~255(2的8次方).例如: 192.168.142.100
IP v4地址早期比较充足, 随着全球连入互联网, 在2011年IP v4地址分配完毕.
 
IP地址分类
  • 公有地址: 需要因特网信息中心申请, 在互联网上可以直接使用的IP地址
  • 私有地址: 不需要注册, 可以组织内部网络使用的IP地址