网络原理(一)网络基础,包括IP ,网络相关的定义

网络基础,包括IP ,网络相关的定义

  • 网络基础
    • 冲突域
    • 广播域
    • DNS
    • NAT
    • NAPT

网络基础

以下图片是书上的网图。

什么是IP地址?

IP地址(Internet Protocol Address)是指互联网协议地址,又译为网际协议地址。P地址是IP协议提供的一种统一的地址格式,它为互联网上的每一个网络和每一台主机分配一个逻辑地址,以此来屏蔽物理地址的差异。

格式:通常是一个32位的二进制数,被分割成4个8位二进制

IP地址分为两个部分,网络号和主机号

  • 网络号:标识网段,保证相互连接的两个网段具有不同的标识;
  • 主机号:标识主机,同一网段内,主机之间具有相同的网络号,但是必须有不同的主机号
    网络原理(一)网络基础,包括IP ,网络相关的定义_第1张图片
    网络原理(一)网络基础,包括IP ,网络相关的定义_第2张图片

这个因为时代问题,现在大部分存在的IP地址通常都是 IPv4 ,使得所有的IP地址会有用完的一天。此时就有可能出现IP不够用的一天,并且在中美问题出现问题的今天,IP地址的分配是有美国进行全球分配的,对于国防和网络安全存在隐患,所以经过国家统一调度,使得国内的设备现在支持两种 IP 方式,也就是 IPv6 和 IPv4,目前国内还在沿用 IPv4 ,但是遇到 特殊状况,就可以随时启动 IPv6 ,规避风险。

在上述分类中:存在 IP 地址浪费的问题:

  1. 单位一般会申请B类网络(C类连接主机数量有限),但实际网络架设时,连接的主机数量又常远
    小于65534(B类连接主机数),造成IP地址浪费;同理,A类网络的IP地址也会造成大量的浪费。

  2. 当一个单位申请了一个网络号。他想将该网络能表示的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 ,网络相关的定义_第3张图片

特殊的 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 网络编程的中也有体现,并且更加通俗

局域网传输流程:集线器

  1. 发送端在本机ARP缓存表中,根据目的IP查找对应的MAC地址
  2. 如果找到,则可以在数据链路层以太网帧头中,设置目的MAC并发送数据包
  3. 如果没有找到,需要先发送ARP广播请求,让接收端,即目的主机告诉自己,目的MAC是多少
  4. 发送端更新本机ARP缓存表:保存目的IP与目的MAC的映射
  5. 有了目的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转换过程
网络原理(一)网络基础,包括IP ,网络相关的定义_第4张图片

  • 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地址分为了两大类

  1. 内网 IP:10.* 172.16.* -172.31.* 192.168.*
  2. 外网 IP:其他的 IP 地址
    只要求外网IP唯一,内网IP在不同的局域网中,是允许重复的(同一个局域网里不允许重复)

在NAT 背景下如何通信?
外网设备—》外网设备,不需要任何NAT,就能直接通信
内网设备—》其他内网设备,不允许
外网设备—》内网设备,不允许
内网设备—》外网设备

  • 对应的内网设备的路由器,出发NAT机制进行 IP 替换,此时就会给这个网络数据包的源 IP 替换成路由器自己的IP(此时一个外网IP,就能代表一大批内网的设备了)

IP不够的问题—》动态分配 + NAT 解决

NAPT

那么问题来了,如果局域网内,有多个主机都访问同一个外网服务器,那么对于服务器返回的数据中,目的IP都是相同的。那么NAT路由器如何判定将这个数据包转发给哪个局域网的主机?

这时候NAPT来解决这个问题了。使用IP+port来建立这个关联关系

网络原理(一)网络基础,包括IP ,网络相关的定义_第5张图片

NAT技术的缺陷:

由于NAT依赖这个转换表,所以有诸多限制:

  • 无法从NAT外部向内部服务器建立连接;
  • 转换表的生成和销毁都需要额外开销;
  • 通信过程中一旦NAT设备异常,即使存在热备,所有的TCP连接也都会断开;

你可能感兴趣的:(java,网络,tcp/ip,php)