1.网络协议的层次体系结构
2.五层架构
- 物理层:二进制比特流
- 数据链路层
- MAC,即网卡(物理地址),ip可与子网掩码计算是否为同一网段,并且可以计算出该网段有多少个ip
- 二三层之间,有arp表,arp会保留MAC地址和IP地址
- vlan,即虚拟局域网;一般是对同一网段进行划分(但也有特殊情况,一个vlan包括多个网段)
- 作用:
- 当网段太大,为方便管理,可划分为多个vlan
- 避免广播风暴,用来分割广播域
- vlan的划分方式:
- 根据交换机端口划分
- 根据mac地址划分
- 根据网络层划分
- 根据IP组播划分
- 网络层:寻址,即:IP 【网关地址 即 IP地址】;网关地址是整个网段的出入口地址
- 传输层:TCP、UDP协议 ,根据端口交给应用层
- 应用层:常见协议有DNS、HTTP、HTTPS、SMTP等
发送端 5 -》4 -》3 -》2 -》1:每层加入对应的首部(尾部)
接收端 1 -》2 -》3-》4 -》5: 每层剥去对应的首部(尾部)
3.创建新网卡、添加IP段、设置路由
- 查看所有虚拟网络的命名空间
- ip netns list
- 创建net-test的网络命名空间
- ip add net-test
- 给网卡bond0.75添加子网卡ipvlan-test1
- ip link add ipvlan-test1 link bond0.715 type ipvlan mode l2
- 查看网卡
- ip link show
- 将子网卡ipvlan-test1加入到虚拟网络空间net-test里
- ip link set ipvlan-test1 netns net-test
- 进入net-test的命名空间
- ip netns exec net-test bash
- 将网卡重命名为eth0
- ip link set ipvlan-test1 name eth0
- 给网卡添加网段
- ip addr add 10.120.24.89/24 dev eth0
- 启用eth0网卡
- ip link set eth0 up
- 为网卡添加路由
- ip route add default via 10.120.31.247 mtu 1500 advmss 1460
- 删除命名空间
- ip netns delete net-test
上述命令中
- ip link 都是对网卡的操作
- 10.120.24.89/24 中的 24 表示子网掩码的二进制24个1,8个0(ipv4子网掩码32位,由连续的1和连续的0组成)
其中10.120.24.89的二进制为:00001010 01111000 00011000 01011001
子网掩码为:11111111 11111111 11111111 00000000
ip与掩码作“与”运算为:00001010 01111000 00011000 00000000
所以网络地址(子网号)为:10.120.24.0
而24的网段ip个数为256,10.120.24.255为广播地址,所以有效ip段为10.120.24.1~10.120.24.254
ip段与子网掩码对照表:https://wenku.baidu.com/view/e9da13ff3d1ec5da50e2524de518964bce84d228.html
4.两台机器间通信
1、主机A和主机B在同一个二层网络中,直接走二层交换
主机A查看自己的ARP缓存,检查是否有主机B的IP到MAC的映射,如果有映射,(构造报文:目的IP为主机B的IP,源IP为主机A的IP,目的MAC为主机B的MAC,源MAC为主机A的MAC)将报文发送给交换机C,交换机C进行MAC地址表学习,将主机A的MAC和报文入端口号记录下来,然后交换机C查看自己的MAC转发表,检查是否有主机B的MAC到端口的映射,如果有映射,获取对应的端口,将报文从此端口转发出去,报文到达主机B。如果交换机C没有主机B的MAC转发表映射,采用洪泛的形式广播报文,主机B收到报文后向主机A回复,交换机C进行MAC表学习,将主机B的MAC和报文入端口号记录下来。
如果主机A没有主机B的ARP映射,主机A需要发送ARP请求,以获取主机B的MAC,将报文发往交换机C,交换机C采用洪泛的形式广播报文,主机B收到广播报文后,在自己的ARP缓存表中写入主机A的IP到MAC的映射,将自己的MAC封装到ARP回复报文中,单播给主机A,主机A获取到主机B的MAC后,在自己的ARP缓存表中写入主机B的IP到MAC的映射,构造报文发送给主机B,过程同上。
主机B向主机A回复报文的过程类似。
2、主机A和主机B不在同一个网络中,走三层路由
主机A查看自己的ARP缓存表,检查是否有路由器E的IP到MAC的映射,如果有映射,获取路由器E的MAC,构造报文(目的IP为主机B的IP,源IP为主机A的IP,目的MAC为路由器E的MAC,源MAC为主机A的MAC)将报文通过交换机C发往路由器E,过程同上。
如果主机A没有路由器E的IP到MAC的映射,需要发送ARP请求,获取路由器E的MAC,过程同上。路由器E收到主机A的报文后,剥离报文的MAC帧头,查询路由表,发现目标主机B所在的网络是直连的,查看自己的ARP缓存表,如果有主机B的IP到MAC的映射关系,获取主机B的MAC,封装报文MAC帧头,目的MAC为主机B的MAC,源MAC为路由器E的MAC,将报文通过交换机D发往主机B,如果路由器E没有主机B的IP到MAC的映射关系,需要发送ARP请求,获取主机B的MAC,过程同上。