网络基础,包括IP ,网络相关的定义
- 网络基础
- 冲突域
- 广播域
- DNS
- NAT
- NAPT
网络基础
以下图片是书上的网图。
什么是IP地址?
IP地址(Internet Protocol Address)是指互联网协议地址,又译为网际协议地址。P地址是IP协议提供的一种统一的地址格式,它为互联网上的每一个网络和每一台主机分配一个逻辑地址,以此来屏蔽物理地址的差异。
格式:通常是一个32位的二进制数,被分割成4个8位二进制
IP地址分为两个部分,网络号和主机号
- 网络号:标识网段,保证相互连接的两个网段具有不同的标识;
- 主机号:标识主机,同一网段内,主机之间具有相同的网络号,但是必须有不同的主机号
这个因为时代问题,现在大部分存在的IP地址通常都是 IPv4 ,使得所有的IP地址会有用完的一天。此时就有可能出现IP不够用的一天,并且在中美问题出现问题的今天,IP地址的分配是有美国进行全球分配的,对于国防和网络安全存在隐患,所以经过国家统一调度,使得国内的设备现在支持两种 IP 方式,也就是 IPv6 和 IPv4,目前国内还在沿用 IPv4 ,但是遇到 特殊状况,就可以随时启动 IPv6 ,规避风险。
在上述分类中:存在 IP 地址浪费的问题:
-
单位一般会申请B类网络(C类连接主机数量有限),但实际网络架设时,连接的主机数量又常远
小于65534(B类连接主机数),造成IP地址浪费;同理,A类网络的IP地址也会造成大量的浪费。 -
当一个单位申请了一个网络号。他想将该网络能表示的IP地址再分给它下属的几个小单位时,如果
在申请新的网络就会造成浪费。
而为了解决子网掩码的问题,引入了子网掩码来进行子网划分。
什么是子网掩码?
子网掩码格式和IP地址一样,也是一个32位的二进制数。
- 其中左边是网络位,用二进制数字“1”表示,1的数目等于网络位的长度
- 右边是主机位,用二进制数字“0”表示,0的数目等于主机位的长度
作用:
划分A,B,C三类 IP 地址子网
如一个B类IP地址:191.100.0.0,按A ~ E类分类来说,网络号二进制数为16位网络号+16位主机号。假设使用子网掩码255.255.128.0(即17) 来划分子网,意味着划分子网后,高 17 位都是网络位 / 网络号,也就是将原来16位主机号,划分为1位子网号+15位主机号。
IP地址组成为:网络号+子网号+主机号,网络号和子网号统一为网络标识(划分子网后的网络号 / 网段)
- 网络通信时,子网掩码结合IP地址,可以计算获得网络号(划分子网后的网络号)及主机号(划分子网后的主机号)。一般用于判断目的IP与本IP是否为同一个网段。
计算方式:
- 将 IP 地址和子网掩码进行“按位与”操作(二进制相同位,与操作,两个都是1结果为1,否则为0),得到的结果就是网络号。
- 将子网掩码二进制按位取反,再与 IP 地址位与计算,得到的就是主机号。
特殊的 IP 地址
主机号微 0 的 ip ,192.168.0.0 就是网络好,局域网里不应该存在某个主机,主机号微 0
主机号全为 1 的IP ,广播地址,往这个地址发送UDP 数据包,此时的数据包就会发给整个局域网中的所有主机(TCP不支持广播)
IP 为 127开头,127.* 称之为环回 ip,这个 ip,走的是虚拟网卡,没有IO操作,纯内存操作,所以要比一般IP要快
冲突域
在解释冲突域和一下的问题时首先要明白,路由和MAC以及交换机的作用,这个在我的 Java 网络编程中有体现。
什么是冲突域?
主机之间通过网络设备(集线器、交换机)的物理端口、网线相连时,两个主机在同一时刻同时发送数
据报,如果存在冲突,则该网络范围为一个冲突域(Collision Domain)
冲突域是基于第一层物理层,又称为碰撞域。
- 集线器接收到数据报后,是将数据报简单的复制、转发到其他所有端口,如果有两个数据报要同时转发,就会出现冲突。整个集线器,即集线器的所有端口为一个冲突域。
- 交换机接收到数据报后,是将数据报转发到对应的一个端口:两个数据报同时转发到不同端口不存在冲突,但同时转发到一个端口就出现冲突。即交换机可以分割冲突域,分割后,一个端口为一个冲突域。
广播域
什么是广播域?
广播域基于第二层数据链路层。
广播是指某个网络中的主机同时向网络中其它所有主机发送数据(IP、MAC地址设置为广播地址),这个数据所能传播到的范围即为广播域(Broadcast Domain)。
- 集线器接收到广播数据报,仍是简单的复制、转发到其他所有端口,所以集线器的所有端口为一个广播域。
- 交换机接收到广播数据报,会转发到其他所有端口;而路由器可以隔离广播域
网络数据传输流程的过程我也在我的 Java 网络编程的中也有体现,并且更加通俗
局域网传输流程:集线器
- 发送端在本机ARP缓存表中,根据目的IP查找对应的MAC地址
- 如果找到,则可以在数据链路层以太网帧头中,设置目的MAC并发送数据包
- 如果没有找到,需要先发送ARP广播请求,让接收端,即目的主机告诉自己,目的MAC是多少
- 发送端更新本机ARP缓存表:保存目的IP与目的MAC的映射
- 有了目的MAC,就可以按照第(2)个步骤发送数据了。
DNS
DNS,即Domain Name System,域名系统。DNS是一整套从域名映射到IP的系统。
TCP/IP中使用IP地址来确定网络上的一台主机,但是IP地址不方便记忆,且不能表达地址组织信息,于是人们发明了域名,并通过域名系统来映射域名和IP地址。
- 域名是一个字符串,如 www.baidu.com , hr.nowcoder.com
- 域名系统为一个树形结构的系统,包含多个根节点
- 根节点即为根域名服务器,最早IPv4的根域名服务器全球只有13台,IPv6在此基础上扩充了数量。(DNS域名服务器,即提供域名转换为IP地址的服务器)
- 子节点主要由各级DNS服务器,或DNS缓存构成(Windows系统的DNS缓存在 C:\Windows\System32\drivers\etc\hosts 文件中,Mac/Linux系统的DNS缓存在 /etc/hosts 文件中。)
网络通信发送数据时,如果使用目的主机的域名,需要先通过域名解析查找到对应的IP地址:(浏览器、主机系统、路由器中都保存有DNS缓存。)
- 域名解析的过程,可以简单的理解为:发送端主机作为域名系统树形结构的一个子节点,通过域名信息,从下到上查找对应IP地址的过程。如果到根节点(根域名服务器)还找不到,即找不到该主机。
- 域名解析使用DNS协议来传输数据。DNS协议是应用层协议,基于传输层UDP或TCP协议来实现。
NAT
NAT技术当前解决IP地址不够用的主要手段,是路由器的一个重要功能
- NAT能够将私有IP对外通信时转为全局IP。也就是就是一种将私有IP和全局IP相互转化的技术方法:
- 很多学校,家庭,公司内部采用每个终端设置私有IP,而在路由器或必要的服务器上设置全局IP;
- 全局IP要求唯一,但是私有IP不需要;在不同的局域网中出现相同的私有IP是完全不影响的;
NAT IP转换过程
- NAT路由器将源地址从10.0.0.10替换成全局的IP 202.244.174.37;
- NAT路由器收到外部的数据时,又会把目标IP从202.244.174.37替换回10.0.0.10;
- 在NAT路由器内部,有一张自动生成的,用于地址转换的表;
- 当 10.0.0.10 第一次向 163.221.120.9 发送数据时就会生成表中的映射关系;
NTA将所有的IP地址分为了两大类
- 内网 IP:10.* 172.16.* -172.31.* 192.168.*
- 外网 IP:其他的 IP 地址
只要求外网IP唯一,内网IP在不同的局域网中,是允许重复的(同一个局域网里不允许重复)
在NAT 背景下如何通信?
外网设备—》外网设备,不需要任何NAT,就能直接通信
内网设备—》其他内网设备,不允许
外网设备—》内网设备,不允许
内网设备—》外网设备
- 对应的内网设备的路由器,出发NAT机制进行 IP 替换,此时就会给这个网络数据包的源 IP 替换成路由器自己的IP(此时一个外网IP,就能代表一大批内网的设备了)
IP不够的问题—》动态分配 + NAT 解决
NAPT
那么问题来了,如果局域网内,有多个主机都访问同一个外网服务器,那么对于服务器返回的数据中,目的IP都是相同的。那么NAT路由器如何判定将这个数据包转发给哪个局域网的主机?
这时候NAPT来解决这个问题了。使用IP+port来建立这个关联关系
NAT技术的缺陷:
由于NAT依赖这个转换表,所以有诸多限制:
- 无法从NAT外部向内部服务器建立连接;
- 转换表的生成和销毁都需要额外开销;
- 通信过程中一旦NAT设备异常,即使存在热备,所有的TCP连接也都会断开;