概述
网络安全——需要先保证连通信(安全是建立在网络通信上的)
计算机网络通信:将不同地理位置的计算机进行连接,实现资源共享和信息传递。
针对计算计算机网络进行分类:
①局域网(LAN):
一般可以理解为最大的局域网就是内网
内网是什么?:
类似校园网,政务网,企业网
在一个大的内网中,可以再继续进行分类,分成多个小局域网。所以局域网是范围最小的网络,类似办公室,部门,教室,都是局域网。
那什么是外网呢?:
运营商(ISP)的网络:因特网服务提供商——电信、移动、联通
如果内网想访问百度,那就需要找运营商申请网络
在一个大的内网中,可以再继续进行分类,分成多个小的局域网,所以局域网目前是范围最小的网络,一般的局域网——类似办公室,教室,部门,都是局域网。局域网也是相对不安全的一种网。
②城域网(MAN)
城市城市之间的 针对运营商 范围相对比较大
③广域网(WAN)
范围最大的(地球村),最大的广域网——Internet
TCP/IP协议栈
数据传输:其实是数据封装与解封装的过程
发送方:封装数据 (从上往下) 接收方:解封装数据(从下往上) 道理同寄快递收快递拆快递
什么叫从下往上?什么是从下往上?
先来了解一下OSI参考模型,现在全球通信用的都是TCP/IP协议栈。
早期的时候,是使用分组交换网络,每个国家有每个国家的网络,国家与国家之间没法进行互通,为了实现跟其他国家的通信,所以提出了OSI参考模型,用来定义一套的通信标准。
通信方式:
单播:一对一
组播:一对多
广播:一对所有
源地址:发送方的IP地址或者MAC地址
目的地址:接收方的IP地址或者MAC地址
OSI参考模型(7层模型)
从下往上排列
①物理层
②数据链路层
③网络层
④传输层
⑤会话层
⑥表示层
⑦应用层
TCP/IP协议栈(4/5层模型)——目前通信的标准
从下往上(4层)
①网络接口层
②网络层
③传输层
④应用层
那如果是五层怎么分呢?
从下往上(5层)
①物理层:关注的是传输介质(传输介质分为有线传输和无线传输),传输的数据是比特流(01010101)
②数据链路层:关注的硬件是交换机(二层交换机和三层交换机) 传输的数据是数据帧
地址:MAC地址(物理地址/硬件地址)
每张网卡都有MAC地址——由48位的二进制数组成,表示形式为十六进制。
物理地址. . . . . . . . . . . . . : CA-B2-9B-A0-8C-9B
唯一性:夸张点说,全球的通信设备,网卡上的MAC地址是不能冲突的(全球唯一性)
特殊的物理地址:FF-FF-FF-FF-FF-FF(最大)——广播MAC地址
比如:
发送数据:源地址:54-E1-AD-81-EC-66 目的地址:54-E1-AD-81-EC-66 单播帧
发送数据:源地址:54-E1-AD-81-EC-66 目的地址:FF-FF-FF-FF-FF-FF 广播帧
如果目的地址是一个具体的地址,就是单播帧。如果目的地址全是F,那就是广播帧。
③网络层:关注的硬件是路由器(三层设备:路由器、三层交换机、安全设备)传输的数据是数据包
地址:IP地址,分类为IPv4地址和IPv6地址。一般使用IPv4地址,因为IPv6地址还没有完全普及。
IPv4 地址 . . . . . . . . . . . . : 192.168.89.1(首选)
IPv4地址,是由32位的二进制数组成的,表示形式:三点分十进制 三个点分成四个部分,每个部分8位。
IP地址是联网的通行证,同样也有唯一性,类似于身份证
IP地址的分类:
A:IPv4地址的第一个部分范围在1-127之间 10.100.200.200
特殊的A类IPv4地址:127.0.0.1 (这个地址是用于本地回环测试的,不能用于通信)或者localhost都是代表本地。
B:IPv4地址的第一个部分范围在128-191之间 172.200.100.1
特殊的B类IPv4地址:169开头的地址 (这个地址是用于主机自动获取IP地址失败后得到的地址)
C:IPv4地址的第一个部分范围在192-223之间 192.168.200.1
D:用于组播通信,224开头的地址
E:科研用的
子网掩码:是跟IP地址成对出现的,有IP地址一定要有子网掩码
A类默认子网掩码:255.0.0.0
B类默认子网掩码:255.255.0.0
C类默认子网掩码:255.255.255.0
网段/网络号:IP地址和子网掩码进行与运算得到的(使用二进制方式进行与运算)
举个栗子:
IP地址一个部分的范围为:00000000——11111111 也就是0——2^7+2^6+........+2^0=255
所以说IP地址每个部分最大也就只能到255了
假设有个IPv4地址为:192.168.10.1 表示为二进制形式那就是11000000.10101000.00001010.00000001
可以观察到这个IPv4地址的第一个部分为192,所以它是C类IP地址,既然是C类地址,那么它的子网掩码就是255.255.255.0,我们可以观察到这个子网掩码前三个部分都是255,也就是每个部分表示成十进制都是8个1,也就是满了,IP地址每个部分其实取不到255,所以IP地址与和子网掩码进行与运算的时候,前面几个部分肯定取决于IP地址,因为0和1相与等于0,也就是说我们要判断0有几个,只有IP地址中的前面几个部分有0出现,所以子网掩码255的部分我们看IP地址相对应的部分就好。
如下↓:
IP地址:192.168.10.1 11000000.10101000.00001010.00000001
子网掩码:255.255.255.0 11111111.11111111.11111111.00000000
网段: 192.168.10.0/24 11000000.10101000.00001010.00000000
等等!为什么网段后面有一个/24呢?其实就看子网掩码有几位,三个部分255,那就是三乘以八等于24,所以如果是B类子网掩码,那网段后面就/16就好。
nmap 192.168.10.0/24 扫描同一个网段中,得出是否存在其他的主机或者服务器——C段扫描(渗透部分)
IP地址分为两个部分:网络位和主机位
A类地址,默认情况下第一个部分是网络位,后三位是主机位
B类地址,默认情况下前两个部分是网络位,后两个部分是主机位
C类地址,默认情况下前三个部分是网络位,最后一个部分是主机位
在一个网段(网络号)中,第一个地址被称为网络地址,最后一个位置被称为广播地址。
举个栗子:有一个网段是192.168.10.0/24 地址范围为:192.168.10.0——192.168.10.255
所以对于这个网段来说
网络地址:192.168.10.0
广播地址:192.168.10.255
在通信的过程中,网络地址和广播地址是不能用于通信的,所以能够给主机或者服务器使用的地址为:192.168.10.1——192.168.10.254
网关:是局域网的边界,是网段中一个特殊的IP地址(所以网关是一个IP地址) 可能是三层交换机/路由器/安全设备的IP地址,服务器和电脑都得需要网关
习惯上来说:网段中最后一个或者最后一个IP地址作为网关 192.168.10.1 -- 192.168.10.254
注意哦!这里是排除了网络地址和广播地址
IP地址分类:
公有地址:花钱去申请,找运营商申请 使用场合:公网 如果直接使用共有地址,就可以直接上网
私有地址:不需要申请,随便用,免费的 使用场合:内网 如果直接使用了私有地址,就不能上网
A类私有地址范围:10.0.0.0 -- 10.255.255.255
B类私有地址范围:172.16.0.0 -- 172.31.255.255
C类私有地址范围:192.168.0.0 -- 192.168.255.255
如果这三个范围都不在呢???那就是公有地址咯。
IP地址来源:
自动获取:必须在网络中部署DHCP服务器 优点:方便,便捷 缺点:不安全
手动配置:管理员手动写在设备的网卡上 优点:安全,好管理 缺点:不方便,麻烦
主类:默认的A、B、C类(网段类型) (子网掩码默认)
A类:10.0.0.0/8
B类:172.16.0.0/16
C类:192.168.10.0/24
子网:在一个大的主类里面,分成多个小的子网
举个栗子:
192.168.10.0/24 这是一个C类主类,只有一个网络号,这个网络号有256个IP地址,即192.168.10.0——192.168.10.255
美国 A类网段 11.0.0.0/8 有2^24IP地址
中国 C类网段 192.168.10.0/24 有2^8IP地址
公司:5个部门 每个部门有20号员工
只有一个网段:192.168.10.0/24
该怎么分呢?引入我们的VLSM
VLSM -- 中文名字:可变长子网掩码 思想:网络位找主机位借位
对于C类网段来说,前三个部分是网络位,最后一个位置是主机位。
举个例子:一个C类网段 192.168.10.0/24 那么它的子网掩码是:
11111111.11111111.11111111.00000000
如果借三位的话:2^3=8个子网 借二位的话:2^2=4个子网
我们现在有个五个部分,至少要有五个子网,所以我们选择借三位。
网络位找主机位借完三位之后,变成了11111111.11111111.11111111.11100000
每个子网中有几个IP地址:2^5=32个IP地址 每个子网中可用的IP地址有32-2=30个(头尾不能用)
第一个子网:192.168.10.0 -- 192.168.10.31 网络号:192.168.10.0/27 (注意是/27)
第二个子网:192.168.10.31 -- 192.168.10.63 网络号:192.168.10.31/27
第三个子网:192.168.10.64 -- 192.168.10.95 网络号:192.168.10.64/27
.......
总结:有几个子网:看借走了几位 比如借走了3位 2^3=8个子网
每个子网有几个IP:看剩下几个0 剩下5个0 2^5=32个IP地址
没分之前叫主类,分完之后叫子网。
192.168.200.30/28
11111111.11111111.11111111.11110000
请问借了几位?——借走了4位
借完位后,每个子网中有几个IP地址?——2^4=16个IP地址 可用的IP地址个数 16-2=14个
该IP地址所属的子网,网络地址和广播地址各是多少?
第一个子网:192.168.200.0 -- 192.168.200.15
第二个子网:192.168.200.16 -- 192.168.200.31
网络地址:192.168.200.16/28
广播地址:192.168.200.31/28
ARP协议:地址解析协议
在通信的过程中,需要两种地址,MAC地址和IP地址 缺一不可
在通信过程中,一般已知的是IP地址,如果想得到对方的MAC地址,必须通过ARP协议进行解析。
观察这个图:
我们的目标是,实现PC1和PC3的通信,首先我们知道PC3的IP地址是什么,也就是192.168.10.3,PC3的IP地址就相当于快递的地址,但是我们不知道PC3的MAC地址,这个时候就要借助ARP,发送ARP的报文。
源地址表示是谁发送的,我们先把源地址进行封装。目标地址就是要发送给谁。
为什么目标MAC地址不是3-3-3-3-3-3呢???
因为我们还不知道目标的MAC地址,所以目标MAC地址是FF-FF-FF-FF-FF-FF,广播帧,所以就是每个PC都发,询问PC3在哪里。如果其他PC接收到了ARP报文,就直接把报文丢了,因为IP地址不对应,所以就没有回复。PC3在接收到ARP报文之后,就会回复PC1。
为什么我们知道目标MAC地址呢?
因为PC1把数据发给PC3的时候,已经带上了自己的MAC地址,所以PC3知道目标MAC地址,也就是PC1的MAC地址。因为目标明确,就是要发给PC1,所以这是个单播帧。
所以:ARP请求包——广播帧 ARP响应包——单播帧
那么问题又来了,PC1已经知道了PC3的IP地址,为什么还要发给所有PC?
原因是交换机只能识别MAC地址,而不能识别IP地址。只有路由器能够识别IP地址,交换机看不懂IP地址。
ARP是一个比较单纯的协议,在局域网攻击中,通常被利用,比较危险。
类似于ARP攻击/中间人攻击/局域网欺骗攻击/断网攻击 这些攻击都是借助ARP协议
在服务器和PC中,有一张表——ARP绑定表
Windows查看方法:arp -a 就可以看到arp的绑定信息。
Linux查看方法:arp -a 或者 arp -n
arp欺骗报文攻击:
Windows虚拟机中测试与百度之间的通信,-t是持续的意思。ping -t www.baidu.com
ping值有响应,持续通信。说明windows和百度之间可以通信。
这个时候使用kali对Windows进行攻击。
先来查看PC的IP地址是多少。 ipconfig
我们得到IP地址是10.0.0.129,网关是10.0.0.2,这个时候利用kali进行ARP攻击
arp攻击通用格式 arpspoof -i eth0 -t 10.0.0.129 10.0.0.2
eth0是kali网卡的名字 -t指的是目标 -i指的是网卡 -t后接目标的IP地址和网关 arpspoof相当于arp攻击的一种工具。网卡名字怎么查呢?——ipconfig/all
描述后面接的就是网卡的名字。
攻击完之后 ,我们再来看看PC端
出现了 Request timed out.请求超时。这个时候如果我们的PC像访问百度的服务器,想连外网,就连不上了,因为kali正在执行arp攻击。这个时候我们停止PC连接,arp—a查看绑定信息。
我们发现10.0.0.2和10.0.0.165的MAC地址是一样的。之前提到过,MAC地址的特点:具有唯一性。就是因为被欺骗了,才会导致MAC地址一样。
这个时候kali停止攻击,PC再次arp-a 看看
会发现两个MAC地址不一样了。看如下图解:
PC想将数据通过网关发送给百度,PC是发送方,kali作为攻击方,开始的时候arp绑定表一切正常,kali实施攻击之后,给PC发送欺骗报文,网关的MAC地址被修改了,被修改成了b-b-b-b-b-b-,也就是被修改成了kali的MAC地址,arp协议是一个单纯的协议,它相信了,更新了arp绑定表,数据还会发给网关嘛?当然不会,其实是把数据丢给kali,并不是发给网关。kali可以把你的数据扔掉,导致PC上不了网。这就是所谓的ARP欺骗攻击。
DNS:域名解析服务
将域名解析成IP地址
域名:www.baidu.com
访问网站可以通过域名访问,也可以通过IP地址进行访问
实际上跟网站服务器通信,其实是通过IP地址,而不是通过域名。
客户端请求服务端,输入www.baidu.com,想要访问百度,真正来讲它不是把请求发给百度服务器,而是去寻找域名解析服务器,去询问域名解析服务器,www.baidu.com这个域名所对应的IP地址是多少,域名解析服务器回应告诉客户端百度的IP地址是什么。
DNS分为公网的DNS服务器和本地的DNS服务器
公网DNS服务器:运营商、企业、政府.....
本地DNS服务器:Windows -- C:WindowsSystem32driversetc 在该目录下的hosts文件
Linux -- /etc/hosts
查看hosts文件
观察到所有的信息都是IP和域名对应。
cat/etc/hosts 查看/etc/hosts里面的内容 cat是查看的意思
ping www.baidu.com得到回复,得到IP地址为14.215.177.39(这个时候找的是公网上的DNS服务器)
在本地的DNS服务器上做编辑。
将127.0.0.1与www.baidu.com这个域名做了绑定。
查看绑定是否成功
再次去ping www.baidu.com
得到的回复变成了127.0.0.1
问题来了——
公网DNS服务器 14.215.177.39 www.baidu.com
本地DNS服务器 127.0.01 www.baidu.com
如果公网DNS服务器有这个绑定信息,本地DNS服务器也有这个绑定信息。
请问:优先解析的是本地的DNS服务器还是公网的DNS服务器?
回答:优先解析本地的DNS服务器。 如图ping完之后的结果就知道了。
ICMP:因特网控制报文协议
主要用来检测网络可达性还有主机连通性的一些问题
它有两个子协议:
ping ping www.baidu.com ping 14.215.177.38 判断是否可以通信
tracert 可以用来作为路径跟踪 会把沿途的每条路径进行展示——(项目排错)
tracert www.baidu.com tracert 20.100.1.1
什么叫路径跟踪呢?
如果只是简单的ping话,若得到了request timeout超时信息,你无法知道问题出在哪里
tracert可以对沿途得到的每条路径进行展示,方便查找哪里出错。
最后得到了百度的IP地址——14.215.177.39,相当于tracert会给你展示到14.215.177.39的全过程。
IPv6:
IPv4发展史:由32位的二进制数组成,一共有2^32个IPv4地址(约等于42亿个)表示形式:三点分10进制 192.168.1.1
看着很多,其实不够用啦。所以发展了IPv6.
IPv6是由128位的二进制数组成,所以一共有2^128次方个IPv6地址(约等于3.4*10^38个)
巨大的地址空间,特点:地址取之不尽用之不竭。
表示形式:冒号分16进制,一共分为8个部分,每个部分16位二进制。对大小写字母是不敏感的。
2001:0012:0120:0abc:0000:0000:abc1:0000
240e:97c:0:401::11
IPv6提出了简写规则:每个部分的前导零可以省略,连续的0可以使用::进行代替,一个IPv6地址中,只能有一个::
举个栗子:
就拿上面这个IPv6这个地址来看,2001:0012:0120:0abc:0000:0000:abc1:0000,该怎么简写呢???
化简得到:2001:12:120:abc::abc1:0 最后一个部分为什么不能写成::,因为前面已经有一个双冒号了,一个IPv6地址中,只能由一个双冒号。如果我一定要::写在最后一个部分呢?
也可以,化简得到:2001:12:120:abc:0:0:abc1:: 所以化简结果不唯一。
再来举个栗子:
拿上面第二个IPv6地址来看,240e:97c:0:401::11,这是个简写的IPv6地址,该怎么补全它呢?
补全得到:240e:097C:0000:0401:0000:0000:0000:0011
④传输层:
关注的是两个协议:TCP和UDP(大协议,里面又有很多的小协议)
TCP:传输控制协议(涉及比较多) 可靠的协议,面向连接,一般是用于重要、比较大的数据传输
UDP:用户数据报协议 尽力而为,不可靠,无连接,不需要为可靠性付出多余的开销,所以传输速度比较快。一般用于语音、视频流量
TCP和UDP都有各自对应的端口,一般都是从1——65535
TCP的可靠性
①TCP三次握手
主机A发送请求报文SYN,请求与主机B建立联系,主机B回复两个报文,一个是请求报文SYN,还有一个是确认报文ACK。注意到主机A发送请求包的时候,带有一个序列号SEQ=100,这个时候主机B确认ACK=101,在SEQ的基础上+1,表示确认。然后主机B再给A发送请求包的时候,A收到请求包,ACK=301。确认号总是在序列号的基础上+1。
②TCP的流量控制
发送方先发了三个数据,但接收方缓冲区已满,就给发送方发一个停止,让发送方停止传输。然后接收方先处理自己的网段,然后再告诉发送方可以继续传输数据。
③TCP的确认机制
窗口大小=1,就一次发一个数据,窗口大小=2,就一次发两个数据。为了提高效率,可以扩大窗口大小,比如让窗口大小=3。
④TCP的窗口机制
如果出现发送方和接收方窗口大小不匹配的情况
发送方先传三个数据,但接收方处理不过来,丢失了数据段3,发送了ACK3,告诉发送方一次发送两个数据就好,调整传输数据的快慢。
⑤TCP的序列号和确认号(确认机制)
请求包——序列号为1
确认包——确认号为2
⑤应用层
关注的是应用程序:游戏、QQ微信、迅雷、APP.......
应用层的应用程序对应传输层的协议+传输层协议的端口
TCP:80 HTTP 127.0.0.1:80 代表访问的是http服务 如果改端口了,后面就不能:80而是要改成其他的端口。
假设服务器IP地址为100.100.100.100 在服务器上搭建了一个网站。正常情况下通过100.100.100.100就可以访问到这个网站。但如果修改了端口,把默认的80端口,修改成8090,那就要访问100.100.100.100:8090。
TCP:22 SSH
TCP:21 FTP
TCP:23 Telnet(远程登录协议)
TCP: 443 HTTPS
..........
传输层的协议加上传输层协议对应的端口映射到应用层的应用程序。
安全测试,信息收集,就得收集服务器开放的端口 端口对应的服务
安全攻击 利用服务器开放的端口对服务器做攻击
最后
以上就是温柔乐曲为你收集整理的网络通信安全部分笔记一针对计算计算机网络进行分类:TCP/IP协议栈ICMP:因特网控制报文协议 TCP的可靠性的全部内容,希望文章能够帮你解决网络通信安全部分笔记一针对计算计算机网络进行分类:TCP/IP协议栈ICMP:因特网控制报文协议 TCP的可靠性所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复