赞
踩
OSI参考模型,具有7层结构
物理层定义了接口标准、线缆标准、传输速率、传输方式等
模拟信号:
连续的信号,适合长距离传输
抗干扰能力差,受到干扰时波形变形很难纠正
数字信号:
离散的信号(不连续),不适合长距离传输
抗干扰能力强,受到干扰时波形失真可以修复
注意:网线不能超过100米
信道:信息传输的通道上,一条传输介质上(如网线)可以有很多条信道
信号只能往一个方向传输,任何时候都不能改变信号的传输方向
如:无线电广播、有线电视广播
信号可以双向传输,但是必须交替进行,同一时间只能往一个方向传输
如:对讲机
信号可以同时双向传输
如:手机(打电话,听说同时进行)
链路:从1个节点到相邻节点的一端物理线路(有线/无线),中间没有其他交换节点
计算机0到路由器0算一条链路
数据链路:在一条连路上传输数据时,需要有对应的通信协议来控制数据的传输
不同类型的数据链路,所用的通信协议可能是不同的
广播信道:CSMA/CD协议(如:同轴电缆、集线器等组成的网络)
点对点信道:PPP协议(如:2个路由器之间的信道)
数据链路层的3个基本问题:
封装成帧
透明传输
差错检验
帧(Frame)的数据部分:
就是网络层传递下来的数据包(IP数据包,Packet)
最大传输单元MTU(Maximum Transfer Unit)
每一种数据链路层协议都规定了所能够传送的帧的数据长度上限
以太网的MTU为1500个字节
使用SOH(Start Of Header)作为帧开始符
使用EOT(End Of Transmission)作为帧结束符
数据部分一旦出现了SOH、EOT,就需要进行转义
FCS是根据数据部分 + 首部计算得出–用来作差错检验,与下一层计算出的数据进行比较
使用了CSMA/CD的网络可以成为是以太网,它传输的是以太网帧
以太网帧的格式有:Ethernet V2标准、IEEE的802.3标准
使用最多的是:Ethernet V2标准
为了能够检测正在发送的帧是否产生了冲突,以太网的帧至少要64字节
用交换机组件的网络,已经支持全双工通信,不需要再使用CSMA/CD,但它传输的帧已然是以太网帧
所以,用交换机组件的网络,已然可以叫做以太网
首部:源MAC +目标MAC +网络类型
以太网帧:首部 + 数据 + FCS
数据的长度至少是:64 - 6 - 6 - 2 - 4 = 46字节
当数据部分的长度小于46字节时:
数据链路层会在数据后面加一些字节填充
接收端会将添加的字节去掉
长度总结:
以太网帧的数据长度:46 ~ 1500字节(源MAC + 目标MAC + 网络类型 + 数据 + FCS)
网卡工作在数据链路层和物理层之间
网卡接收到一个帧,首先会进行差错校验,如果校验通过,则接收,否则丢弃
Wireshark抓到的帧没有FCS,因为它抓到的是差错校验通过的帧(帧尾的FCS会被硬件去掉)
Wireshark抓不到差错校验失败的帧
网络层数据包(IP数据包,Packet)由首部、数据两部分组成
数据:很多时候是由传输层传递下来的数据段(Segment)
网络层首部总长度:占16位,首部 + 数据的长度之和,对大致是65535
由于帧的数据不能超过1500字节,所以过大的IP数据包,需要分成片(fragments)传输给数据链路层
每一片都有自己的网络层首部(IP首部)
ping /?
查看ping的用法
ping ip地址 -l 数据包大小
发送指定大小的数据包
ping ip地址
不允许网络层分片
ping ip地址 -i TTL
设置TTL的值
通过tracert、pathping命令,可以跟踪数据包经过了哪些路由器
协议(Protocol)
占8位
表明所封装的数据是使用了什么协议
首部校验和(Header Checksum)
用于检查首部是否有错误
生存时间(Time To Live,TTL)
占8位
每个路由器在转发之前会将TTL减1,一旦发现TTL减为0,路由器会返回错误报告
观察使用ping命令后的TTL,能够推测出对方的操作系统,中间经过了多少个路由器
传输层有2个协议:
TCP,传输控制协议
UDP,用户数据报协议
UDP应用于实时场景
详见博客:
https://blog.csdn.net/weixin_44116098/article/details/117675992
超文本传输:HTTP、HTTPS
文件传输:FTP
电子邮件:SMTP、POP3、IMAP
动态主机配置:DHCP
域名系统:DNS
由于IP地址不方便记忆,并且不能表达组织的名称和性质,人们设计出了域名(如:baidu.com)
但实际上,为了能够访问到具体的主机,最终还是得知道目标主机的IP地址
域名申请注册:https://wanwang.aliyun.com/
那是否可以全程直接使用域名,不用IP地址?
IP地址固定4个字节,域名随随便便都至少10几个字节,这无疑会增加路由器的负担,浪费流量
根据级别不同,域名可以分为:
顶级域名(TLD)
二级域名
三级域名
通用顶级域名(gTLD)
.com(公司),.net(网络机构),.org(组织机构),.edu(教育)
.gov(政府部门),.int(国际组织)
国家及地区顶级域名(ccTLD)
.cn(中国),.jp(日本),.uk(英国)
新通用顶级域名(New gTLD)
.vip,.xyz,.top,.club,.shop等
二级域名指顶级域名之下的域名
在通用顶级域名下,它一般指域名注册人的名称,如:google、baidu、microsoft等
在国家及地区顶级域名下,它一般指注册类别的,如:com、edu、gov、net等
利用DNS协议,可以将域名(如baidu.com)解析成对应的IP地址(如220.181.38.148)
DNS可以基于UDP协议,也可以基于TCP协议,服务器占用53端口
ipcofig/displaydns:查看DNS缓存记录
ipconfig/flushdns:清空DNS缓存记录
ipconfig/all:可以看到DHCP相关的详细信息,如:租约过期时间、DHCP服务器地址等
ping 域名
nslookup 域名
客户端首先会访问最近的一台DNS服务器(也就是客户端自己配置的DNS服务器)
所有的DNS服务器都记录了DNS根域名服务器的IP地址
上机DNS服务器记录了下一级DNS服务器的IP地址
全球一共13台IPv4的DNS根域名服务器、25台IPv6的DNS根域名服务器
DHCP协议基于UDP协议,客户端是68端口,服务器是67端口
DHCP服务器会从IP地址池中,挑选一个IP地址“出租”给客户端一段时间,时间到期就回收它们
平时家里上网的路由器就可以充当DHCP服务器
DISCOVER:发现服务器
发广播包(源IP是0.0.0.0,目标IP是255.255.255.255,目标MAC是FF:FF:FF:FF:FF:FF)
OFFER:提供租约
服务器返回可以租用的IP地址,以及租用期限、子网掩码、网关、DNS等信息
注:这里可能会有多个服务器提供租约
REQUEST:选择IP地址
客户端选择一个OFFER,发送广播包进行回应
ACKNOWLEDGE:确认
被选中的服务器发送ACK数据包给客户端
至此,IP地址分配完毕
Discover阶段的数据包:
offer阶段的数据包:
Request阶段的数据包:
ACK阶段的数据包:
DHCP服务器可以跨网段分配IP地址吗?(DHCP服务器、客户端不在同一个网段)
可以借助DHCP中继代理(DHCP Relay Agent)实现跨网段分配IP地址
自动续约
客户端会在租期不足时,自动向DHCP服务器发送REQUEST信息申请续约
常用命令:
ipconfig/all:可以看到DHCP相关的详细信息,如租约过期时间、DHCP服务器地址等
ipconfig/release:释放租约
ipconfig/renew:重新申请IP地址、申请续约(延长租期)
详见博客:
https://blog.csdn.net/weixin_44116098/article/details/117675992
截获:窃听通信内容
中断:中断网络通信
篡改:篡改通信内容
伪造:伪造通信内容
ARP欺骗,又称ARP毒化、ARP病毒、ARP攻击
ARP欺骗可以造成的效果:
可以让攻击者获取局域网上的数据包甚至可以篡改数据包
可以让网络上特定电脑之间无法正常通信(如“网络执法官”这样的软件)
让送至特定IP地址的流量被错误送到攻击者所取代的地方
静态ARP
DHCP Snooping:
网络设备可借由DHCP保留网络上各电脑的MAC地址,在伪造的ARP数据包发出时即可侦测到
利用一些软件监听ARP的不正常变动
DoS:
使目标电脑的网络或系统资源耗尽,使扶我暂时中断或停止,导致其正常用户无法访问
DDoS:
黑客使用网络上两个或以上被攻陷的电脑作为“僵尸”向特定的目标发送DoS攻击
DoS攻击可以分为2大类:
带宽消耗型:UDP洪水攻击、ICMP洪水攻击
资源消耗型:SYN洪水攻击、LAND攻击
SYN洪水攻击:
攻击者发送一系列的SYN请求到目标,然后让目标因收不到ACK(第3次握手)而进行等待、消耗资源
攻击方法:
跳过发送最后的ACK信息
修改源IP地址,让目标送SYN-ACK到伪造的IP地址,因此目标永不可能收到ACK(第3次握手)
防护
参考:RFC 4987
通过持续发送相同源地址和目标地址的欺骗数据包,使目标视图与自己建立连接,小号系统资源直至崩溃
有些系统存在设计上的缺陷,允许设备接受并响应来自网络,却宣称来自于设备自身的数据包,导致循环应答
防护:
大多数防火墙都能拦截类似的攻击包,以保护系统
部分操作系统通过发布安全补丁修复了这一漏洞
路由器应同时配置上行与下行筛选器,屏蔽所有源地址与目标地址相同的数据包
防御方式通常为:入侵检测、流量监测、多重验证
堵塞网络带宽的流量将被过滤,而正常的流量可正常通过
防火墙:
防火墙可以设置规则,如,允许或拒绝特定通讯协议、端口或IP地址
当攻击从少数不正常的IP地址发出时,可以简单的使用拒绝规则组织一切从攻击源IP发出的通信
复杂攻击难以用简单规则来阻止,如,80端口遭受攻击时不可能拒绝端口所有的通信,因为同时会阻止合法流量
防火墙可能处于网络架构中过后的位置,路由器可能在恶意流量达到防火墙前即被攻击影响
交换机:大多数交换机有一定的速度限制和访问控制能力
路由器:和交换机类似,路由器也有一定的速度限制和访问控制能力
黑洞引导:
将所有受攻击计算机的通信全部发送至一个“黑洞”(空接口或不存在的计算机地址)或者有足够能力处理洪流的网络设备商,以避免网络受到较大影响
流量清洗:
当流量被送到DDoS防护清洗中心时,通过采用抗DDoS软件处理,将正常流量和恶意流量区分开
正常的流量则回注客户网站
攻击者篡改了某个域名的解析结果,使得指向该域名的IP变成了另一个IP
导致对相应网址的访问被劫持到另一个不可达的或者假冒的网址
从而实现非法窃取用户信息或者破坏正常网络服务的目的
HTTP劫持:对HTTP数据包进行拦截处理,如,插入JS代码
HTTP协议默认采用明文传输,因此会有很大的安全隐患
常见的提高安全性的方法是:对通信内容进行加密后,在进行传输
常见的加密方式:
不可逆
单向散列函数:MDS、SHA等
可逆
对称加密(对称密码):DES、3DES、AES等–简单–>不安全–>加密解密速度快
非对称加密(公钥密码):RSA等–复杂–>安全–>加密解密速度慢
其它
混合密码系统
数字签名
证书
encrypt:加密
decrypt:解密
plaintext:明文
ciphertext:密文
设计4个虚拟人物
Alice、Bob:互相通信
Eve:窃听者
Mallory:主动攻击者
如何防止被窃听?
单向散列函数,可以根据消息内容计算出散列值
散列值的长度和消息的长度无关,无论消息是1bit、10M、100G,单向散列函数都会计算出固定长度的散列值
特点:
根据任意长度的消息,计算出固定长度的散列值
计算速度快,能快速计算出散列值
消息不同,散列值也不同
具备单向性(不可逆)
单向散列函数–别称:
消息摘要函数
哈希函数
输出的散列值–别称:
消息摘要
指纹
常见的单向散列函数:
MD4、MD5
产生128bit的散列值,MD是Message Digest的缩写,目前已经不安全
SHA-1
产生160bit的散列值,目前已经不安全
SHA-2
SHA-256、SHA-384、SHA-512,散列值长度分别是256bit、384bit、512bit
SHA-3
全新标准
如何防止数据被篡改?
单向散列值的应用:
防止数据被篡改
密码加密
常被称为:HTTP over TLS、HTTP over SSL、HTTP Secure
HTTPS的默认端口号是443(HTTP是80)
HTTPS是在HTTP的基础上使用了SSL/TLS来加密报文,对窃听和中间人攻击提供合理的防护
SSL/TLS也可以用在其他协议上,如:
FTP->FTPS
SMTP->SMTPS
SSL是TLS的前身
OpenSSL是SSL/TLS协议的开源实现,支持Windows、Mac、Linux等平台
Linux、Mac一般自带OpenSSL
常用命令:
生成私钥:openssl genrsa -out wj.key
生成公钥:openssl rsa -in wj.key -pubout -out wj.pem
可以使用OpenSSL构建一套属于自己的CA,自己给自己颁发证书,称为“自签名证书”
证书的费用
加解密计算
降低了访问速度
有些企业的做法:包含敏感数据的请求才是用HTTPS,其他保持使用HTTP
总的可以分为3大阶段:
①TCP的3次握手
②TLS的连接
③HTTP请求和响应
大概有10个步骤
图片中省略了中间产生的一些ACK确认
①Client Hello:
TLS的版本号
支持的加密组件(Cipher Suite)列表
加密组件是指所使用的加密算法及密钥长度等
一个随机数(Client Random)
②Server Hello:
TLS的版本号
选择的加密组件(Cipher Suite)
是从接收到的客户端加密组件列表中挑选出来的
一个随机数(Client Random)
③Certificate:
服务器的公钥证书(被CA签过的)
④Server Key Exchange:
用以实现ECDHE算法的其中一个参数(Server Params)
ECDHE是一种密钥交换算法
为了防止伪造伪造,Server Params经过了服务器私钥签名
⑤Server Hello Done:
告知客户端,写上部分结束
目前为止,客户端和服务器之间通过明文共享了
Client Randon、Server Random、ServerParams
而且,客户端也已经拿到了服务器的公钥证书,接下来,客户端会验证证书的真实有效性
⑥Client Key Exchange:
用以时间ECDHE算法的另一个参数(Client Params)
目前为止,客户端和服务器都拥有了ECDHE算法需要的2个参数:Server Params、Client Params
客户端、服务器都可以使用ECDHE算法
根据Server Params、Client Params计算出一个新的随机密钥串:Pre-master secret
然后结合Client Random、Server Random、Pre-master secret生成用以加密会话的会话密钥
⑦Change Cipher Spec:
告知服务器:之后的通信会采用计算出来的会话密钥进行加密
⑧Finished:
包含连接至今全部报文的整体校验值(摘要),加密之后发送给服务器
这次握手写上是否成功,要以服务器是否能够正确解密该报文作为判定标准
⑨Change Cipher Spec:
⑩Finished:
到此为止,客户端服务器都验证加密解密没问题,握手正式结束
后面开始传输加密的HTTP请求和响应
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。