我是dream,我在新课培训学习网安方面的知识,下面是我的第10次上课的内容。
目录
01 计算机网络
1.1 网络通信的要素
- 网络终端之间通信有五个要素:
发送者、接收者、介质、数据、协议
- 通信是双向的。主机A要发数据给主机B,主机B也要回复。
网络通信三要素: IP地址(互联网协议地址)、端口、协议
IP地址(互联网协议地址)
- 公网地址,私有地址(局域网内使用)
- 192.168.0.0---192.168.255.255(常见的局域网)
- 查看ip地址的命令:
01 windows操作系统:
- ipconfig (windows查看本机ip的地址)
- MAC(物理地址)ipconfig /all
MAC地址用于网络中唯一标识一个网卡,如果一台设备由一个或者多个网卡,则每个 网卡都需要并会拥有唯一的一个MAC地址。
3. tracert ip
02 linux操作系统
- ifconfig (linux查看主机ip)
- ping IP:检测网络是否互通
- traceroute ip
端口
- 因为我们的端口数是由两个字节(byte)组成的,每个字节8位,16位,2的16次方(65536-1)
- 标识正在计算机设备上运行的进程(程序),被规定为一个16位的二进制,范围是0~65535。
- 端口类型
- 周知端口:0~1023,被预先定义的知名应用占用(如:HTTP占用80,FTP占用21)
- 注册端口:1024~49151,分配给用户进程或某些应用程序。(如:Tomcat占用8080,MySQL占用3306)
- 动态端口:49152到65535,之所以称为动态端口,是因为它一般不固定分配某种进程,而是动态分配。
协议
数据在网络中传输的规则,常见的协议有UDP协议和TCP协议。
UDP(用户数据包协议)用户数据包协议特点:
1、UDP是一种无连接、不可靠传输的协议。
2、将数据源IP、目的地IP和端口封装成数据包,不需要建立连接
3、每个数据包的大小限制在64KB内
4、发送不管对方是否准备好,接收方收到也不确认,故是不可靠的
5、可以广播发送,发送数据结束时无需释放资源,开销小,速度快。
6、UDP协议应用场景:语音通话,视频会话等。
TCP(传输控制协议)传输控制协议的特点:
1、使用TCP协议,必须双方先建立连接,它是一种面向连接的可靠通信协议。
2、传输前,采用三次握手”方式建立连接,所以是可靠的SYN表示请求同步,ACK表示应答,seq序列号
3、在连接中可进行大数据量的传输。
4、连接、发送数据都需要确认,且传输完毕后,还需释放已建立的连接,通信效率较低。
TCP协议应用场景:
对信息安全要求较高的场景,例如:文件下载、金融等数据通信。
1.2 网络架构
网络通信的发展:
1. 简单网络:点对点连接
2. 二层网络:
- 星型拓扑;
- 交换机:广域交换机+局域网交换机,集线器
3. 三层网络:
- 树状拓扑
- 路由器:跨网段通信
- 三层交换机和二层交换机的区别:二层交换机划分局域网络和作为集线器,三层交换机还可以进行路由转发。
简单网络(直连网络)
两个终端,用一条能承载数据传输的物理介质(也称为传输介质)连接起来,就组成了一个最简单的网络。
简单二层网络
简单的三层网络
比如主机A想要和主机D通信,它们在不同的局域网,所以需要主机A通过路由器找到主机D 的端口,然后通信。
企业网络基本构架
二层交换机相当于集线器,可以连接多台终端。
汇聚层:做流量转发,制定策略
核心层:服务器一般挂在核心层,会放路由器。
1.3 计算机网络概念
- 利用通信线路和设备,将分散在不同地点、具有独立功能的多个计算机系统互连起来,按网络协议互相通信,在功能完善的网络软件控制下实现网络资源共享和信息交换的系统。
网络是现代通信技术与计算机技术结合的产物。
- 简单的来说就是:一些互相连接的、自治的计算机的结合。
02 OSI七层模型
也叫OSI参考模型,它只是个参考,在现实生活中并未实施。
2.1 分层模型-OSI
5-7层,重点在于APP的开发
1-4层,重点在网络通信
OSI七层参考模型:应表会传网数物理
应用层 | 面向用户:比如QQ、微信等社交软件,以及上面的图片、视频、文字等都是应用层的数据 |
表示层 | 使用计算机编码,把应用层的图片、文字、声音用计算机编码的形式表示出来,比如加后缀JPG、MP4、TXT等 |
会话层 | 两个应用是否能对接。原则上所有的应用软件都可以互通,但由于竞争,人为禁止互通,比如阿里系的软件和腾讯的软件就不能互通。 |
传输层 | 端到端的通信;连接和管理流量控制。涉及到两个协议:TCP、 UDP(语音通话,视频通话),给数据包打端口号 |
网络层 | 给数据包打上IP地址。(相当于填写快递地址) |
数据链路层 | 交换机把数据包发送给接收人。(相当于快递小哥) |
物理层 | 用物理信号表示数据。(比如网线是八根小线组成,WiFi电磁波是2.4G,这些是IEEE来制定的标准) |
2.2 分层模型-TCP/IP(落地模型)
应用层:提供应用
TCP/IP模型的核心在:传输层、网络层
网络接口层:提供接口
TCP/IP模型概况
01 网络层:解决网络之间的逻辑转发问题,路由和寻址
arp(地址解析协议):根据IP地址获取物理地址(MAC)
- arp协议是建立在网络中各个主机互相信任的基础上——ARP欺骗
- rarp(反向地址转换协议)
02 传输层:保证源端到目的端之间的可靠传输(TCP/UDP)
03 应用层:通过客种协议向终端用户提供业务应用
04 网络接口层:提供接口
数据链路层
01 封装成帧:把网络层数据报加头和尾,封装成帧,帧中包括源MAC地址(S.MAC-source) 和目的 MAC 地址 (D.MAC一destination)
02 帧的三种发送方式
- 单播:点对点的通信,数据从一个发送者传输到一个明确的接收者。
- 广播:广播的帧的目的MAC地址为十六进制的FF:FF:FF:FF:FF:FF,一对所有,数据从一个发送者传输到网络中的所有设备。会导致带宽利用率降低,进而影响整个网络的性能
- 组播:选择性的广播,发送者将数据发送到一个特殊的组播地址,一对多通信,数据从一个发送者传输到一个接收者组。
●OSI 7层参考模型(应用层、表示层、会话层、传输层、网络层、数据链路层、物理层)
●TCP/IP四层(应用层、传输层、网络层、网络接口层)●各层网络设备
01 物理层:(中继器,集线器,网线,光纤)
02 数据链路层:(网桥,二层交换机)
03 网络层:(路由器,三层交换机)
- ARP(将ip地址解析成MAC,IP-----》MAC)(网络层)
- RARP (将物理地址MAC--->RARP服务器--->IP地址(网络层)
- DNS(域名解析,域名-----》IP地址)(应用层)
2.2.1 TCP/IP模型涉及协议
1. 应用层
协议 | 端口 | 作用 |
telnet | 23 | 用于远程登录 |
ftp | 20/21 | 用于文件传输 |
smtp | 25 | 用于电子邮件传输 |
http | 80 | 用于web浏览 |
https | 443 | 加密的web浏览 |
dns | 53 | 用于域名解析 |
2. 传输层
UDP(用户数据包协议)用户数据包协议特点:
1、UDP是一种无连接、不可靠传输的协议。
2、将数据源IP、目的地IP和端口封装成数据包,不需要建立连接
3、每个数据包的大小限制在64KB内
4、发送不管对方是否准备好,接收方收到也不确认,故是不可靠的
5、可以广播发送,发送数据结束时无需释放资源,开销小,速度快。
UDP协议应用场景:语音通话,视频会话等。
TCP(传输控制协议)传输控制协议的特点:
1、使用TCP协议,必须双方先建立连接,它是一种面向连接的可靠通信协议。
2、传输前,采用三次握手”方式建立连接,所以是可靠的SYN表示请求同步,ACK表示应答,seq序列号
3、在连接中可进行大数据量的传输。
4、连接、发送数据都需要确认,且传输完毕后,还需释放已建立的连接,通信效率较低。
TCP协议应用场景:
对信息安全要求较高的场景,例如:文件下载、金融等数据通信。
3. 网络层
ICMP | 控制报文协议:报告错误,交换机受限制等。 ping的时候,会发送ICMP的请求 |
IP | (路由器,三层交换机) |
ARP | 地址解析协议 |
RARP | 反向地址转换协议 |
ARP(地址解析协议)
根据IP---->ARP---->物理地址(MAC)
地址解析协议是建立在网络中各个主机互相信任的基础上的,局域网络上的主机可以自主发送ARP应答消息,其他主机收到应答报文时不会检测该报文的真实性就会将其记入本机ARP缓存:由此攻击者就可以向某一主机发送伪ARP应答报文,使其发送的信息无法到达预期的主机或到达错误的主机,这就构成了一个ARP欺骗。
RARP(反向地址转换协议)--rarp服务器
假如一个设备不知道它自己的IP地址,但是知道自己的物理地址。
物理地址--->RARP--->IP地址
2.2.2 数据封装
从上往下传输,每一层都会加一个报头,再传给下一层,最后添加报头报尾,转化为一个bit(帧)。这个过程被称作“数据封装”。
数据封装:
- 应用层接收数据——协议数据单元(PDU)
- 传输层:添加TCP报头——数据段(Segment)
- 网络层:添加IP报头——数据包(Packet)
- 网络接口层:封装数据链路层报头——数据帧(Frame),把帧转为比特
03 TCP/IP模型详解
3.1 数据链路层
数据链路层功能:向该层用户提供透明的和可靠的数据传送服务。
1、透明性是指该层上传输的数据的内容、格式及编码没有限制,也没有必要解释信息结构的意义;可靠的传输使用户免去对丢失信息、干扰信息及顺序不正确等的担心。
2、在物理层中这些情况都可能发生,在数据链路层中必须用纠错码来检错与纠错。
以太网帧格式
Ethernet_ll 帧格式
- Ethernet_II帧类型值大于等于1536(0x0600)
- 以太网数据顿的长度在64-1518字节之间。
- 高层协议,以0x开头的都是16进制
以太网的MAC地址(网络设备以物理地址来标识自己)
- MAC地址由两部分组成,分别是供应商代码和序列号。其中前24位代表该供应商代码(唯一标识符),由IEEE管理和分配。剩下的24位序列号由厂商自己分配。
- https://mac.bmcx.com/
局域网上的帧可以通过三种方式发送:
1. 单播
从单一的源端,发到唯一的目的端。
如果第八个bit位固定为0(即第一个字节的第八个bit,表示Mac地址),那这就是一个单播地址。
检测这个Mac地址是否一致,不一致会丢失这个帧,不会进行处理。
2. 广播
从单一的源端,共享到网络中的所有主机。
缺点:产生大量的流量,导致带宽的利用率降低,进而影响到网络的性能。导致网络瘫痪。
3. 组播
选择性的广播
- 第八个bit位固定为1,那这就是一个组播地址。
- 主机可以建立一个组播地址,传输帧给特定的组播地址。
- 组播比广播更高效。
数据帧传输(基于MAC地址的传输)
数据链路基于MAC进行帧的传输
数据帧的发送与接收
当主机接收到的数据顿所包含的MAC地址是自己时,会把以太网封装剥掉后送往上层协议。
数据的发送和接收
- 应用层:PDU:协议数据单元(protocol data unit)
- 传输层:数据段(segment)
- 网络层:数据包(packet)
- 网络接口层:数据 (frame)
- 发数据-封装自上而下 收数据-解封装自下而上
- 在冲实域中,所有主机都能收到源主机发送的单播帧
小结:
网络设备如何确定以太网数据帧的上层协议?
以太网帧中包含一个Type字段,表示帧中的数据应该发送到上层哪个协议处理。
比如Type值为0x0800,则它对应的上层协议是IP协议。
如果Type值是0x0806,则对应ARP协议。
终端设备接收到数据帧时,会如何处理?
首先,主机检查MAC地址是不是自己的,如果目的MAC地址不是本机MAC地址,也不是本机侦听的组播或广播MAC地址,则主机会丢弃收到的帧。
如果目的MAC地址是本机MAC地址,则接收该帧,检查帧校验序列(FCS)字段,并与本机计算的值对比来确定帧在传输过程中是否保持了完整性。如果检查通过,就会剥离帧头和帧尾,然后根据帧头中的Type字段来决定把数据发送到哪个上层协议进行后续处理。
3.2 网络层
网络层位于数据链路层与传输层之间。网络层中包许多协议,其中最为重要的协议就是IP协议。网络层提供了IP路由功能(IP寻址和路由选择)。理解IP路由除了要熟悉IP协议的工作机制之外,还必须理解IP编址以及如何合理地使用IP地址来设计网络。
上层协议类型
以太网帧中的Type字段值为0x0800,表示该帧的网络层协议为IP协议。
IP报文头部
- 头部长度:为20-60个字节(B)
- 生存时间:用TTL来判断是Windows还是Linux。为了防止环路造成的网络堵塞,所以有了生存时间(TTL)。每经过一个三层设备,TTL值减1.
- 当TTL为0的时候,意味着一直找不到目的地址,意味着报文会被丢弃。
生存时间
●TTL(time to live)
报文在网段间转发时,如果网络设备上的路由规划不合理,就可能会出现环路,导致报文在网络中无限循环,无法到达目的端。环路发生后,所有发往这个自的地的报文都会被循环转发,随看这种报文逐渐增多,网络将会发生拥塞。为避免环路导致的网络拥塞,IP报文头中包含一个生存时间TTL(Time To Live)字段。报文每经过一台三层设备,TTL值减1。初始TTL值由源端设备设置。当报文中的TTL降为0时,报文会被丢弃。同时,丢弃报文的设备会根据报文头中的源IP地址向源端发送ICMP错误消息。
默认情况下,Linux系统的TTL值为64或255,Windows NT/2000/XP系统的TTL值为128。WindoWS 98系统的TTL值为32,UNIX主机的TTL值为255,当数据包传送到一个路由器之后,TTL就自动减1,所以:111=系统TTL默认值-经过的路由个数。111=128-经过的路由个数(17)●同网段不过路由,不同网段需要路由
网络通信
必须知道目的IP地址才能把信息传过去。
1. 检查目的IP和源IP是否在同一个网段(即前三个网络位相同)。同一个网段才能传输报文。
2. 上图中,主机A和主机C在同一个网段,主机B和主机D在同一个网段。
IP编址
● IP地址分为网络部分和主机部分。(上面是十进制,下面是二进制)
● IP地址由32个二进制位组成,通常用点分十进制形式表示。
●主机位的范围:0-255
●IP=网络位+主机位
- 全0(网络地址)全1(广播地址)
- ip地址=网络位+主机位
- 子网掩码=网络位+主机位
- 192.168.1.0/24
- 后面8个0可用主机位:2**8=256-2=254
- ip地址和掩码相乘=网络地址(二进制的相乘)
- 缺省子网掩码:导致地址使用率过低
- 可变长子网掩码:2**7=128-2=126
- ●计算主机数
- IP地址的二进制表示:32位
- n是主机位
- 主机数:2^n
- 可用主机数:2^n-2(网络地址和广播地址)
- 30台主机:主机位为n位,也就是要2^n-2>=30,算出来
- 最近就的n的值为5,2^5-2=30
- 网络位:27
- 也就是子网掩码后五位为主机位,前面27位全置为1,划分到网络位:11111111.11111111.11111111.11100000
- 192.168.1.0/27
- 255.255.255.224 子网掩码
两个特殊地址:
主机位全为0的网络地址
主机位全为1的广播地址
这两个地址是不能分配给主机或者网络设备的。
可用子网数一般是要减去上面的两个特殊地址的(头尾去掉,就是可用的IP地址)。
二进制、十进制和十六进制
在IP网络中,二进制和十六进制是常用的编码方式。
十六进制:10-15 用A-F来表示。
进制之间的转换
可以使用工具来辅助计算
二进制1000转十进制:从右往左来算:
十进制8转二进制:用8来进行短除法,除2,每除一次,除得尽,右边写一个0,直到余数为1.
二进制和十进制的转换
每一个二进制表示的十进制数都是8位,一共4*8=32位。
IP地址类型
127.0.0.1:本机地址
子网掩码
默认子网掩码
A类地址范围:1.0.0.0-126.0.0.0
B类地址范围:128.0.0.0-191.255.0.0
C类地址范围:192.0.0.0-223.255.255.0
地址规划
子网掩码是24位,是C类地址。(为什么不是32为呢?主机位是0的缘故吗?)
网段:192.168.1.0/24 (24是子网掩码的位数)
子网掩码是24位,还剩下8位是主机位,主机数 256
可用主机数:(这里减去的是主机位全0或全1的网络地址和广播地址,这两个地址不会分配给主机)
有类IP编址的缺陷
在设计网络时使用有类IP地址会造成地址的浪费。
比如一个公司只有几十台电脑,但是分配2^8-2=254个主机位IP,那么很多IP就浪费了。
于是出现了下面的形式。
变长子网掩码
假设有30台主机,那么要保证计算出来的主机数大于等于30.
得出主机位n的最小值 n = 5。
即主机位:5位
主机数:
网络位:IP地址是32位,32 - 5 = 27 ,即,网络位为27位。
子网掩码:11111111.11111111.11111111.111 00000 (前面是24位,再划三位过去,凑成27位)
转化为十进制为: 255.255.255.224
IP地址范围:192.168.1.0-192.168.1.31 (包含全0全1 ,
)
可用IP地址范围:192.168.1.1-192.168.1.30
现有一个C类网络地址段192.168.1.0/24,请使用变长子网掩码给三人子网分别分配P地址。
192.168.1.0-192.168.1.31,32-63, 64-95
网关
网关用来转发来自不同网段之间的数据包。
小结
子网掩码的作用是什么?
用来区分IP地址的网络位和主机位的。
32位的IP子网掩码用于区分IP地址中的网络号和主机号。网络号表示网络或子网,主机号表示网络或子网中的主机。用于划分IP地址,将其分成网络部分和主机部分。子网掩码的作用是帮助识别一个IP地址中哪些位属于网络部分,哪些位属于主机部分。
IP报文头部中TTL字段的作用是什么?
保证无法达到目的端的报文丢弃。用来控制数据包在网络中的存活时间。
如果网络中存在环路,则IP报文可能会在网络中循环而无法到达目的端。TTL字段限定了IP报文的生存时间,保证无法到达目的端的报文最终被丢弃。TTL(Time to Live)字段是IP报文头部中的一字段,用于控制数据包在网络中的生存时间。TTL字段的作用是防止数据包在网络中无限制地循环传输,以及帮助保障网络的正常运行和数据包的有效传递。
3.3 传输层
传输层定义了主机应用程序之间端到端的连通性。传输层中最为常见的两个协议分别是传输控制协议TCP(Transmission Control Protocol)和用户数据包协议UDP (User Datagram Protocol) 。
传输层协议
- 基于TCP的协议: ftp、http、telnet、smtp......
- 基于UDP的协议: DNS、DHCP、TFTP、SNMP.....
控制标志
- URG:表示紧急指针是否有效
- ACK:表示确认号是否有效,确认报文段
- PSH:提示接收端的应用程序应该立即从tcp接受缓冲区中读取数据,以便为后面接受后数据腾出位置
- RST:表示要求对方重新建立连接,复位报文段
- SYN:表示请求建立一个连接,同步报文段
- FIN:通知对方本端要关闭了,结束报文段
面向连接
先建立一个连接,再传输,基于TCP协议。
面向无连接
不需要建立接连,基于UDP协议。
TCP
TCP是一种面向连接的传输层协议,提供可靠的传输服务。
TCP端口号
端口号用来区分不同的网络服务。
FTP: 21 文件传输协议
HTTP: 80 超文本传输协议 (HTTPS 443)
Telnet:23 远程登录协议
SMTP: 25 邮件传输协议
以上协议都基于TCP的协议
端口类型
- 周知端口:0~1023,被预先定义的知名应用占用
- 注册端口:1024~49151,分配给用户进程或某些应用程序。
- 动态端口:49152~65535,一般不固定分配某种进程,而是动态分配。
TCP头部
控制标志
- URG:表示紧急指针是否有效
- ACK:表示确认号是否有效,确认报文段
- PSH:提示接收端的应用程序应该立即从tcp接受缓冲区中读取数据,以便为后面接受后数据腾出位置
- RST:表示要求对方重新建立连接,复位报文段
- SYN:表示请求建立一个连接,同步报文段
- FIN:通知对方本端要关闭了,结束报文段
TCP建立连接的过程(三次握手)
TCP通过三次握手建立可靠连接。
主机A 要和服务器A建立可靠连接:
1. 第一次:主机A(通常也称为客户端) 向服务器A 发送一个标识了SYN的数据段,表示期望与服务器A建立一个连接,此数据段的序列号为a(seq=a)(a为一个具体的数值)
2. 第二次:服务器A回复标识了SYN+ACK(表示确认号是否有效)的数据段,此数据段的序列号设置为b(seq=b),确认序列号为主机A的序列号加1,即a+1(ack=a+1)
3. 第三次:主机A收到服务器A的回复后,向服务器A发送一个标识了ACK的数据段,此数据段的序列号再加1(在主机A发送的序列号的基础上加1),为a+1(seq=a+1),确认序列号为服务器A的序列号+1,为b+1,以此作为对服务器A的SYN报文段的确认。
TCP关闭连接(四次挥手)
主机在关闭连接之前,要确认收到来自对方的ACK.
主机A和服务器A各自向对方发送终止连接的请求(FIN,ACK),收到终止请求后,两者都要回复确认对方的终止请求(ACK)
seq 序列号,ack 确认序列号
- 第一次挥手:主机A想终止连接,于是发送一个标识了FIN,ACK的数据段,序列号为a,确认序列号为b。
- 第二次挥手:服务器A回应一个标识了ACK的数据段,序列号为b,确认序号为a+1,作为对主机A的FIN报文的确认。
- 第三次挥手:服务器A想终止连接,于是向主机A发送一个标识了FIN,ACK的数据段,序列号为b,确认序列号为a+1。
- 第四次挥手:主机A回应一小标识了ACK的数据段,序列号为a+1,确认序号为b+1,作为对服务器A的FIN报文的确认。以上四次交互便完成了两个方向连接的关闭。
WireShark抓包过滤命令
一、针对IP地址过滤
1. 源地址: ip.src == 192.168...
2. 目的地址: ip.dst == 192.168...
3. 不看源或目的地址: ip. addr == 192.168...
二、针对协议过滤
1. 某种协议的数据包 直接输入协议名字
如: http tcp(输入tcp会出现http,因为http是基于tcp的协议)
2.排除桌种协议
not tcp ! tcp
三、针对端口过滤
1.捕获某端口的数据包
tcp.port == 80 tcp.srcport == 80 tcp.dstport == 80
2.捕获多端口
udp.port >=2048
四、针对长度和内容过滤
1.长度过滤
udp.lenth < 30 data.len > 0 http.content_lenth <= 20
2.数据包内容过滤
http.request.uri matches "vipscu"(匹配http请求中含有vipscu字段的请求信息)
UDP
UDP是一种面向无连接的传输层协议,传输可靠性没有保证(可能收到重复的数据,也可能收不到,是乱序的)。
UDP头部
UDP头部仅占8字节(比TCP头部简单很多,TCP有32个字节),传输数据时没有确认机制(TCP有序列号seq和确认序列号ack)。
UDP传输过程
使用UDP传输数据时,由应用程序根据需要提供报文到达确认、排序、流量控制等功能。(每个数据包都是独立在网络中发送的,不同的数据包可能会通过不同的网络路径到达主机B。UDP的数据包是没有序号的,所以主机B不能按照主机A发送数据包的顺序来组合这些数据包,类似于收快递。)
使用UDP协议直播的时候出现卡顿(丢包),TCP协议如果丢包,文件就会损坏,打开不了。
UDP传输过程
- UDP不提供重传机制,占用资源小,处理效率高。
- 一些时延敏感的流量,如语音、视频等,通常使用UDP作为传输层协议。
小结
TCP头部中的确认标识位有什么作用?
ACK:用于目的端对已经收到的报文进行确认。 假如目的端接收到的序列号为ack序列号为a,那么目的端就会用ack(确认序列号): a+1来应答。
TCP头部中有哪些标识位参与TCP三次握手?
SYN(同步报文段)、ACK(确认报文段)【类似于:你收到快递了吗?收到了。】
感谢Kiki老师,课程同步在享学微信公众号上,关注公众号,自动回复获取代码笔记资料。