Skip to content

OSI和TCPIP模型

时间:2023年3月29日 星期三

作者:小王

网络模型被设计出来的目的是统一网络通信协议标准。

一、模型对比

img

物理机器-MAC-IP-端口-应用层数据,数据加密在表示层

L2TP是四种常见的VPN协议中唯一能够本地支持非ip协议的。 PPTP、L2F和IPsec都是仅限ip的协议。

二、封装/解封装

1.封装(encapsulation)

发送数据时,从高层到底层进行封装,每经过一层都会加个头部或尾部,最后在物理层变成比特流进行传输。

2.解封装(deencapsulation)

接收到比特流后,从低层到高层进行解封装,每经过一层都会拆个头部或尾部,最后在应用层查看到消息内容。

3.封装与解封装的机制可以参考多层信封送信和收信或俄罗斯套娃。

img

三、分析网络流量

网络流量分析是网络管理的基本能力,检查网络流量内容的工具被称为协议分析器(protocol analyzer),也称为嗅探器(sniffer)、网络评估器(network evaluator)、网络分析器(network analyzer)、流量监视器(traffic monitor)或包捕获实用程序(packet-capturing utility)。协议分析器通常将NIC置于混杂模式(promiscuous mode),以查看和捕获本地网段上的所有以太网帧。

四、常见应用层协议

img

考试联合nmap根据协议考察主机类型

五、传输层协议

传输层通过端口进行通信,IP与端口号的组合称为套接字(socket)。

1.端口类型

• 知名/服务端口(well-known/service ports):0-1023

• 已注册软件端口(registered software ports):1024-49151

• 随机端口(random ports):49152-65535

2.TCP握手机制

img

全过程

SYN,ACK等大写单词是标志位丨seq等小写单词是数据包序号,ack是确认号

SYN 同步序列编号(Synchronize Sequence Numbers):请求建立连接,并在序列号的字段进行序列号的初始值设定,建立连接,设置为1。当SYN=1,ACK=0时表示:这是一个连接请求报文段。若同意连接,则在响应报文段中使得SYN=1,ACK=1。因此,SYN=1表示这是一个连接请求,或连接接受报文。SYN这个标志位只有在TCP建产连接时才会被置1,握手完成后SYN标志位被置0。

ACK:确认号是否有效,为1时有效,为0时无效

seq:占4个字节,用来标记数据段的顺序,TCP把连接中发送的所有数据字节都编上一个序号,第一个字节的编号由本地随机产生;给字节编上序号后,就给每一个报文段指派一个序号;序列号seq就是这个报文段中的第一个字节的数据编号。

ack:占4个字节,期待收到对方下一个报文段的第一个数据字节的序号;序列号表示报文段携带数据的第一个字节的编号;而确认号指的是期望接收到下一个字节的编号;因此当前报文段最后一个字节的编号+1即为确认号。

白话过程:

第一次握手:

​ 客户端向服务器发送SYN表示发起连接请求,同时携带seq数据的序列号

第二次握手:

​ 服务端向客户端发送ACK=1,ack=x+1,表示确认连接有效并发送希望得到下一个字节的编号,发送SYN,seq=y表示告诉客户端服务端自己的数据序号并同意连接

第三次握手:

​ 客户端向服务端发送ACK=1,确认连接有效,seq=x+1表示发送服务端要的序列号为x+1的数据,ack=y+1表示我还要

思考:

为什么不是两次握手?

初次理解,来自《计算机网络》谢希人著,如果客户端发送的请求报文没有丢失而是在某个网络节点长时间滞留,以致延误到连接释放以后的某个时间才达到服务端,这本就是一个早已失效的报文,但是服务端收到此失效的连接请求报文段后误认为是客户端发起了一个新的连接请求,于是向客户端发送确认报文同意建立连接,由于没有第三次握手,服务端不知道客户端已关闭连接,但是服务端误认为连接已经建立,此时服务端一直等待客户端发送数据,客户端也不会发送数据,浪费服务端资源。

RFC793.txt

深入理解,通过TCP协议里的RFC,得到为什么三次握手是必须的:TCP需要seq序列号来做可靠重传或接受,避免连接复用时无法分辨出seq是延迟还是旧连接的seq,因此需要第三次握手来约定双方的ISN(初始seq序列号)。TCP的基本设定就是通过TCP连接发送的每一个包都有一个seq,因为每个包是有序列号的,所以都能被确认收到这些包,确认机制是累计的,所以对一个seq的确认都意味着之前的包都是被确认收到的。

TCP协议是不限制一个特定的连接被重复使用的,那么就会有一个问题,如果连接突然断开之后,怎么识别之前旧连接重发的包呢?所以就需要独一无二的ISN(初始序列号)机制。当新建立一个连接,初始序列号生成器就会生成一个32位的ISN,这个生成器会用一个32位长的时钟,差不多4µs 增长一次,因此 ISN 会在大约 4.55 小时循环一次(2^32位的计数器,需要2^32*4 µs才能自增完,除以1小时共有多少µs便可算出2^32*4 /(1*60*60*1000*1000)=4.772185884 ),而一个段在网络中并不会比最大分段寿命MSl默认使用2分钟长,所以认为ISN是惟一的。发送方与接收方都会有自己的ISN来做通信,因此可以得出三次握手是必须的,因为seq没有绑定到整个网络的全局时钟以及TCP可能有不同的机制来选择ISN,接收方收到第一个SYN时不知道SYN是否延迟很久了,除非有记住之前的seq,如果和现在记住的不一样,怎么知道是上条延迟的还是更久的,所以需要seq来拼接证明传输的数据是否可靠。

为什么不是四次握手?

三次足够证明连接可靠了呗

FIN:表示希望断开连接

第一次挥手:

​ 发送FIN=1,我想走了

第二次挥手:

​ 发送ACK=1,表示确认收到,此时客户端已经没有数据传输了,服务端如果有数据仍可继续传输

第三次挥手:

​ 等待数据传输完成后,服务端发送FIN=1.ACK=1,发出确认可以断开

第四次挥手:

​ 客户端发送ACK=1确认断开

思考:

为什么挥手要四次?

分手可以,把你东西拿走,再滚

3.UDP不靠谱

UDP没有三次握手机制,就是使劲传数据,没收到就再重新传,因此传输速度快,适用于传输不重要的数据。

4.报文头部

img

六、域名系统

域名系统使用DNS协议解决域名与IP地址的映射关系(域名可比IP地址好记多了,如密码短语),就如ARP协议解决IP与MAC的映射关系一样。

1.报文格式

DNS运行在TCP和UDP的53端口,TCP用于区域传输和响应超过512字节的情形,UDP用于常规DNS查询。

img

img

2.域名分类

全限定域名(fully qualified domain names,FQDNs)有三个组成部分:

• 顶级域名(top-level domain,TLD):com、org、edu、mil、gov、net、int(最初的);info、museum、telephone、mobi、biz等(行业);cn、us、fr、uk(国家/地区)。

• 注册域名(registered domain name):google、baidu、sina等,一般是公司或组织申请。

• 子域名或主机名(subdomain or hostname):www、mail、ftp等,一般用于表示提供的服务;支持多级子域名,如www.server1.google.com。

每一个注册域名都有一个指定的权威名称服务器,管理该域名的原始区域文件(映射关系的详细记录),可通过区域传递给到辅助权威名称服务器只读副本(只能用,不能改)。

3.DNS解析优先级

• 本地hosts文件

• 本地dns缓存

• 本地DNS服务尝试解析,本地区域文件有则权威解析,本地缓存有则非权威解析

• 从根到注册域名递归或迭代,最终得到结果

4.域名系统安全扩展(DNSSEC)

为每个DNS服务器提供数字证书,用于身份验证,并提供加密会话,解决DNS服务器滥用问题。

5.DNS over HTTPS(DoH)

针对客户端的安全协议,在客户端与DNS服务器间创建加密会话以保护DNS查询和响应。DoH的升级版是Oblivious DoH (ODoH),在客户端与DNS服务器间添加DNS代理,为DNS查询提供匿名性和隐私。

6.DNS投毒

重点

伪造客户端使用的DNS信息致使客户端访问了非预期系统的行为。

• 恶意DNS服务器:可以监听客户端的DNS查询,伪造含正确QID的虚假DNS响应包给客户端。

• DNS缓存中毒:攻击DNS服务器并将不正确的信息放入其区域文件或缓存,导致客户端直接解析到虚假IP。

• DNS域欺骗(pharming):通过修改系统上的本地主机文件或通过中毒或欺骗DNS解析来发生,可以理解是攻击的集合。

• 改动Hosts文件:篡改主机的hosts中DNS记录来实现攻击。

• 破坏IP配置:篡改主机的IP配置或DHCP配置来实现攻击。

• DNS查询欺骗:与恶意DNS服务器一样,只不过该攻击主机发起。

• 使用代理伪造:虚假代理服务器来实现篡改,针对web通信。

7.域名劫持

域名劫持(domain hijacking)或域名盗窃(domain theft)是指未经有效所有者授权而更改域名注册的恶意行为。这可以通过窃取所有者的登录凭据、使用XSRF、劫持会话、使用路径/MitM攻击或利用域注册器系统中的漏洞来实现。防止域名劫持的最佳防御措施是在登录域注册器时使用强多因素身份验证,并设置域名自动续费,并在续费日期前一周再次检查付款方式。

• 误植占用(Typosquatting):通常注册与合法域名类似的域名来实现攻击,如googel.com、gooogle.com、googles.com、googe.edu等。

• 同形异义(Homograph)攻击:利用字符集的相似性来注册肉眼看来合法的虚假国际域名,如https://www.apple.com (拉丁文)和https://www.аррӏе.com (西里尔字母)。

• URL劫持(URL hijacking)攻击:指的是显示链接或广告的行为,该链接或广告看起来像知名产品、服务或网站的链接或广告,但单击后会将用户重定向到其他位置、服务或产品,如百度推广。

• 点击劫持(Click hijacking)攻击:一种将用户在网页上的点击或选择重定向到另一个通常是恶意的目标而不是预期和期望的位置的方法,如透明框劫持。

七、IP网络

1.IPv4和IPv6

IPv4是最流行的版本,32位寻址,如192.168.1.1;IPv6是逐步推广的版本,128位寻址,如240e:428:4831:77b4:bcdb:1b9f:1744:bf22,目的是解决IPv4地址不足的问题。IPv6引发的安全问题:

• 攻击者得到了大量源地址用于攻击,导致基于IP的过滤效果降低。

• 安全产品的支持问题可能导致IPv6成为新的隐蔽通道。

• 干掉NAT后可能导致隐私泄漏。

IPv4和IPv6同时使用的方法:

• 双栈:同时运行,互不干扰。

• 隧道:使用一个协议,再用隧道封装另外一个协议。

• NAT-PT:可使IPv4和IPv6互相转换,类似NAT转换内外部地址。

2.IP分类

img

• 黑洞网络(blackhole network):A的0段地址,该段地址的流量都将被路由丢弃。

• 回环地址(loopback address):A的127段地址,该段地址用于测试协议栈是否被正确安装和配置,通常仅用127.0.0.1。

• 可变长子网掩码和无类域间路由(VLSM/CIDR):可灵活配置子网大小,如192.168.1.0/30。

3.ICMP

img

常用于ping、traceroute等网管工具,确定网络或特定链路的运行状况,利用该协议的攻击方法有有ping of death(超大包)、Smurf(广播反射)、icmp flood(流量型DoS)等。

4.IGMP

img

允许系统支持组播。

八、ARP

ARP用于将IP地址解析为MAC地址,使用缓存和广播来执行其功能,是一个二层协议。

img

1.工作原理

检查本地ARP缓存,有目的MAC直接转发,没有则发送ARP请求;如果是一个子网,则目的MAC为全F;如果不在一个子网,则目的MAC为默认路由的MAC(重复以上过程);收到ARP响应后正常通信。

2.ARP攻击

• ARP欺骗:攻击者篡改ARP响应包,将目的IP的MAC篡改。

• ARP缓存投毒:ARP欺骗引起客户端ARP缓存中毒,实质上是一个攻击。

• 免费ARP:客户端直接发送IP-MAC映射关系到子网内,通常用于IP变化或故障切换时更新记录。

• 静态ARP:客户端手工创建静态ARP记录,进而造成映射关系错误。

3.ARP攻击防御

• 启用交换机或安全设备的端口(物理)安全功能。

• 创建静态ARP记录,不是灵活的方法。

九、安全通信协议


img

十、多层协议

1.正常封装

[MAC[IP[TCP[HTTP]]]]

img

2.应用层封装

[MAC[IP[TCP[TLS[HTTP]]]]]

img

3.网络&应用层封装

[MAC[MPLS[IP[TCP[HTTP]]]]]

img

4.VLAN跳跃

img

利用多层封装实现跨VLAN间传输。

5.多层协议优点(记忆)

• 可在更高层使用各种协议。

• 加密可包含在各个层中。

• 支持复杂网络结构中的灵活性和弹性。

6.多层协议缺点

• 允许隐蔽通道。

• 可以绕过过滤器。

• 逻辑上强加的网段边界可超越。

7.融合协议(converged protocols)

将专有协议与标准协议结合,实现使用TCP/IP网络基础来支持专有协议。

存储区域网络(SAN):用于将各种存储设备整合和管理到一个整合的网络可访问存储容器中,将数据存储信号封装或聚合到TCP/IP通信中,增强网络存储设备读写能力。

• 以太网光纤通道(FCoE):网络存储解决方案(SAN或NAS),可替代光纤部署,以以太网封装光纤通道通信,但需要10Gbps以太网才能支持,IP光纤通道(FCIP)扩展了其能力,不再需要特定的网络速度。

多协议标签交换(MPLS):基于路径标签进行转发,用于VPN通道。

• Internet小型计算机系统接口(iSCSI):被视为FCoE的低成本替代方案。

8.网络电话(VoIP)

VoIP是一种隧道机制,将音频、视频和其他数据封装到IP数据包中,以支持语音呼叫和多媒体协作,是一种融合协议。针对VoIP的攻击:

• 攻击者可以伪造来电显示,实现vishing(VoIP网络钓鱼)或互联网垃圾电话攻击(Spam over Internet Telephony,SPIT)。

• 呼叫管理器系统和VoIP电话本身可能容易受到主机操作系统攻击和DoS攻击。

• 攻击者可能通过欺骗呼叫管理器或端点连接协商和/或响应来执行MitM/路径攻击。

• 与桌面和服务器系统相连的同一个交换机上部署VoIP电话可能引发VALN跳跃和VoIP跳跃。

• 未加密的VoIP通信可能会被监听造成信息泄漏。

安全实时传输协议或安全RTP(Secure Real-Time Transport Protocol,SRTP)(考过)是对许多VoIP通信中使用的实时传输协议(RTP)的安全改进。SRTP旨在通过强健的加密和可靠的身份验证,将拒绝服务、路径攻击和其他VoIP攻击的风险降至最低。RTP或SRTP在会话启动协议(SIP)建立端点之间的通信链路后接管(SIPS)。

9.软件定义网络(SDN)

SDN将基础设施层(即数据平面和转发平面,硬件及相关配置)与控制层(数据传输管理的网络服务)分离。控制平面使用协议来决定向何处发送流量,而数据平面包含决定是否转发流量的规则。SDN取代了传统组网方案,通过SDN控制器对不同厂商的网络设备进行统一管理,灵活、便利、具有成本效益。

img

• 虚拟SAN:由于传统SAN的硬件复杂、成本高,可通过虚拟化网络创建SAN。

• 软件定义存储(SDS):一种策略驱动的存储管理和资源调配解决方案,独立于实际的底层存储硬件。

• 软件定义广域网(SDWAN):可用于管理远程数据中心、远程位置和跨WAN链路的云服务之间的连接和控制服务。

十一、微隔离

1.网络分段的示例

• 基于交换机VLAN、路由器或防火墙等创建网段。

• 创建带外路径(out-of-band pathway):为了为流量创建一个单独和独特的网络结构,否则会干扰生产网络,或者如果将其放置在生产网络上,其本身可能会面临风险,如SAN、VoIP、备份数据、补丁分发、管理操作等。

2.网络分段的优点

• 提高网络性能

• 减少通信问题

• 提高安全性

3.微隔离(microsegmentation)

微隔离将内部网络划分为多个子区域,可能小到单个设备,例如高价值服务器或甚至客户端。每个区域通过内部分段防火墙(ISFW)、子网、VLAN或其他虚拟网络解决方案与其他区域分开。区域之间的任何通信都经过过滤,可能需要进行身份验证、会话加密、访问控制等。

4.虚拟可扩展局域网(VXLAN)

VXLAN可使VLAN跨子网和地理距离进行扩展,可用于实现微隔离。