Files
security-book/00.基础阶段/01.网络基础/01.网络基础概念.md
2025-08-27 14:13:17 +08:00

440 lines
12 KiB
Markdown
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 01.网络基础概念
## 1. 什么是网络
给各个节点之间提供信息交换的系统
两个节点之间连接一根网线组成了最简单的网络
## 2. 数据通信的类型
### 2.1 单播
一对一
### 2.2 广播
一对广播域内所有所有设备
如果是ffff.ffff.ffff的mac地址表示是广播
如果IP的主机位全为1表示广播
如果IP地址是255.255.255.255,表示在任何局域网,这个数据包都是广播
### 2.3 组播
一对所有感兴趣的组员
## 3. 集线器
![image-20200307092326426](01.网络基础概念/image-20200307092326426.png)
将网线的铜介质直接连在一起,这样就可以多个设备之间传递信号。
集线器在收到一个数据之后,会发送给所有的出口。
不管广播,单播,组播,都是发给所有节点
### 3.1 优点
- 稳定性
- 便宜
### 3.2 缺点
- 不安全
- 无法提供中继
## 4. 交换机
![image-20200307093046757](01.网络基础概念/image-20200307093046757.png)
交换机有操作系统,在收到数据之后会根据数据中的目的地址进行准确的转发。
单播会被准确的转发
广播、组播会被泛洪
一个交换机组成的网络,一般是一个局域网,大家可以直接互相访问
## 5. 路由器
![image-20200307094302877](01.网络基础概念/image-20200307094302877.png)
路由器主要用于连接不同的网段,并且负责隔离广播域。
单播会被准确的转发
广播会被拒绝
组播会根据感兴趣组的注册信息,准确转发
## 6. 网络拓扑
- 逻辑拓扑
- 标注出主要节点的连线,忽略不重要设备
- 主要节点有可能是虚拟化的
- 物理拓扑
- 标注出物理设备的连线
- 主要用于弱点实施
## 7. OSI七层模型
![image-20200307101521932](01.网络基础概念/image-20200307101521932.png)
OSI七层模型必须要会背面试必问。
### 7.1 应用层
提供用户UI接入以及各种应用程序协议
http
dns
ftp
### 7.2 表示层
对数据进行优化处理
格式化,压缩解压缩,加密与解密
### 7.3 会话层
管理不同应用的会话
### 7.4 传输层(段)
数据分段和重组,提供数据传输的方式
1. tcp
1. 可靠传输
2. 提供分段的可靠重组
2. udp
1. 尽力而为的传输
提供应用协议的区分。使用端口号,来让操作系统将数据和进程之间关联。
端口号范围0~65535
操作系统会预设一些端口号用于访问服务,比如我访问 http://www.ujs.edu.cn/
操作系统会根据http协议去查找应该访问www.ujs.edu.cn地址的端口
查找文件为:`C:\Windows\System32\drivers\etc\services`
面试官有可能会问一些常见服务的端口号,请务必记住
http:80
dns:53
ftp:20、21
dhcp:67、68
telnet:23
ssh:22
### 7.5 网络层(包)
给数据提供远距离传输的机制
提供逻辑地址`IP地址`
ip地址可以让路由器识别数据所属的局域网然后准确的转发。
ip地址相当于信件上的邮编可以让邮局分类然后运到所属地区。
### 7.6 数据链路层(帧)
给提供数据在局域网中传输的机制
提供物理地址`mac地址`
mac地址是在网卡出厂的时候烧录到芯片中的不能被轻易的修改。
mac地址在正规厂家的网卡中是全球独一无二的mac地址是由48位二进制数组成。
mac地址前24位是组织唯一标识符由IEEE分配给各个厂家后24位是厂家自己定义。
为了方便人们记忆我们将mac地址分成6段每段8位二进制然后再转换为16进制。
物理层的数据需要成帧
例:
`ipconfig /all` 可以查看windows的mac地址
`F0-1E-34-11-98-D5`
### 7.7 物理层(位)
定义传输介质的电气标准的
RJ45、RJ11、BNC
LC、SC、SFP
无线wifi6
## 8. 数据的封装与解封装
### 8.1 传输层
由于需要分段和重组,以及端口号区分,所以数据必须携带上这些内容
由于这些信息用于控制数据的传递,并且总是加在报文的头部,所以被称为报头
传输层在分段之后,会在每个数据前面加上控制信息,比如源和目的端口号
### 8.2 网络层
数据想要通过路由器传递到远端的网络就必须要提供目的IP地址为了收到回复还必须提供源IP地址。
### 8.3 数据链路层
当数据到达目的地所在的局域网的交换机上的时候就需要通过mac地址来确认接收的设备网卡
为了收到回复还必须提供源mac地址
![image-20200307112150770](01.网络基础概念/image-20200307112150770.png)
## 9. 分析数据通信
1. 当我们开始访问一个地址的时候由于并不知道怎么去往网关的MAC地址所以使用arp协议发起广播查询MAC地址。
![image-20200307114246371](01.网络基础概念/image-20200307114246371.png)
2. PC查到了网关的MAC地址之后就记录到自己的ARP表中
![image-20200307114341302](01.网络基础概念/image-20200307114341302.png)
3. 然后将数据封装起来封装的时候加上每一层的关键信息比如源和目的端口源和目的IP地址源和目的MAC地址。这边要注意由于我们要去往的目的地是`192.168.3.2`并不是同网段。所以需要借用网关的MAC地址。
![image-20200307114629410](01.网络基础概念/image-20200307114629410.png)
4. 数据从PC发出了之后被交换机收到了交换机通过数据中Dst-MAC地址查找自己的`mac address table`知道应该从哪个接口离开。
![image-20200307115457201](01.网络基础概念/image-20200307115457201.png)
5. 路由器最终收到了这个数据首先查看目的mac地址发现是给自己就解开数据链路层封装查看网络层的Dst-IP地址然后对比自己的路由表查找目的地应该发出的接口
![image-20200307115616522](01.网络基础概念/image-20200307115616522.png)
6. 路由器会在这个数据发出去之前将自己出接口的MAC地址作为源MAC地址将下一跳设备的MAC地址作为目的MAC地址重新封装数据链路层然后发出后面的路由器收到了之后重复5、6两步。
![image-20200307115956116](01.网络基础概念/image-20200307115956116.png)
7. 数据在这种不断的封装解封装数据链路层的过程中到达了目的地最终web服务器收到了这个数据后发现目的MAC地址目的IP地址都是自己并且目的80端口也有进程在监听最终完成请求的过程。
![image-20200307120201468](01.网络基础概念/image-20200307120201468.png)
## 10. ARP(地址解析协议)
### 10.1 ARP地址解析协议
知道目的地的IP地址请求MAC地址的协议
下面是请求的数据
![image-20200307135548122](01.网络基础概念/image-20200307135548122.png)
下面是回复的数据
![image-20200307135644395](01.网络基础概念/image-20200307135644395.png)
请求方拿到回答之后,会将结果记录在`arp表`
![image-20200307135749117](01.网络基础概念/image-20200307135749117.png)
在Cisco的路由器上arp表中条目会有300分钟的寿命300分钟后就会被删除然后重新请求。
### 10.2 代理ARP
路由器**善意的谎言**
1. 当路由器收到一个ARP请求请求的目的地址不是自己的IP但是自己可以去往这个地方
2. 路由器会给请求方一个回复回复的内容中会标注你要去往的IP地址的MAC就是我的MAC地址
3. 然后请求方就把数据发送过来
注意代理ARP并不是所有品牌的路由器都是默认开启的。并且需要路由器查询路由表发现可以去往请求目的地址的时候才会触发。
下图中R1去`ping 192.168.23.3`的时候R2就会替`192.168.23.3`做出arp回应
![image-20200307140807857](01.网络基础概念/image-20200307140807857.png)
![image-20200307140743214](01.网络基础概念/image-20200307140743214.png)
### 10.3 反向ARP
知道自己的MAC地址但是不知道自己的IP发起请求IP
类似的功能,还有一种协议:apipa
常用的场景:
- 无盘工作站
- PXE
------------------
## 11. DoD模型
也叫美国国防部模型,是各种面试喜欢问的模型,我们只要背住就行
![image-20200307144320208](01.网络基础概念/image-20200307144320208.png)
## 12. 传输层
### 12.1 端口号
一个IP地址可以拥有65536个端口号用于区分不同的服务
一般我们认为1023之前的端口号是保留的并且运行众所周知的服务可以查看系统的service文件
在发起通信的时候,正常情况下,源端口号是随机端口号,目的端口号由协议确定
![image-20200307150032747](01.网络基础概念/image-20200307150032747.png)
### 12.2 TCP
![image-20200307144420417](01.网络基础概念/image-20200307144420417.png)
#### 12.2.1 TCP报文结构
![image-20200307144532135](01.网络基础概念/image-20200307144532135.png)
#### 12.2.2 三次握手
![image-20200307144906302](01.网络基础概念/image-20200307144906302.png)
三次握手会导致半开TCP的攻击行为
#### 12.2.3 四次挥手
![image-20200307144932736](01.网络基础概念/image-20200307144932736.png)
#### 12.2.4 TCP有限状态机
http://aaronxu.eagleslab.com/index.php/archives/229.html
#### 12.2.5 序列号与确认号
![image-20200307150615484](01.网络基础概念/image-20200307150615484.png)
在传递数据的时候TCP的序列号会加上传递数据的大小成为下一个收到数据的确认号
而确认号会成为下一个收到数据的序列号
通过这种方式保证每个数据都能有序完整的被对方接收
#### 12.2.6 滑动窗口
主要用于流量控制
http://aaronxu.eagleslab.com/index.php/archives/225.html
### 12.3 UDP
主要用于对数据的准确性没太高要求,以及对延迟低要求较高的场景
比如:QQ、网游、流媒体
## 13. IP编址
IP地址是32位二进制数组成用于标识网络上唯一节点
为了方便人们记忆采用点分十进制比如IP地址是
> 11000000101010000000110000000001
>
> 加上点之后
>
> 11000000.10101000.00001100.00000001
>
> 变成十进制
>
> 192.168.12.1
IP地址32位中主要是网络位和主机位构成类似于手机号码前7位是归属地后面4位是编号
早期的人们为了区分网络位和主机位对IP地址进行分类
A: 1.0.0.0~126.255.255.255 如果是这个段的前8位是网络位
B: 128.0.0.0~191.255.255.255 如果是这个段的前16位是网络位
C: 192.0.0.0~223.255.255.255 如果是这个段的前24位是网络位
这样划分IP地址之后网络位就可以被区分了但是整个IP地址只有三档。
随着网络的发展很多公司内部节点的数量给个C类的地址主机编号不够分给个B类的地址浪费。
后期人们保留ABC类的称呼但是不再以此作为网络位数的判断因为出现了子网掩码
### 13.1 子网掩码
子网掩码有32位二进制和IP地址二进制位数一样的并且可以和IP地址的二进制一一对应
我们规定子网掩码位是1说明对应的IP位就是网络位
根据和之前旧的ABC类区分的方式对比出现了VLSM(可变长子网掩码)、CIDR(地址聚合)
实例:
> VLSM192.168.1.193 255.255.255.128 可以记作 192.168.1.193/25
>
> CIDR: 192.168.1.1 255.255.0.0 可以记作192.168.1.1/16
### 13.2 广播地址与网络编号
为了方便对局域网的管理,由于需要发广播,或者对整个局域网进行统一称呼,出现了广播地址和网络编号
一个IP地址的主机位全为1那么这个地址就是广播地址。(这边说的是三层的广播地址全是ffff的那个是二层广播)。
一个IP地址的主机位全为0那么这个地址就是网络编号被用来对整个局域网统一称呼。
广播地址和网络编号都是保留的,不能分配给主机使用。
> 请问下列哪个IP地址可以被主机使用
>
> A:172.16.1.128/30 网络编号
>
> B:172.16.1.129/30
>
> C:172.16.1.130/30
>
> D:172.16.1.131/30 广播
### 13.3 私有IP地址
所有的IP地址都是由iana.org分配的但是IPv4地址早就被分配光了
所以规定了私有Ip地址可以再内网使用但是不能与公网通信。
> A: 10.0.0.0~10.255.255.255 /8
>
> B:172.16.0.0~172.31.255.255 /12
>
> C:192.168.0.0~192.168.255.255 /16
当前几乎所有的企业或者家庭内网都是使用NAT(地址转换)来实现上公网的功能。