计算机网络基础(下)

122 阅读15分钟

1 Mac地址

MAC称为物理地址,也叫硬件地址,用来定义网络设备的位置,MAC地址是网卡出厂时设定的,是固定的(但可以通过在设备管理器中或注册表等方式修改,同一网段内的MAC地址必须唯一)。

MAC地址采用十六进制数表示,长度是6个字节(48位),分为前24位和后24位。

MAC地址对应于OSI参考模型的第二层数据链路层,工作在数据链路层的交换机维护着计算机MAC地址和自身端口的数据库,交换机根据收到的数据帧中的目的MAC地址字段来转发数据帧。

2 IP地址

常见的IP地址分为IPv4与IPv6两大类,当前广泛应用的是IPv4,目前IPv4几乎耗尽,下一阶段必然会进行版本升级到IPv6;

IP地址是以网络号和主机号来标示网络上的主机的,我们把网络号相同的主机称之为本地网络,网络号不相同的主机称之为远程网络主机

本地网络中的主机可以直接相互通信;远程网络中的主机要相互通信必须通过本地网关(Gateway)来传递转发数据。

IP地址对应于OSI参考模型的第三层网络层,工作在网络层的路由器根据目标IP和源IP来判断是否属于同一网段,如果是不同网段,则转发数据包。

2.1 IP地址格式和表示

IP地址(IPv4)由32位二进制数组成,分为4段(4个字节),每一段为8位二进制数(1个字节)。每一段8位二进制,中间使用英文的标点符号.隔开。由于二进制数太长,为了便于记忆和识别,把每一段8位二进制数转成十进制,大小为0至255。IP地址的这种表示法叫做点分十进制表示法

IP地址表示为:xxx.xxx.xxx.xxx

举个栗子:210.21.196.6就是一个IP地址的表示。

计算机的IP地址由两部分组成

  1. 网络标识
  2. 主机标识

同一网段内的计算机网络部分相同,主机部分不能同时重复出现。

路由器连接不同网段,负责不同网段之间的数据转发,交换机连接的是同一网段的计算机。

通过设置网络地址和主机地址,在互相连接的整个网络中保证每台主机的IP地址不会互相重叠,即IP地址具有了唯一性。

2.2 IP地址分类详解

IP地址分A、B、C、D、E五类,其中A、B、C这三类是比较常用的IP地址,D、E类为特殊地址。

image.png

1 A类地址 一个A类IP地址由1字节的网络地址和3字节主机地址组成,它主要为大型网络而设计的,网络地址的最高位必须是“0”, 地址范围从1.0.0.0 到127.0.0.0)。可用的A类网络有127个,每个网络能容纳16777214个主机。其中127.0.0.1是一个特殊的IP地址,表示主机本身,用于本地机器的测试。

注: A:0-127,其中0代表任何地址,127为回环测试地址,因此,A类ip地址的实际范围是1-126。默认子网掩码为255.0.0.0

2 B类地址 一个B类IP地址由2个字节的网络地址和2个字节的主机地址组成,网络地址的最高位必须是“10”,地址范围从128.0.0.0到191.255.255.255。可用的B类网络有16382个,每个网络能容纳6万多个主机。

注: B:128-191,其中128.0.0.0和191.255.0.0为保留ip,实际范围是128.1.0.0--191.254.0.0。默认子网掩码为255.255.0.0

3 C类地址 一个C类IP地址由3字节的网络地址和1字节的主机地址组成,网络地址的最高位必须是“110”。范围从192.0.0.0到223.255.255.255。C类网络可达209万余个,每个网络能容纳254个主机。

注: C:192-223,其中192.0.0.0和223.255.255.0为保留ip,实际范围是192.0.1.0--223.255.254.0。默认子网掩码为255.255.255.0

4 D类地址 用于多点广播(Multicast)。 D类IP地址第一个字节以“lll0”开始,它是一个专门保留的地址。它并不指向特定的网络,目前这一类地址被用在多点广播(Multicast)中。多点广播地址用来一次寻址一组计算机,它标识共享同一协议的一组计算机。224.0.0.0到239.255.255.255用于多点广播 。

5 E类地址 以“llll0”开始,为将来使用保留。240.0.0.0到255.255.255.254,255.255.255.255用于广播地址。

3 子网掩码

3.1 概念/作用

通过子网掩码,才能表明一台主机所在的子网与其他子网的关系,使网络正常工作。

子网掩码和IP地址做运算,分离出IP地址中的网络地址和主机地址,用于判断该IP地址是在本地网络上,还是在远程网络网上。

子网掩码还用于将网络进一步划分为若干子网,以避免主机过多而拥堵或过少而IP浪费。

3.2 子网掩码的组成

同IP地址一样,子网掩码是由长度为32位二进制数组成的一个地址。子网掩码32位与IP地址32位相对应,IP地址如果某位是网络地址,则子网掩码为1,否则为0。

举个栗子:如:11111111.11111111.11111111.00000000

左边连续的1的个数代表网络号的长度,(使用时必须是连续的,理论上也可以不连续),右边连续的0的个数代表主机号的长度。

3.3 为什么使用子网掩码

两台主机要通信,首先要判断是否处于同一网段,即网络地址是否相同。如果相同,那么可以把数据包直接发送到目标主机,否则就需要路由网关将数据包转发送到目的地。

可以这么简单的理解:A主机要与B主机通信,A和B各自的IP地址与A主机的子网掩码进行And与运算,看得出的结果:

1、结果如果相同,则说明这两台主机是处于同一个网段,这样A可以通过ARP广播发现B的MAC地址,B也可以发现A的MAC地址来实现正常通信。

2、如果结果不同,ARP广播会在本地网关终结,这时候A会把发给B的数据包先发给本地网关,网关再根据B主机的IP地址来查询路由表,再将数据包继续传递转发,最终送达到目的地B。

在如下拓扑图示例中,A与B,C与D,都可以直接相互通信(都是属于各自同一网段,不用经过路由器)。但是A与C,A与D,B与C,B与D它们之间不属于同一网段,所以它们通信是要经过本地网关,然后路由器根据对方IP地址,在路由表中查找恰好有匹配到对方IP地址的直连路由,于是从另一边网关接口转发出去实现互连。

image.png

3.4 子网掩码和IP地址的关系

子网掩码是用来判断任意两台主机的IP地址是否属于同一网络的依据

拿双方主机的IP地址和自己主机的子网掩码做与运算,如结果为同一网络,就可以直接通信

3.5 如何根据IP地址和子网掩码,计算网络地址

将IP地址与子网掩码转换成二进制数。将二进制形式的 IP 地址与子网掩码做与运算。将得出的结果转化为十进制,便得到网络地址。

image.png

4 网关

网关实质上是一个网络通向其他网络的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地址是具有路由功能的设备的IP地址,具有路由功能的设备有路由器、启用了路由协议的服务器(实质上相当于一台路由器)、代理服务器(也相当于一台路由器)。

5 ARP

ARP即地址解析协议, 用于实现从 IP 地址到 MAC 地址的映射,即询问目标IP对应的MAC地址。

「ARP协议的工作过程」

首先,每个主机都会有自己的ARP缓存区中建立一个ARP列表,以表示IP地址和MAC地址之间的对应关系

当源主机要发送数据时,首先检测ARP列表中是否对应IP地址的目的主机的MAC地址,如果有,则直接发送数据,如果没有,就向本网段的所有主机发送ARP数据包

当本网络的所有主机收到该ARP数据包时,首先检查数据包中的IP地址是否是自己的IP地址,如果不是,则忽略该数据包,如果是,则首先从数据包中取出源主机的IP和MAC地址写入到ARP列表中,如果存在,则覆盖然后将自己的MAC地址写入ARP响应包中,告诉源主机自己是它想要找的MAC地址

源主机收到ARP响应包后,将目的主机的IP和MAC地址写入ARP列表,并利用此信息发送数据,如果源主机一直没有收到ARP响应数据包,表示ARP查询失败。

6 PING

Ping是我们测试网络连接的常用指令。它利用ICMP报文检测网络连接。

「假设A ping B」

  1. ping通知系统建立一个固定格式的ICMP请求数据包。
  2. ICMP协议打包这个数据包和B的IP地址转交给IP协议层
  3. IP层协议将机器B的IP地址为目的地址,本机的IP地址为源地址,加上一些头部必要的控制信息,构建一个IP数据包
  4. 获取B的MAC地址,做这个操作首先机器A会判断B是否在同一网段内,若IP层协议通过B的IP地址和自己的子网掩码,发现它跟自己属于同一网络,就直接在本网络查找这台机器的MAC,否则则通过路由器进行类似查找。
  5. 若两台机器之前有过通信,在机器A的ARP缓存表里应该存有B的IP与其MAC地址的映射关系;若没有,则通过发送ARP请求广播,得到回应的B机器MAC地址,并交给数据链路层
  6. 数据链路层构建一个数据帧,目的地址是IP层传过来的MAC地址,源地址是本机的MAC地址,再附加一些必要的控制信息,依据以太网的介质访问规则将他们传送出去
  7. 机器B收到这个数据帧后,先检查目的地址,和本机MAC地址对比:符合,接受,接收后检查该数据帧,将IP数据包从帧中提取出来,交给本机的的IP地址协议层协议,IP协议层检查之后,将有用的信息提取给ICMP协议,后者处理,马上构建一个ICMP应答包,发送给A,其过程和主机A发送ICMP请求包到B的过程类似,但不用ARP广播收取A的信息,因为请求包中已经有足够的信息用于B回应A.
  8. 若不符合,丢弃。

可以知道PING的过程即一段发送报文和接受确认报文的过程,在来回直接可以计算时延。

7 DNS

DNS通过主机名,最终得到该主机名对应的IP地址的过程叫做域名解析(或主机名解析)。

「通俗的讲」,我们更习惯于记住一个网站的名字,[www.baidu.com,而不是记住它的ip地址,比如:167.23.10.2]

「工作原理」

将主机域名转换为ip地址,属于应用层协议,使用UDP传输。

image.png

第一步,客户端向本地DNS服务器发送解析请求

第二步,本地DNS如有相应记录会直接返回结果给客户端,如没有就向DNS根服务器发送请求

第三步,DSN根服务器接收到请求,返回给本地服务器一个所查询域的主域名服务器的地址

第四步,本地dns服务器再向返回的主域名服务器地址发送查询请求

第五步,主域名服务器如有记录就返回结果,没有的话返回相关的下级域名服务器地址

第六步,本地DNS服务器继续向接收到的地址进行查询请求

第七步,下级域名服务器有相应记录,返回结果

第八步,本地dns服务器将收到的返回地址发给客户端,同时写入自己的缓存,以便下次查询

DNS域名查询实际上就是个不断递归查询的过程,直到查找到相应结果,需要注意的时,当找不到相应记录,会返回空结果,而不是超时信息

8 Cookie / Session

Session 是基于Cookie 实现的另一种记录服务端和客户端会话状态的机制。

Session 是存储在服务端,而 SessionId 会被存储在客户端的 Cookie 中。

Session 的认证过程

  1. 客户端第一次发送请求到服务端,服务端根据信息创建对应的 Session,并在响应头返回 SessionID
  2. 客户端接收到服务端返回的 SessionID 后,会将此信息存储在 Cookie 上,同时会记录这个 SessionID 属于哪个域名
  3. 当客户端再次访问服务端时,请求会自动判断该域名下是否存在 Cookie 信息,如果有则发送给服务端,服务端会从 Cookie 中拿到 SessionID,再根据 SessionID 找到对应的 Session,如果有对应的 Session 则通过,继续执行请求,否则就中断

「Cookie和Session的区别」

  1. 安全性,因为 Cookie 可以通过客户端修改,而 Session 只能在服务端设置,所以安全性比 Cookie 高,一般会用于验证用户登录状态
  2. 适用性,Cookie 只能存储字符串数据,而 Session 可以存储任意类型数据
  3. 有效期,Cookie 可以设置任意时间有效,而 Session 一般失效时间短

9 网络攻击

9.1 XSS

跨站脚本是一种网站应用程序的安全漏洞攻击,是代码注入的一种。

它允许恶意用户将代码注入到网页上,其他用户在观看网页时就会受到影响,这类攻击通常包含了HTML以及用户端脚本语言。

比如通过客户端脚本语言(最常见如:JavaScript)

在一个论坛发帖中发布一段恶意的JavaScript代码就是脚本注入,如果这个代码内容有请求外部服务器,那么就叫做XSS

9.2 CSRF

跨站请求伪造,是一种挟制用户在当前已登录的Web应用程序上执行非本意的操作的攻击方法。

比如冒充用户发起请求(在用户不知情的情况下),完成一些违背用户意愿的请求(如恶意发帖,删帖,改密码,发邮件等)。

9.3 DOS

DOS:中文名称是拒绝服务,该攻击的效果是使得计算机或网络无法提供正常的服务

「DOS攻击的原理:」

首先攻击者向被攻击的服务器发送大量的虚假IP请求,被攻击者在收到请求后返回确认信息,等待攻击者进行确认,该过程需要TCP的三次握手,由于攻击者发送的请求信息是虚假的,所以服务器接收不到返回的确认信息,在一段时间内服务器会处与等待状态,而分配给这次请求的资源却被有被释放

当被攻击者等待一定的时间后,会因连接超时而断开,这时攻击者在次发送新的虚假信息请求,这样最终服务器资源被耗尽,直到瘫痪.