一、查看ip地址
- linux操作系统下 运行 ip addr
root@test:~# ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether fa:16:3e:c7:79:75 brd ff:ff:ff:ff:ff:ff
inet 10.100.122.2/24 brd 10.100.122.255 scope global eth0
valid_lft forever preferred_lft forever
inet6 fe80::f816:3eff:fec7:7975/64 scope link
valid_lft forever preferred_lft forever
inet 就是ip地址 是ipv4 32位 分为 网络号和主机号
inet6 是ipv6 128位
IP地址分类
A类:10. 最大数量 166777214
B类:128. 最大数量 65534
C类:192. 最大数量 254
2. 无类型域间选路(CIDR)
将32位ip地址一分为二 前边是网络号 后边是主机号 例如 10.100.122.2/24 就代表前24位是网络号 后 8位是主机号
广播地址 10.100.122.255 如果发送到这个地址 10.100.122 网络里的机器都可以收到
子网掩码 255.255.255.0
网络号 将子网掩码和IP地址按位计算AND 就可以得到网络号。
一般家用的设备数量也不会超过256个 所以一般是C类IP地址 WIFI路由器的地址是192.168.0.1 广播地址是 192.168.0.255 一旦发送这个地址 整个192.168.0网络里的所有机器都能收到
- MAC 地址
是一个网卡的物理地址 唯一标示 无定位功能
IP地址可以定位 可以定位到具体的位置 然后找到具体的网卡
二、IP地址的由来
-
动态主机配置协议DHCP
网络管理员配置一段共享的IP地址 每一台新接入的机子都通过这个DHCP协议 来这个共享的IP里申请 然后 自动配置 用完释放 -
DHCP的工作方式
-
DHCP Discover
新进入的电脑 IP地址0.0.0.0 发送一个广播包 目的地址为255.255.255.255 广播包封装了UDP UDP封装了BOOTP DHCP是BOOTP的增强版
广播包中 包含了 新电脑的MAC地址 IP地址 广播IP地址 源端口68 目标端口 67 向目标IP地址申请IP -
DHCP Offer 此时如果网络管理员配置了DHCP Server的话 他就会立马知道有一个新的IP地址来了 这时MAC地址的唯一性就非常重要 可以确定 这是一个新人 需要给他配置一个新的IP 这个过程叫做 DHCP Offer 同时DHCP Server 就会保留这个IP 并且不会再分配给其他电脑
-
DHCP Server 仍然使用广播地址作为目的地址 因为此时 新的电脑并不知道 自己的IP是多少 回复的包中包含了 新电脑的Mac地址 广播的Mac地址 新电脑IP 0.0.0.0 广播IP 255.255.255.255 源端口68 目标端口 67 准备租用给新电脑的 IP地址 全部发给 新电脑
-
DHCP ACK 当客户机收到回复之后 还不能直接使用这个IP 仍然使用0.0.0.0 作为IP回复一下 DHCP Server 当DHCP Server 收到返回以后 再给客户机一个 DHCP ACK确认 表明此时新电脑可以使用这个IP地址了
-
-
地址回收和续租
分配IP地址的时候 会把过期时间一起下发 当到期时间还有一半的时候就需要重新申请
三、机房里如何给很多机器安装操作系统
- 预启动执行环境 PXE
BIOS 一个嵌在硬件里的小系统 计算机启动 首先会来到这 也就是实模式
PXE 分为客户端和服务端 由于没有操作系统 只能把客户端放在BIOS里。计算机启动的时候BIOS把PXE客户端调入内存 就可以连接到服务端做一些操作了
PXE自己需要有个IP地址 就开始发送一个DHCP请求 让DHCP Server 给他分配一个地址 ,PXE如何知道PXE服务端在哪里呢?DHCP Server 在给IP的时候 会再增加一个配置 next-server 和 初始启动文件 filename 告诉PXE 这样PXE就知道PXE服务端在哪里 也知道如何从PXE服务端下载某个文件 去初始化操作系统
- PXE的工作过程
首先启动客户端 通过DHCP协议告诉DHCP Server 请求一个IP地址 同时也会拿到PXE 服务地址 启动文件 PXE客户端就开始从PXE服务端下载 这个文件 收到这个文件后就开始执行这个文件 向TFTP 服务器请求下载 和 配置信息 最后启动 linux 内核 启动操作系统
四、从物理层到Mac层(数据链路层)
-
网线
两个电脑链接的网线需要使用 1-3 2-6 交叉法 可以实现两个电脑的通信 -
集线器 hub
完全在物理层的一个设备 可以链接多个网线 相当于中转 其中一个电脑打出消息会通知到所有通信的电脑
五、数据链路层 (Mac层 Media Access Control)媒体访问控制层
- 包发给谁 谁接收
需要使用到Mac地址 源MAC地址和目标MAC地址 数据包在链路上广播 MAC的网卡才能发现 然后把包收进来 打开IP包 发现IP地址也是自己的 再打开TCP包 发现端口也是自己的 nginx就是监听80端口 然后目标地址变成源地址 源地址变成目标地址 把数据响应回去 - 都在发 谁先发 谁后发
- 发送出错了怎么办
第二层的最后面是 CRC 也就是 循环冗余检测 通过XOR异或算法来检测这个过程中是否发生错误 - 不知道目标Mac地址的情况怎么办呢
ARP协议 知道IP地址不知道MAC地址怎么办 吼一声 发送一个广播包 谁是这个IP 谁来答
以上是Hub连线形成的小局域网
六、局域网
-
交换机-一个会智能学习的设备
交换机的学习过程
一台MAC1电脑将一个包发给另一个MAC2电脑 当这个包到达交换机的时候 一开始交换机也不知道MAC2在哪里 只能将包转发给除了刚才的口的所有口 此时交换机会记录着MAC1是来自一个明确的口 经过几轮之后 就会形成一个转发表 -
两台交换机
例如机器1 要想访问机器4 机器1 知道机器4的 IP地址
机器1不知道机器4在哪里 于是发起一个广播 那么机器2可以收到 但不是找他的 交换机A可以收到广播 但是最初交换机并没有转发表 交换机A收到这个广播之后做的操作就是除了从机器1在的方向外 还要转发给其他的网口 ,于是机器3也收到了广播信息 但还是不是找3的 此时交换机B也收到了信息,交换机B也开始广播 这时 机器4和机器5 都可以收到信息 这时机器4就会响应 告诉机器1 这个是我的MAC地址
在上面的学习过程中 交换机A和交换机B 都能学到信息 机器1是在左边局域网的 当机器3想访问机器1的时候 就不会再将广播转发到 其他局域网了
- 常见的环路问题 如下图
交换机A 和 交换机B 同时连接着两个局域网 当机器1想访问机器2的时候 发一个ARP广播请求,然后机器2可以收到 完美!!! 但是换机A 和 交换机B也能收到 这是A会转发 到右边的局域网 B也会转发到右边的局域网 A的右边网口就会收到来自B的广播 B也就收到来自A的广播,因此 出现了环路问题。
- STP协议 Spanning Tree Protocol
将环生成树 解决环路问题 下面是相关概念
- Root Bridge 跟交换机
- Designated Bridges 指定交换机 跟交换机下边的分支
- Bridge Protocol Data Units BPDU 网桥协议数据单元 相互比较实力的协议
- Priority Vector 优先级向量 就是一堆ID [Root Bridge ID, Root Path Cost, Bridge ID, and Port ID] 就是拼爹 拼爷 拼老爷 拼祖宗 一级一级的比
工作原理
- 分配初始优先级 那个交换机贵 那个优先级高 管理员分配一个ID 这个ID就是优先级
- 相互链接的交换机之间会相互比较优先级 优先级低的就只能做小弟了 收到BPDU时 就只能转发一下了
- 当两个局部优先级高的 相遇 还会进行比较比较出一个优先级高的 那么优先级低的的所有下线就会全部拿来服从这个优先级高的
- 优先级低的相遇 会比较老大
- 广播问题和安全问题
- 虚拟隔离 VLAN
我们只需要在原来的二层头上加上一个TAG 里边有个VLAN ID 共12位
如果我们买的交换机支持 VLAN 当交换机把二层头取下来的时候 就能够识别这个VLAN ID 这样只有相同的VLAN ID的包 才会相互转发 不同的VLAN 包看不到。
我们可以设置交换机每个口对用的VLAN
使用Trunk 口 可以链接多个交换机
- ICMP 互联网控制报文协议
ping 就是基于 ICMP协议的
ICMP 报文是封装在IP包里面的 最常用的类型是主动请求为 8 主动请求的应答为0
- 查询报文类型
ping 就是查询报文 主动发起 主动应答的ICMP协议 - 差错报文类型
- 终点不可达 分为 网络不可达 找不找路 主机不可达 找不着人 协议不可达 口号不对 端口不可达 需要分片但设置了不分片
- 源站抑制 让源站放慢速度
- 时间超时
- 路由重定向 下次发给另一个路由
- ping 的 发送和接收
假定主机A的IP地址是 192.168.1.1 主机B的IP地址是 192.168.1.2 同在一个子网 在主机A上运行 ping 192.168.1.2 的过程
首先构建一个ICMP请求数据包 ICMP包 包含多个字段 最重要的是两个 一个是类型字段 对于请求包该字段是 8 另一个是顺序号 为了计算往返时间 还会在报文数据部分插入发送时间
然后 由ICMP协议将这个数据包连同地址 192.168.1.2 一起交给IP层 IP层将192.168.1.2作为目标地址 192.168.1.1 作为源地址构建一个IP数据包 接下来加入MAC头 在ARP映射表中找到192.168.1.2所对应的MAC地址 如果有就可以直接使用 如果没有还需要发出一个ARP请求 协议查询MAC地址 获取MAC地址后 由数据链路层构建一个数据帧 目的地址就是IP层传来的MAC地址 源地址则是本机的MAC地址 依据以太网的访问规则 将他们传递出去
发完之后 主机B收到这个数据帧之后 先检查他的目的MAC地址 并和本机的MAC地址对比 如果符合就接收 不符合就丢弃 然后将相应有用的信息拿出来 构建一个应答包 类型字段是 0 顺序就是接受包里的顺序 如果在规定的时间内 源主机没有找到ICMP的应答包 说明目的主机不可达 如果接收到了ICMP应答包 说明目标主机可达。这是源主机会用当前时间减去该数据包最初从源主机上发出的时刻 就是ICMP的时间延迟。