网络安全基础之网络协议与安全威胁

OSI(OpenSystem Interconnect),即开放式系统互联。 一般都叫OSI参考模型,是ISO(国际标准化组织)组织在1985年研究的网络互联模型。

网络协议的简介:

定义:协议是网络中计算机或设备之间进行通信的一系列规则集合。

什么是规则?

交通中的红黄绿灯:红灯停,绿灯行就是规则。

我国汽车靠右行就是规则。

OSI七层模型

 

OSI(OpenSystem Interconnect),即开放式系统互联。 一般都叫OSI参考模型,是ISO(国际标准化组织)组织在1985年研究的网络互联模型。

(1)物理层(Physical Layer)

物理层是OSI参考模型的最低层,它利用传输介质为数据链路层提供物理连接。它主要关心的是通过物理链路从一个节点向另一个节点传送比特流,物理链路可能是铜线、卫星、微波或其他的通讯媒介。

(2)数据链路层(Data Link Layer)

数据链路层是为网络层提供服务的,解决两个相邻结点之间的通信问题,传送的协议数据单元称为数据帧。

(3)网络层(Network Layer)

网络层是为传输层提供服务的,传送的协议数据单元称为数据包或分组。

(4)传输层(Transport Layer)

传输层的作用是为上层协议提供端到端的可靠和透明的数据传输服务,包括处理差错控制和流量控制等问题。

传输层传送的协议数据单元称为段或报文。

(5)会话层(Session Layer)

会话层主要功能是管理和协调不同主机上各种进程之间的通信(对话),即负责建立、管理和终止应用程序之间的会话。

(6)表示层(Presentation Layer)

表示层处理流经结点的数据编码的表示方式问题,以保证一个系统应用层发出的信息可被另一系统的应用层读出。如果必要,该层可提供一种标准表示形式,用于将计算机内部的多种数据表示格式转换成网络通信中采用的标准表示形式。数据压缩和加密也是表示层可提供的转换功能之一。

(7)应用层(Application Layer)

应用层是OSI参考模型的最高层,是用户与网络的接口。该层通过应用程序来完成网络用户的应用需求,如文件传输、收发电子邮件等。

TCP/IP协议

译名为传输控制协议/因特网互联协议,又名网络通讯协议,是Internet最基本的协议、Internet国际互联网络的基础,由网络层的IP协议和传输层的TCP协议组成。

TCP/IP定义了电子设备如何连入因特网,以及数据如何在它们之间传输的标准。协议采用了4层的层级结构,每一层都呼叫它的下一层所提供的协议来完成自己的需求。通俗而言:TCP负责发现传输的问题,一有问题就发出信号,要求重新传输,直到所有数据安全正确地传输到目的地。而IP是给因特网的每一台联网设备规定一个地址。

OSI模型与TCP/IP协议的对应

 

左边是OSI模型,右边是TCPIP协议栈分层模型,可以看得出,两个模型有很清晰的对应关系。

两个模型的下四层是一一对应的,而OSI模型的上三层对应到TCPIP协议的应用层,所以在谈论“应用层”概念的时候,要注意讨论的是哪个模型。

数据传输的协议单元

 

依据标准的OSI术语,每层间对应的“协议数据单元”(Protocol Data Unit,简称PDU)的名称都是不同的

物理层为“位”(bit),即平常讲的二进制数位流,在物理传输介质上以二进制数字信号传输(简单的如高电平代表“1”,底电平代表“0”)。

物理层的传输介质包括:

同轴电缆(coaxical cable):细缆和粗缆,目前已经不常用;

双绞线(twistedpair):UTP(Unshielded Twisted Paired , 非屏蔽双绞线),这种即平时常用的网线;STP (Shielded Twisted Pair,屏蔽双绞线),这种线适用于电磁干扰恶劣的工业环境;(这两种线使用铜线做介质,到用户家虽然看起来就一两根,但在运营商的管线里是几千条几百条线在一起的大对线缆,经常是偷铜者的目标)

光纤(OpticalFiber):使用光信号来传播数字信号的介质,坐火车到处看到路边写的大标语:“光纤没铜,挖了没用”就是指这个;

无线电波(wirelessradio);

数据链路层PDU名称叫数据帧“Frame”,例如帧中继技术名称叫Frame Relay ,其数据单元名字叫“帧”,对以太网来说是以太帧。

网络层PDU的名称叫数据包Packet, 因为IP协议在这一层,所以互联网上的数据一般被称为IP数据包。

传输层PDU的名称叫数据段Segment ,这个层面最著名的是传输控制协议TCP和用户数据报协议UDP。

会话层Session 的PDU叫SPDU,会晤协议数据单元;

表示层Presentation的PDU叫PPDU,表示协议数据单元;

应用层Application的PDU叫APDU,应用协议数据单元;

数据封包和解包过程

用户数据报文的一个封装过程,应用程序的数据使用TCP协议进行传输,用户数据被切割成合适的数据片段后,被加上网络层协议IP的首部字节,成为IP数据包,然后被加上数据链路层的以太网首部,成为以太网数据帧,再由以太网驱动程序将帧转化为二进制位流,在物理层面传送。

数据包传输过程

上图是两个主机通过一台交换机和一台路由器通信的示意图。二层交换机仅跨越OSI模型的物理层和数据链路层,所以称为二层交换机,仅为所有连接的主机提供数据链路层间的互通功能。

路由器是跨越物理层、数据链路层、网络层的设备。

最简单的路由器的概念是一台装有两块网卡的主机,主机内部安装的路由软件可以根据IP地址在两块网卡间转发IP数据包,两块网卡各有一个IP地址,具有两个物理接口的路由器同这个道理是类似的。

由上图图四可以看到,IP地址的概念是属于IP协议,IP协议是属于OSI模型第三层网络层的,所有跨越网络层的设备都需要有IP地址。最左边的主机同路由器的左侧接口各有一个IP地址,使用IP协议通信;最右边的服务器和路由器右侧接口各有一个IP地址,使用IP协议通信;路由器的不同接口的IP地址是属于不同的IP子网的,路由器就是在不同IP子网间传送IP数据包的设备,路由是根据IP数据包里的地址选择正确传递路径的过程。

TCP/IP 四层模型

ARP协议:

地址解析协议,即ARP(Address Resolution Protocol),是根据IP地址获取物理地址的一个TCP/IP协议。

原理:

主机发送信息时将包含目标IP地址的ARP请求广播到网络上的所有主机,并接收返回消息,以此确定目标的物理地址;收到返回消息后将该IP地址和物理地址存入本机ARP缓存中并保留一定时间,下次请求时直接查询ARP缓存以节约资源。地址解析协议是建立在网络中各个主机互相信任的基础上的,网络上的主机可以自主发送ARP应答消息,其他主机收到应答报文时不会检测该报文的真实性就会将其记入本机ARP缓存。

网络接口层的安全威胁

 

在网络中,flooding是指从任何节点通过一个路由器发送的信息包会被发送给与该路由器相连的所有其他节点(除了发送信息包出来的那个节点)。

在典型的MAC flooding中,攻击者能让目标网络中的交换机不断泛洪大量不同源MAC地址的数据包,导致交换机内存不足以存放正确的MAC地址和物理端口号相对应的关系表。如果攻击成功,交换机会进入failopen模式,所有新进入交换机的数据包会不经过交换机处理直接广播到所有的端口(类似HUB集线器的功能)。攻击者能进一步利用嗅探工具(例如Wireshark)对网络内所有用户的信息进行捕获,从而能得到机密信息或者各种业务敏感信息。

损坏:自然灾害、动物破坏、老化、误操作

干扰:大功率电器/电源线路/电磁辐射

电磁泄漏:传输线路电磁泄漏

搭线窃听:物理搭线

欺骗:ARP欺骗

嗅探:常见二层协议是明文通信的(以太、arp等)

拒绝服务:macflooding,arpflooding等

arp欺骗:

  攻击者在局域网网段发送虚假的IP/MAC对应信息,篡改网关MAC地址,使自己成为假网关

  受害者将数据包发送给假网关(攻击者)

  假网关(攻击者)分析接收到的数据包,把有价值的数据包记录下来(比如QQ以及邮箱登录数据包)

  假网关再把数据包转发给真正的网关

互联网网络层

 

 

译名为传输控制协议/因特网互联协议,又名网络通讯协议,是Internet最基本的协议、Internet国际互联网络的基础,由网络层的IP协议和传输层的TCP协议组成。

TCP/IP定义了电子设备如何连入因特网,以及数据如何在它们之间传输的标准。协议采用了4层的层级结构,每一层都呼叫它的下一层所提供的协议来完成自己的需求。通俗而言:TCP负责发现传输的问题,一有问题就发出信号,要求重新传输,直到所有数据安全正确地传输到目的地。而IP是给因特网的每一台联网设备规定一个地址。

IP协议简介:

IP协议是用于将多个包交换网络连接起来的,它在源地址和目的地址之间传送一种称之为数据包的东西,它还提供对数据大小的重新组装功能,以适应不同网络对包大小的要求。

IP实现两个基本功能:寻址和分段。IP可以根据数据包包头中包括的目的地址将数据报传送到目的地址,在此过程中IP负责选择传送的道路,这种选择道路称为路由功能。如果有些网络内只能传送小数据报,IP可以将数据报重新组装并在报头域内注明。IP模块中包括这些基本功能,这些模块存在于网络中的每台主机和网关上,而且这些模块(特别在网关上)有路由选择和其它服务功能。对IP来说,数据报之间没有什么联系,对IP不好说什么连接或逻辑链路。

互联网层网络安全威胁

传输层

 

IP分片技术

以太网的MTU是1500,你可以用 netstat -i 命令查看这个值。如果IP层有数据包要传,而且数据包的长度超过了MTU,那么IP层就要对数据包进行分片(fragmentation)操作,使每一片的长度都小于或等于MTU。我们假设要传输一个UDP数据包,以太网的MTU为1500字节,一般IP首部为20字节,UDP首部为8字节,数据的净荷(payload)部分预留是1500-20-8=1472字节。如果数据部分大于1472字节,就会出现分片现象。

IP分片攻击

如果有意发送总长度超过65535的IP碎片,一些老的系统内核在处理的时候就会出现问题,导致崩溃或者拒绝服务。另外,如果分片之间偏移量经过精心构造,一些系统就无法处理,导致死机。所以说,漏洞的起因是出在重组算法上。pingo‘ death是利用ICMP协议的一种碎片攻击。攻击者发送一个长度超过65535的EchoRequest数据包,目标主机在重组分片的时候会造成事先分配的65535字节缓冲区溢出,系统通常会崩溃或挂起。ping不就是发送ICMPEcho Request数据包的吗?让我们尝试攻击一下吧!不管IP和ICMP首部长度了,数据长度反正是多多益善,就65535吧

IP数据包

数据包的结构:数据包的结构非常复杂,不是三言两语能够说清的,在这里主要了解一下它的关键构成就可以了,这对于理解TCP/IP协议的通信原理是非常重要的。数据包主要由“目的IP地址”、“源IP地址”、“净载数据”等部分构成,包括包头和包体,包头是固定长度,包体的长度不定,各字段长度固定,双方的请求数据包和应答数据包的包头结构是一致的,不同的是包体的定义。数据包的结构与我们平常写信非常类似,目的IP地址是说明这个数据包是要发给谁的,相当于收信人地址;源IP地址是说明这个数据包是发自哪里的,相当于发信人地址;而净载数据相当于信件的内容。正是因为数据包具有这样的结构,安装了TCP/IP协议的计算机之间才能相互通信。我们在使用基于TCP/IP协议的网络时,网络中其实传递的就是数据包。理解数据包,对于网络管理的网络安全具有至关重要的意义。

我们可以用一个形象一些的例子对数据包的概念加以说明:我们在邮局邮寄产品时,虽然产品本身带有自己的包装盒,但是在邮寄的时候只用产品原包装盒来包装显然是不行的。必须把内装产品的包装盒放到一个邮局指定的专用纸箱里,这样才能够邮寄。这里,产品包装盒相当于数据包,里面放着的产品相当于可用的数据,而专用纸箱就相当于帧,且一个帧中只有一个数据包。“包”听起来非常抽象,那么是不是不可见的呢?通过一定技术手段,是可以感知到数据包的存在的。 就是用数据包捕获软件Iris捕获到的数据包的界面图,在此,大家可以很清楚地看到捕获到的数据包的MAC地址、IP地址、协议类型端口号等细节。通过分析这些数据,网管员就可以知道网络中到底有什么样的数据包在活动了。

TCP/UDP协议

面向连接的TCP协议:

TCP(TransmissionControl Protocol,传输控制协议)是基于连接的协议,也就是说,在正式收发数据前,必须和对方建立可靠的连接。一个TCP连接必须要经过三次“对话”才能建立起来,也就是所谓的”TCP的三次握手”。

面无连接的UDP协议:

UDP(UserData Protocol,用户数据报协议)是与TCP相对应的协议。它是面向非连接的协议,它不与对方建立连接,而是直接就把数据包发送过去!

“面向连接”就是在正式通信前必须要与对方建立起连接。比如你给别人打电话,必须等线路接通了、对方拿起话筒才能相互通话。

TCP的三次握手:

其中的过程非常复杂,我们这里只做简单、形象的介绍,你只要做到能够理解这个过程即可。我们来看看这三次对话的简单过程:主机A向主机B发出连接请求数据包:“我想给你发数据,可以吗?”,这是第一次对话;主机B向主机

A发送同意连接和要求同步(同步就是两台主机一个在发送,一个在接收,协调工作)的数据包:“可以,你什么时候发?”,这是第二次对话;主机A再发出一个数据包确认主机B的要求同步:“我现在就发,你接着吧!”,这是第三次对话。三次“对话”的目的是使数据包的发送和接收同步,经过三次“对话”之后,主机A才向主机B正式发送数据。

“面向非连接”就是在正式通信前不必与对方先建立连接,不管对方状态就直接发送。与手机短信非常相似:你在发短信的时候,只需要输入对方手机号就OK了。

TCP:FTPHTTP POP IMAP SMTP TELNET SSH

UDP

Q聊天,在线视频RTSP,网络语音电话VoIP

 

第一次握手:建立连接时,客户端发送syn包(syn=j)到服务器,并进入SYN_SENT状态,等待服务器确认;SYN:同步序列编号(Synchronize Sequence Numbers)。第二次握手:服务器收到syn包,必须确认客户的SYN(ack=j+1),同时自己也发送一个SYN包(syn=k),即SYN+ACK包,此时服务器进入SYN_RECV状态;第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=k+1),此包发送完毕,客户端和服务器进入ESTABLISHED(TCP连接成功)状态,完成三次握手。完成三次握手,客户端与服务器开始传送数据。

传输层的安全威胁

 

在网络中,flooding是指从任何节点通过一个路由器发送的信息包会被发送给与该路由器相连的所有其他节点(除了发送信息包出来的那个节点)。

在典型的MAC flooding中,攻击者能让目标网络中的交换机不断泛洪大量不同源MAC地址的数据包,导致交换机内存不足以存放正确的MAC地址和物理端口号相对应的关系表。如果攻击成功,交换机会进入failopen模式,所有新进入交换机的数据包会不经过交换机处理直接广播到所有的端口(类似HUB集线器的功能)。攻击者能进一步利用嗅探工具(例如Wireshark)对网络内所有用户的信息进行捕获,从而能得到机密信息或者各种业务敏感信息。

拒绝服务:syn flood/udp flood/Smurf欺骗:TCP会话劫持窃听:嗅探伪造:数据包伪造

应用层的安全威胁

 

域名解析:DNS电子邮件:SMTP/POP3文件传输:FTP网页浏览:HTTP……

  

拒绝服务:超长URL链接欺骗:跨站脚本、钓鱼式攻击、cookie欺骗窃听:嗅探伪造:应用数据篡改暴力破解:应用认证口令暴力破解等……

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/792283.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Android操作sqlite数据库

Sqlite数一种轻量级的关系型数据库,android里面可以用来持久化存储一些用户数据。 一、SQLiteOpenHelper方式 SQLiteOpenHelper是原生的数据库帮助类,继承这个类,用来创建,更新数据库的操作 public class MySqliteOpenHelper e…

算法整理:链表

链表定义 struct ListNode { int val;ListNode *next;ListNode(int x) : val(x), next(nullptr) {} }; 链表的遍历:ListNode phead; while(p!null) pp.next; 找到链表的尾结点:phead; while(p.next!null)pp.next; 链表节点的个数: phead…

LocalDateTime 前后端传输问题

后端使用json形式接收前端传来的LocalDateTime,则添加下面的JsonFormat注释 同时后端返回给前端的json中带有LocalDateTime的话,也添加JsonFormat注解 JsonFormat(pattern "yyyy-MM-dd HH:mm:ss", timezone "GMT8") private Loca…

蓝桥杯真题:七段码

import java.util.Scanner; import java.util.ArrayList; // 1:无需package // 2: 类名必须Main, 不可修改public class Main {public static void main(String[] args){// 连接关系图int[][] map new int[][]{{0, 1, 0, 0, 0, 1, 0},{1, 0, 1, 0, 0, 0, 1},{0, 1, 0, 1, 0, 0…

通讯录项目实现

引言:通过顺序表的逻辑实现通讯录。这里就不讲关于顺序表的函数了。如果有不明白的可以看我写的顺序表的博客。 目录 顺序表与通讯录的比较 各源文件文件大榄 Contact.c中通讯录相关函数的定义 初始化和销毁通讯录 添加联系人: 删除联系人&#xf…

c++的学习之路:10、string(2)

本章主要说一下模拟实现string类的部分功能,文章末附上所有代码。 目录 一、构造函数与析构函数 二、拷贝构造 三、c_str 四、【】和迭代器的遍历与访问 五、size 六、判断 七、reserve 八、push_back 九、resize 十、append 十一、 十二、insert 十…

Spirngboot JWT快速配置和使用

2、JWT 2.1、JWT介绍 JWT是JSON Web Token的缩写,即JSON Web令牌,是一种自包含令牌。 是为了在网络应用环境间传递声明而执行的一种基于JSON的开放标准。 JWT的声明一般被用来在身份提供者和服务提供者间传递被认证的用户身份信息,以便于从…

day25打卡:回溯算法part02

day25打卡&#xff1a;回溯算法part02 216.组合总和三 原题链接 代码随想录链接 和经典的回溯题目很相似&#xff0c;只是需要在每层for循环中都记录当前的总和&#xff1b; Java代码如下&#xff1a; class Solution {List<List<Integer>> result new Arra…

【DevOps工具篇】Keycloak中设置与OpenLDAP认证集成

【DevOps工具篇】Keycloak中设置与OpenLDAP认证集成 目录 【DevOps工具篇】Keycloak中设置与OpenLDAP认证集成步骤 1. 启动一个用于安装 OpenLDAP 的 EC2 实例步骤 2. 安装 OpenLDAP启动 docker 容器查看所有用户信息extended LDIFLDAPv3base <ou=users,dc=example,dc=org&g…

Redis的5大常见数据类型的用法

上一篇文章我们讲了Redis的10大应用场景&#xff0c;这一篇文章就针对Redis的常用数据结构进行一个说明&#xff0c;通过示例的形式演示每一种数据结构如何使用。 当涉及Redis的数据操作时&#xff0c;不同数据类型对应的不同数据结构&#xff0c;如下就对5大常用的数据类型进行…

Transformer,革命性的深度学习架构

Transformer 是一种革命性的深度学习架构&#xff0c;专门设计用于处理序列数据&#xff0c;特别是在自然语言处理&#xff08;NLP&#xff09;任务中表现卓越。它由 Vaswani 等人在 2017 年发表的论文《Attention is All You Need》中首次提出&#xff0c;打破了当时基于循环神…

2024最新版Android studio安装入门教程(非常详细)

目录 JDK安装与配置 一、下载JDK 二、JDK安装 三、JDK的环境配置 四、JDK的配置验证 Android studio安装 Android studio连接手机真机调试&#xff08;以华为鸿蒙为例&#xff09; 一、新建一个android项目 二、进入项目面板 三、配置Android Studio 四、安装手机驱…

【linux】进程替换的应用|shell解释器的实现

当我们学过了进程替换之后&#xff0c;本篇文章可以根据进程替换的知识带你自主实现一个shell命令行 实现步骤 1.显示命令行提示 2.读取输入指令以及对应选项 3.分割第二步的指令以及选项到命令行参数表中 4.处理内建命令 5.进程替换 1.显示命令行提示 我们通过观察bash的命令行…

03-Docker入门

03-Docker入门 在运行之前&#xff0c;首先通过如下命令确认Docker的状态 sudo docker info运行第一个容器 运行如下命令&#xff0c;运行我们的第一个centos容器&#xff0c;如果本地没有该镜像&#xff0c;就会自动下载。这里的两个参数&#xff0c;-i保证我们可以输入&am…

滑动窗口算法 - LCR 014. 字符串的排列

前言 接前文 滑动窗口算法 - LC76 最小覆盖子串-CSDN博客&#xff0c;此题也是套用滑窗模板&#xff0c;但是在两个细节点处稍有不同。 正文 LCR 014. 字符串的排列 给定两个字符串 s1 和 s2&#xff0c;写一个函数来判断 s2 是否包含 s1 的某个变位词。 换句话说&#xf…

Linux多进程通信总结——进程间通信看这一篇足够啦!

1.进程间通信方式综合比较 优点缺点有名管道1&#xff09;任意进程间通信1&#xff09;缓冲区有限无名管道1&#xff09;简单方便1&#xff09;单向通信2&#xff09;父子进程间通信3&#xff09;缓冲区有限消息队列1&#xff09;任意进程通信2&#xff09;无需考虑进程间同步…

Linux 文件相关命令

一、查看文件命令 1&#xff09;浏览文件less 默认查看文件的前 10 行。 less /etc/services ##功能说明&#xff1a; #1.默认打开首屏内容 #2.按【回车】按行访问 #3.按【空格】按屏访问 #4.【从上向下】搜索用/111,搜索包含111的内容&#xff0c;此时按n继续向下搜&#x…

PCL 基于直线进行KMeans聚类

文章目录 一、K-Means算法二、K-Means算法步骤三、实现代码四、实现效果参考文献一、K-Means算法 在诸多的聚类方法中,K-Means聚类方法是属于“基于原型的聚类”(也称为原型聚类)的方法,此类方法均是假设聚类结构能通过一组原型刻画,在现实聚类中极为常用。通常情况下,该类…

JAVAEE之IoCDI

Spring 是⼀个 IoC&#xff08;控制反转&#xff09;容器&#xff0c;作为容器, 那么它就具备两个最基础的功能&#xff1a; • 存 • 取 Spring 容器管理的主要是对象, 这些对象, 我们称之为"Bean". 我们把这些对象交由Spring管理, 由 Spring来负责对象的创建…

想学网络安全,从哪里开始?网络安全的学习路线

网络安全学习路线&#xff1a; 想学习网络安全专业的知识&#xff0c;想当黑客&#xff0c;但是不知道该从哪里开始学。 我给你一个路线&#xff01; 清晰图片和大纲&#xff1a;https://docs.qq.com/doc/DU1lpVFpSbWVrd2p3