互联网、移动互联网、物联网,都离不开网络协议:
网络协议方面的面试题目近年来要求提高了:
Java跨平台的原理:
解释型语言跨平台的原理与 Java 类似:例如 JavaScript,甚至不需要经过编译,有浏览器即可解析。
C++跨平台的原理:使用平台相关的编译器生成对应平台的可执行文件
什么是协议?为什么要有协议?
为了更好地促进互联网络的研究和发展,国际标准化组织 ISO 在 1985 年制定了网络互连模型 OSI 参考模型(Open System Interconnect Reference Model),具有7层结构。
实际上 OSI参考模型(7层) 更偏理论,而 TCP/IP 协议(4层) 在才是在实际中使用的协议,而为了研究和学习计算机网络,又常将之划分为 5层。
请求过程:不管什么协议都是经过下列的 包装 + 解包 的过程。
1、需要得知对方的 IP地址
2、最终是根据 MAC地址(网卡地址),输送数据到网卡,被网卡接收
ARP协议的作用:已知 IP地址,通过 广播 获取 MAC地址。
为什么右边出现3个ARP包,实际上是 一次完整的发送请求,接收响应的过程。
集线器相比同轴电缆唯一的优点就是:哪怕连着集线器的某一个设备中间线路出问题,不会影响到连着集线器的其他设备。
例如,6向7发数据包,
当6发出请求ARP广播时,网桥会记录6的MAC地址在左;
当7发出响应ARP广播时,网桥会记录7的MAC地址在左。
若全球所有设备都用交换机连接:
1、他们必然处于同一网段,因此 IP地址可能会不够用
2、即使使用交换机,第一次发送数据包仍然需要ARP广播,耗费大量时间。
3、形成广播风暴,只要有一个设备发送ARP广播,全球设备都能收到
主机在发数据之前,首先会判断目标主机的IP地址跟它是否在同一个网段:
网线直连、同轴电缆、集线器、网桥、交换机
路由器
每个网卡都有一个 6字节(48bit) 的 MAC地址(Media Access Control Address)
MAC地址全球唯一,固化在网卡的ROM中,由 IEEE802 标准规定
OUI 查询:
注:当48位全为1时,代表广播地址:FF-FF-FF-FF-FF-FF
ipconfig /all
)查看MAC地址:ipconfig /all
修改MAC地址:更改适配器选项-属性-配置-高级-网络地址(填写的时候需要把 减号-
去掉)
注: 有时可以通过修改 MAC地址蹭网。。。。
arp -a
)当不知道对方主机的MAC地址时,可以通过发送ARP广播获取对方的MAC地址
arp -a [主机地址]
:查看ARP缓存
arp -d [主机地址]
:删除ARP缓存
arp -s 主机地址 MAC地址
:增加一条缓存信息(这是静态缓存,存储时间较久,不同系统的存储时间不同)
IP地址(Internet Protocol Address):互联网上的每一个主机都有一个IP地址
IP地址 由2部分组成:网络标识(网络ID)、主机标识(主机ID)
主机所在的网段 = 子网掩码 &
IP地址
例如:
IP地址:192.168.1.10
子网掩码:255.255.255.0
1100 0000 . 1010 1000 . 0000 0001 . 0000 1010
& 1111 1111 . 1111 1111 . 1111 1111 . 0000 0000
----------------------------------------------------
1100 0000 . 1010 1000 . 0000 0001 . 0000 0000
网段:192.168.1.0
网段是由子网掩码计算得出,只有IP地址无法得知网段。
IP地址:130.168.1.10
子网掩码:255.255.0.0
网段:130.168.0.0
该网段最多有 256*256-2 个IP地址
-2是因为: 全0代表网段,全1代表广播
网段和广播无法分配IP地址.
计算机和其他计算机通信前,会先判断目标主机和自己是否在同一网段:
注:判断IP地址的类别只要看第一部分即可。
只有 A\B\C 类地址才能分配给主机
192.168.1.0
192.168.1.255
ping
给某个网段的全部主机发数据主机ID
主机ID
C类地址:默认子网掩码是 255.255.255.0
目前用的最多的是 C类地址!
网络ID
主机ID
D类地址:没有子网掩码,用于多播(组播)地址
以 1110 开头,多播地址
第一部分取值是:224~239
E类地址:以 1111 开头,保留为今后使用
第一部分取值是:240~255
CIDR(Classless Inter-Domain Routing):无类别域间路由
子网掩码的CIDR表示方法
计算工具:https://www.sojson.com/convert/subnetmask.html
如果需要让 200 台主机在同一个网段内,可以分配一个 C类网段,比如192.168.1.0/24
192.168.1.1
~ 192.168.1.254
如果需要让 500 台主机在同一个网段内,那就分配一个 B类网段,比如191.100.0.0/16
191.100.0.1
~ 191.100.255.254
如何尽量避免浪费IP地址资源?
子网划分:借用主机位作子网位,划分出多个子网
子网划分器:http://www.ab126.com/web/3552.html
子网划分的步骤
例:
本来有一个C类网段: 192.168.0.0/24
划分成两个子网后:
A子网: 192.168.0.0/25 子网掩码: 255.255.255.128
可用IP地址: 192.168.0.1 ~ 192.168.0.126 共 126 个
B子网: 192.168.0.128/25 子网掩码: 255.255.255.128
可用IP地址: 192.168.0.129 ~ 192.168.0.254 共 126 个
等分成 2 个子网:
等分成 4 个子网:
等分成 4 个子网的广播地址:
等分成 8 个子网:
如此划分(,他们还是属于同一个网段,可以直接 ping 通。
下面这样划分就不是一个网段了,分别属于 192.168.0.0
和 192.168.0.128
网段,需要用路由器并设置网关才可以 ping 通。
问:下列两台计算机可以正常通信吗?
答:不可以。计算机0 想要发送数据包,先判断计算机1是否和自己处于同一个网段,计算网段的方法是:IP地址 & 子网掩码,计算机0判断计算机1的网段为 192.168.10.10 & 255.255.255.0
= 192.168.10.0
,而计算机0判断自身所处网段为 192.168.0.10 & 255.255.255.0
= 192.168.0.0
,双方不处于同一网段,所以计算机0无法将数据包发给计算机1(不同网段的数据通信需要路由器)
解决方案:利用路由器。
超网:跟子网反过来,它是将多个连续的网段合并成一个更大的网段
需求:原本有200台计算机使用 192.168.0.0/24 网段,现在希望增加200台设备到同一个网段
问:192.168.0.255/23 这个IP地址,可以分配给计算机使用么?
子网掩码向左移动 2 位,可以合并 4 个网段
将 192.168.0.0/24、192.168.1.0/24、192.168.2.0/24、192.168.3.0/24 合并为192.168.0.0/22 网段
假设 n 是 2 的 k 次幂(k≥1),子网掩码左移 k 位能够将能够合并 n 个网段
假设 n 是 2 的 k 次幂(k≥1),如果第一个网段的网络号能被 n 整除,那么由它开始连续的 n 个网段,能通过左移 k 位子网掩码进行合并。
首先看该网段的类型,是A类网络、B类网络、C类网络?
如果该网段的子网掩码位数比默认子网掩码多,就是子网
如果该网段的子网掩码位数比默认子网掩码少,则是超网
例如:
判断 25.100.0.0/16 是子网还是超网:
判断 200.100.0.0/16 是子网还是超网: