网络为什么要分层?
因为是个复杂的程序就要分层
可以把网络包想象成一个buffer或者一块内存,是有格式的。同时,想象自己是一个处理网络包的程序,而且这个程序可以跑在电脑/服务器/路由器/交换机上,自己有很多网口,自己可以从一个网口拿来一个数据包,用自己的程序处理一下,然后又通过自己另外的网口发出去
当网络包格式复杂,这个程序也很复杂,复杂的程序就不可避免的要分层
实际上,这些process_layer2(),process_layer3(),process_tcp()等都是linux系统内核里面的一个处理函数
所谓的二层设备,就是把网络包的mac头取下来,看看自己是转发、丢弃、还是自己留着这个数据包
如何查看ip地址
ifconfig命令,ip addr命令
关于ip地址
- ip地址具有定位功能,mac地址没有定位功能。比如mac地址就类似于身份证号,而有了ip地址就知道了你是哪个省那个市哪个区的哪个街道的人,当通过ip地址定位到某个街道(子网),最后再喊一嗓子:谁的身份证号是xxx,就定位到某个具体的人了
- CIDR可以用来判断是不是本地人
- ip地址分为公有地址和私有地址,后面会谈到“出国门”就与这个有关
某台新机器,携带着全局唯一的mac地址加入某个子网,子网中的DHCP server,给这台新机器租借一个ip地址,租期到期前还可以续约等…
也可以自己通过命令或者配置文件,配置固定ip,但是固定ip一定要是本局域网内的
交换机的作用
交换机就是具有学习记忆的功能,能记住每个网口和网口连接的机器的mac地址的对应关系
如何能记忆mac头与网口的关系,显然就需要一个设备工作在二层链路层,通过把某个网口来的报文的mac头拿下来,判断mac地址,并记住每个网口和网口连接的机器的mac地址的对应关系,这个二层设备就是交换机
如果没有交换机,那么外界来的每一个报文,因为不知道每个网口的mac地址,就只能通过广播的方式,来发给子网内的所有机器。没有二层设备只有一层物理层设备,那么就只能全量转发给每个口
比如一个交换机上有200个网口,可以插200根网线来连200台机器,让这200台机器处于同一个局域网(子网)中