不闻不若闻之,闻之不若见之,见之不若知之,知之不若行之。 —— 战国时期·荀子 《荀子·儒效》
ABC类地址
一、ABC类地址
按照TCP/IP协议规定,IP地址用二进制来表示,每个IP地址长32bit即4个字节。一个采用二进制形式的IP地址是一串很长的数字,为了方便人们的理解和使用,IP地址经常被写成十进制的形式,中间使用符号“.”分开不同的字节。为了便于寻址和层次化的构造网络,IP地址被分为A、B、C、D、E五类,商业应用中只用到A、B、C三类。
A类地址:网络标识由第一组8位二进制数表示,网络中的主机标识占3组8位二进制数。
特点是网络标识的第一位二进制数取值必须为“0”
数字0和127不作为A类地址,数字127保留给内部回送函数,而数字0则表示该地址是本地宿主机,不能传送
基于以上两点可知A类地址第一个字节的表示范围为00000001
~
011111110,即1~
126A类地址有126个网段,每个网络大约允许有1670万(2^24 - 2)台主机,通常分配给拥有大量主机的网。
10.X.X.X是私有地址,范围:
10.0.0.0~10.255.255.255
127.X.X.X是保留地址,做循环测试使用。
B类地址:网络标识由前两组8位二进制数表示,网络中的主机标识占两组8位二进制数。
- 特点是网络标识的前两位二进制数取值必须为“10”
- 基于其特点可知第一个字节的范围是10000000
~
101111111,即128~
191 - B类地址允许有16384(1011 1111 1111 1111 - 1000 0000 0000 0000) + 1个网段,每个网络允许有65533(2^16 - 2)台主机,适用于结点比较多的网络(如区域网)。
- 172.16.0.0
~
172.31.255.255是私有地址。 - 169.254.X.X是保留地址。
- 如果你的IP地址是自动获取IP地址,而你在网络上有没有找到可用的DHCP服务器,就会得到其中一个IP地址。
C类地址:网络标识由前3组8位二进制数表示,网络中主机标识占1组8位二进制数。
- 特点是网络标识的前3位二进制数取值必须为“110”
- 基于其特点可知第一个字节的范围是11000000
~
11011111,即192~
223 - 有(1101 1111 1111 1111 1111 1111 - 1100 0000 0000 0000 0000 0000) + 1个网段,有254(2^8 - 2)台主机,适用于结点比较少的网络(如校园网)
- 192.168.X.X是私有地址,其范围:
192.168.0.0~192.168.255.255
互联网上的IP地址统一由一个叫IANA(Internet Assigned Numbers Authority,互联网网络号分配机构)的组织来管理。根据用途和安全性级别的不同,IP地址还可以大致分为两类:公共地址和私有地址。公共地址在Internet中使用,可以在Internet中随意访问。私有地址只能在内部网络中使用,只有通过代理服务器才能与Internet通信。
保留的IP地址段不会在互联网上使用,因此与广域网相连的路由器在处理保留IP地址时,只是将该数据包丢弃处理,而不会路由到广域网上去,从而将保留IP地址产生的数据隔离在局域网内部。
二、子网掩码
- 子网掩码(subnet mask)又叫网络掩码、地址掩码、子网络遮罩,它是一种用来指明一个IP地址的哪些位标识的是主机所在的子网,以及哪些位标识的是主机的位掩码。
- 子网掩码的格式永远都是一个32位的2进制数,其对应网络地址的所有位都置为1(前面是一连串的1),对应于主机地址的所有位都置为0(后面是一连串的0)
- 子网掩码左边是网络标识位,均为二进制1,右边是主机标识位,均为二进制0。
- 它目的是为了让掩码与IP地址做按位与运算时用0遮住原主机数,而不改变原网络段数字,而且很容易通过0的位数确定子网的主机数
- 子网掩码不能单独存在,它必须结合IP地址一起使用
- 子网掩码的作用是将某个IP地址划分成网络地址和主机地址两部分,并说明该IP地址是在局域网上,还是在广域网上
为了让人们直观的看到子网掩码,有一种方法只需要将一个斜线放在IP地址后面,接着用一个十进制的数字用以表示网络标识的位数,类似这样:192.0.2.12/30,这样就很容易知道子网掩码有30个1,2个0。
三、位运算
- 按位与
&
:0&0=0; 0&1=0; 1&0=0; 1&1=1
- 按位或
|
:0|0=0; 0|1=1; 1|0=1; 1|1=1
- 按位异或
^
:0^0=0; 0^1=1; 1^0=1; 1^1=0
- 按位取反
~
:~1=0; ~0=1
- 左移运算符
<<
:a=a<<1将a的二进制位左移1位,右补0,左移1位后a=a*2
,相当于乘以2 - 右移运算符
>>
:a=a>>1将a的二进制位右移1位,左补0或补1,得看被移数是正还是负
,相当于除以2
类别 | 子网掩码的二进制数值 | 子网掩码的十进制数值 |
---|---|---|
A类地址 | 11111111 00000000 00000000 00000000 | 255.0.0.0 |
B类地址 | 11111111 11111111 00000000 00000000 | 255.255.0.0 |
C类地址 | 11111111 11111111 11111111 000000000 | 255.255.255.0 |
四、网关
众所周知,从一个房间走到另一个房间,必然要经过一扇门。同样地,从一个网络向另一个网络发送信息,也必须经过一道“关口”,这道关口就是网关(Gateway),就是一个网络连接到另一个网络的“关口”,也就是网络关卡。
- 网关(Gateway)又称网间连接器、协议转换器。默认网关在网络层上以实现网络互连,是最复杂的网络互连设备,仅用于两个高层协议不同的网络互连。
- 网关的结构也和路由器类似,不同的是互连层
- 网关既可以用于广域网互连,也可以用于局域网互连
- 通常指的网关就是路由器的IP
那么网关到底是什么呢?网关实质上是一个网络通向其他网络的IP地址。
比如有网络A和网络B,网络A的IP地址范围为192.168.1.1
~
192.168.1.254,子网掩码为255.255.255.0;网络B的IP地址范围为192.168.2.1~
192.168.2.254,子网掩码为255.255.255.0。在没有路由器的情况下,两个网络之间是不能进行TCP/IP通信的,即使是两个网络连接在同一台交换机(或集线器)上,TCP/IP协议也会根据子网掩码(255.255.255.0)判定两个网络中的主机处在不同的网络里。而要实现这两个网络之间的通信,则必须通过网关。如果网络A中的主机发现数据包的目的主机不在本地网络中,就把数据包转发给它自己的网关,再由网关转发给网络B的网关,网络B的网关再转发给网络B的某个主机。
所以说,只有设置好网关的IP地址,TCP/IP协议才能实现不同网络之间的相互通信。那么这个IP地址是哪台机器的IP地址呢?网关的IP地址是具有路由功能的设备的IP地址,具有路由功能的设备有路由器、启用了路由协议的服务器(实质上相当于一台路由器)、代理服务器(也相当于一台路由器)。
五、路由器
路由器是连接两个或多个网络的硬件设备,在网络间起网关的作用,是读取每一个数据包中的地址然后决定如何传送的专用智能性的网络设备。
- 它能够理解不同的协议,例如某个局域网使用的以太网协议,因特网使用的TCP/IP协议。这样,路由器可以分析各种不同类型网络传来的数据包的目的地址,把非TCP/IP网络的地址转换成TCP/IP地址,或者反之;再根据选定的路由算法把各数据包按最佳路线传送到指定位置。所以路由器可以把非TCP/IP网络连接到因特网上。
路由器的功能就是将不同的子网之间的数据进行传递,具体功能有以下几点:
- 实现IP、TCP、UDP、ICMP等网络的互连
- 对数据进行处理。收发数据包,具有对数据的分组过滤、复用、加密、压缩及防护墙等各项功能
- 依据路由表的信息,对数据包下一传输目的地进行选择
- 进行外部网关协议和其他自制域之间拓扑信息的交换
- 实现网络管理和系统支持功能
ARP-DHCP-NAT-ICMP
一、ARP
ARP
协议,全称Address Resolution Protocol
,即地址解析协议,作用是根据IP
地址获取物理地址,也称MAC
地址(唯一,通常由设备厂商分配)。源主机发送信息时,将包含目标IP
地址的ARP
请求广播到网络上的所有主机,并接收返回消息以此确定目标的物理地址。源主机收到返回消息后将该IP地址和物理地址存入本机ARP
缓存中并保留一定时间(每台主机都会在自己的ARP缓冲区中简历一个ARP列表用于存储IP地址与MAC地址的对应关系),下次请求时直接查询ARP
缓存以节约资源。
ARP
欺骗,又称ARP
毒化、ARP
攻击,是针对以太网ARP
协议的一种攻击技术,通过欺骗局域网内访问者PC
的网关MAC
地址,使访问者PC
错以为攻击者更改后的MAC
地址是网关的MAC
,导致网络不通。
地址解析协议是建立在网络中各个主机互相信任的基础上的,网络上的主机可以自主发送ARP应答消息,其他主机收到应答报文时不会检测该报文的真实性就会将其记入本机ARP缓存。由此攻击者就可以向某一主机发送伪ARP应答报文,使其发送的信息无法到达预期的主机或到达错误的主机,这就构成了一个ARP欺骗。
主机发送信息时将包含目标IP地址的ARP请求广播到局域网络上的所有主机,并接收返回消息,以此确定目标的物理地址;收到返回消息后将该IP地址和物理地址存入本机ARP缓存中并保留一定时间,下次请求时直接查询ARP缓存以节约资源。
地址解析协议是建立在网络中各个主机互相信任的基础上的,局域网络上的主机可以自主发送ARP应答消息,其他主机收到应答报文时不会检测该报文的真实性就会将其记入本机ARP缓存;由此攻击者就可以向某一主机发送伪ARP应答报文,使其发送的信息无法到达预期的主机或到达错误的主机,这就构成了一个ARP欺骗。
ARP命令可用于查询本机ARP缓存中IP地址和MAC地址的对应关系、添加或删除静态对应关系等。相关协议有RARP、代理ARP。NDP用于在IPv6中代替地址解析协议。
- ARP工作过程如下:
- 检查自己的
ARP
列表是否存该目标主机IP
地址对应的MAC
地址 - 如果存在直接将数据包发送到目标主机的
MAC
地址 - 如果不存在则向本地网段发起一个
ARP
请求的广播包,用于查询目标主机对应的MAC
地址。 - 网络中所有的主机收到这个ARP请求之后会检查数据包中的目的IP是否与自己的IP地址一致,如果不同就忽略此数据包
- 如果相同则该主机就会将发送端的
MAC
地址与IP
地址添加到自己的ARP
列表中。- 如果
ARP
列表中已经存在该IP
地址的相关信息则将其覆盖掉
- 如果
- 目标主机接着给源主机发送一个
ARP
响应包,告诉源主机自己的MAC
地址。 - 源主机接收
ARP
响应包后,将目标主机的IP
地址和MAC
地址添加到自己的ARP列表中,并利用此信息开始数据的传输。- 如果源主机一直都没有收到
ARP
响应包,则表示ARP查询失败,也就无法进行通讯。
- 如果源主机一直都没有收到
- 使用
- 查看ARP缓存
arp -a
- 查看ARP缓存
1 | ? (10.2.182.1) at a4:4c:11:55:94:3f on en0 ifscope [ethernet] |
删除IP为
10.2.182.26
对应的ARP缓存arp -d 10.2.182.26
添加IP为
10.2.182.26
对应的ARP缓存arp -s 10.2.182.26 8c:86:1e:94:68:79
二、RARP
RARP
,全称Reverse Address Resolution Protocol
或Reverse ARP
,即反向地址转解析议,顾名思义它跟ARP
的功能是相反的,ARP
是实现IP
地址到MAC
地址的映射,而RARP
是实现MAC
地址到IP
地址的映射,它允许局域网的物理机器从网关服务器的ARP
表或者缓存上请求其IP
地址。网络管理员在局域网的网关路由器里创建一个表以映射MAC
地址和IP
地址。当设置一台新的机器时,其RARP
客户机程序需要向路由器上的RARP
服务器请求相应的IP
地址,RARP服务器将会返回IP
地址给机器(假设表里有此记录),此机器就会存储起来以便日后使用。
RARP可以使用于以太网、光纤分布式数据接口及令牌环LAN等,常用于无盘工作站(即没有存储相关的设备),应用范围较小,一般多使用功能一样的DHCP协议,DHCP功能更强大。
虽然发送方发出的是广播信息,RARP规定只有RARP服务器能产生应答。许多网络指定多个RARP服务器,这样做既是为了平衡负载也是为了作为出现问题时的备份。
RARP工作过程如下:
- 源主机发送一个
RARP
广播,在此广播包中声明自己的MAC
地址并且请求任何收到此请求的RARP
服务器分配一个IP地址 RARP
服务器收到此请求后检查其RARP
列表,查找该MAC地址对应的IP地址- 如果存在,
RARP
服务器就给源主机发送一个响应数据包并将此IP
地址提供给源主机使用- 如果不存在,
RARP
服务器对此不做任何的响应
- 如果不存在,
- 源主机收到
RARP
服务器的响应信息,利用得到的IP
地址进行通讯- 如果一直没有收到
RARP
服务器的响应信息,表示初始化失败。
- 如果一直没有收到
ARP和RARP请求是广播方式,应答都是单播方式。
三、DHCP
DHCP
,全称Dynamic Host Configuration Protocol
,动态主机配置协议,是一个局域网的网络协议,由服务器控制一段IP
地址范围,客户机登录服务器时就可以自动获得服务器分配的IP
地址和子网掩码。它使用UDP
协议工作,主要有两个用途:一是给内部网络或网络服务供应商自动分配IP
地址,二是作为用户或者内部网络管理员对所有计算机作中央管理的手段。
四、NAT
NAT
,全称Network Address Translation
,即网络地址转换,一种将私有(保留)地址转化为公有IP地址的技术。当在专用网内部的一些主机本来已经分配到了本地IP地址(即仅在本专用网内使用的专用地址),但现在又想和因特网上的主机通信(并不需要加密)时,可使用NAT方法。这种方法需要在专用网连接到因特网的路由器上安装NAT软件,装有NAT软件的路由器叫做NAT路由器,它至少有一个有效的外部全球IP地址。这样,所有使用本地地址的主机在和外界通信时,都要在NAT路由器上将其本地地址转换成全球IP地址,才能和因特网连接。
NAT的出现在一定程度上解决了IPv4地址不足的问题。
五、ICMP
ICMP
,全称Internet Control Message Protocol
,即Internet控制报文协议,用于在IP主机、路由器之间传递控制消息。控制消息是指网络通不通、主机是否可达、路由是否可用等网络本身的消息,这些控制消息虽然并不传输用户数据,但是对于用户数据的传递起着重要的作用。
六、RIP
RIP
,Routing Information Protocol
,即路由信息协议,是一个内部网关协议,一种基于距离矢量的路由协议,以路由跳数作为计数单位的路由协议,适合用于比较小型的网络环境。它选择路由的度量标准是跳数,最大跳数是15跳,如果大于15跳,它就会丢弃数据包。
六、参考
CDN
一、概念
CDN的全称是Content Delivery Network
,即内容分发网络。CDN是构建在网络之上的内容分发网络,依靠部署在各地的边缘服务器,通过中心平台的负载均衡、内容分发、调度等功能模块,使用户就近获取所需内容,降低网络拥塞,提高用户访问响应速度和命中率。
CDN的关键技术主要包括了节点调度、节点负载均衡和内容存储、分发、管理技术。
二、原理解析
传统web的访问过程
- 用户在浏览器中输入要访问的域名
- 浏览器向域名解析服务器发出解析请求,获得此域名对应的IP地址
- 浏览器利用所得到的IP地址,向该IP对应的服务器发出请求
- 服务器响应此请求,将数据传输至浏览器
- 浏览器渲染页面呈现给用户
CDN加速过程
- 用户在浏览器中输入要访问的域名
- 浏览器向域名解析服务器发出解析请求
- 浏览器拿到域名对应的CNAME记录
- 由于CDN对域名解析过程进行了调整,浏览器(一般)得到的是该域名对应的CNAME记录
- 浏览器再次对获得的CNAME域名进行解析能得到缓存服务器实际的IP地址。
- 在此过程中,全局负载均衡DNS解析服务器会根据用户端的源IP地址(如通过地理位置(北京上海等)、接入网类型(电信网通等))将用户的访问请求定位到离用户路由最短、位置最近、负载最轻的Cache节点(缓存服务器)上,实现就近定位。
- 定位优先原则可按位置、可按路由、也可按负载等。
- 浏览器再次解析CNAME得到该域名CDN缓存服务器的IP地址
- 浏览器向缓存服务器发出访问请求
- 缓存服务器根据浏览器提供的域名,通过Cache内部专用DNS解析得到此域名源服务器的真实IP地址,再由缓存服务器向此真实IP地址发送请求
- 缓存服务器从真实IP地址得到内容后,一方面在本地进行保存以备以后使用,另一方面把得到的数据发送到客户端浏览器以完成此次请求
- 用户端得到由缓存服务器传回的数据后显示出来
CDN是在用户和服务器之间增加Cache层,通过接管DNS将用户的请求引导到Cache节点而不是服务器源站点。
三、参考
DNS
一、概念
DNS是域名系统(Domain Name System)的缩写,是根据提供的域名来查询相应的IP地址。在Internet上域名与IP地址之间是一一对应的,域名虽然便于人们记忆,但机器之间只能互相认识IP地址,它们之间的转换工作称为域名解析,域名解析需要由专门的域名解析服务器来完成,DNS就是进行域名解析的服务器。
二、DNS服务器
域名到IP地址的解析是由分布在因特网上的许多域名服务器程序共同完成的。域名服务器程序在专设的结点上运行,而人们也常把运行域名服务器程序的机器称为域名服务器。根据其所负责管辖的范围,又分为:
根域名服务器:最高层次的域名服务器,所有的根域名服务器都知道所有的顶级域名服务器的域名和IP地址。
- 不管是哪一个本地域名服务器,若要对因特网上任何一个域名进行解析,只要自己无法解析,就首先求助根域名服务器。
- 在很多情况下,根域名服务器并不直接把待查询的域名直接解析出IP地址,而是告诉本地域名服务器下一步应当找哪一个顶级域名服务器进行查询。
顶级域名服务器:负责管理在该顶级域名服务器注册的二级域名。
权限域名服务器:负责一个“区”的域名服务器。一个服务器所负责管辖(或有权限)的范围叫做区(zone),各单位根据具体情况来划分自己管辖范围的区,但在一个区中的所有节点必须是能够连通的。每一个区设置相应的权限域名服务器,用来保存该区中的所有主机到域名IP地址的映射。
- DNS服务器的管辖范围不是以“域”为单位,而是以“区”为单位。
本地域名服务器:当一个主机发出DNS查询请求时,这个查询请求报文就发送给本地域名服务器。
三、域名分级
四、查询过程
以在地址栏输入baidu.com为例:
系统那个检查本地hosts文件是否存在域名映射,如果存在则域名解析到此完成
如果本地hosts文件不存在映射关系,则会查询本地DNS缓存,如果存在则域名解析完成
如果本地DNS缓存没有命中,则系统向本地DNS服务器进行递归查询,如果存在则域名到此解析完成
如果本地DNS服务器不存在此记录,本地域名服务器向一个根域名服务器迭代查询,根域名服务器告诉本地域名服务器下一次应查询的顶级域名服务器IP地址
本地域名服务器向顶级域名服务器进行查询,如果存在则域名解析完成,否则告诉本地域名服务器下一步应查询的权限服务器的IP地址
本地域名服务器向权限域名服务器进行查询,如果域名进行了解析,此步骤肯定能查到baidui.com对应的IP地址,至此解析完成
五、DNS的记录类型
- 域名和IP之间的对应关系,称为“记录”(record)。根据使用的目的不同,又分为不同的类型,常见的DNS记录类型如下:
- A:地址记录(Address),返回域名指向的IP地址。
- NS:域名服务器记录(Name Server),返回保存下一级域名信息的服务器地址。该记录只能设置为域名,不能设置为IP地址。
- MX:邮件记录(Mail eXchange),返回接收电子邮件的服务器地址。
- CNAME:规范名称记录(Canonical Name),返回另一个域名,即当前查询的域名是另一个域名的跳转。
- PTR:逆向查询记录(Pointer Record),只用于从IP地址查询域名。
防火墙
一、基础
防火墙一词来源于建筑学中,人们通过在建筑中砌起一道墙,一旦发生火灾,它能够防止火势蔓延到别的房间,从而起到一定的防护作用。
在现代互联网技术中,防火墙已成为一种必不可少的安全组件(硬件、软件)。它通过在专有网络和公网之间搭建一道屏障,通过包过滤和其他技术对来自互联网安全未知的数据惊醒拦截防止恶意请求进入专有网络,或限制请求不明来源的超链接等防止内部用户数据泄露等,从而起到保护的作用。
分类
- 包过滤(Packet filtering):工作在网络层,仅根据数据包头中的IP地址、端口号、协议类型等标志确定是否允许数据包通过。
- 应用代理(Application Proxy):工作在应用层,通过编写不同的应用代理程序,实现对应用层数据的检测和分析。
- 状态检测(Stateful Inspection):工作在
2~4
层,访问控制方式与1同,但处理的对象不是单个数据包,而是整个连接,通过规则表和连接状态表,综合判断是否允许数据包通过。 - 完全内容检测(Compelete Content Inspection):工作在
2~7
层,不仅分析数据包头信息、状态信息,而且对应用层协议进行还原和内容分析,有效防范混合型安全威胁。
常用拦截规则
- 限制IP
- 限制端口
- 限制域名
- 限制协议(HTTP/TCP等)
- 限制关键字
- 限制程序