本文来自对网络工程师之路内容的个人总结,仅供个人复习参考。
1.电脑之间通信就需要有线路,但是如果多台电脑互相之间需要通信,那么就需要有很多根线,每台电脑需要有多网卡,为了解决这个问题,(集线器)Hub就出现了,Hub其实就是一条连接多个电脑的公共道路(内部总线)。
2.如果任意两台电脑间要传输数据,怎么使用这条公共道路?这就需要所有电脑们协商出一个公平的办法。这个办法就是CSMA/CD(规定使用公共道路的规则)。CSMA规定,如果有电脑要发数据,那么在发数据前,先检查公共道路上有没有其他电脑在传数据。如果有,就等待,直到发现公共道路空闲了,就立即把数据发出,但是如果两台电脑同时发现信道空闲,那么两台电脑同时发出数据就会发生碰撞,那么为了检测这种冲突就有了CD,CD规定,如果出现这种情况,所有电脑都立即停止发送数据,每台电脑都随机等待一个时间(注意是随机,也就是说大家等待的时间不同,避免再次冲突)后,再回到CSMA,先去检查公共道路是否空闲。
3.如果集线器上连接的设备很多,冲突就越难避免,那么以太网是怎么发展成主流的呢?那是因为交换机出现了。Hub连接电脑的所有端口属于同一个冲突域,而交换机的每个端口都是一个单独的冲突域。换句话说,交换机任意两个端口之间传输数据,不影响其他端口同时传输数据。这就是交换式以太网,公共道路上同一时间可以有多台电脑同时在传数据。
4.一台交换机可以连接多台电脑,那么为了区分这些电脑就需要有一个标识,这个标识就是MAC地址,MAC地址是唯一的。MAC地址长度为48位,即6个字节,形如00:12:34:56:78:9A,有了MAC地址,那么交换机记录MAC地址的表就叫做MAC地址表
地址分别是电脑A、B、C、D的地址,每个地址对应着连接哪个端口,还有个老化时间,这是为了更好地利用内存资源,把超过老化时间的表项删除,节省内存。每个MAC地址表项的初始老化时间是300秒。比如要给地址A发数据,查了一下A在MAC地址表中端口号为1,就从1号端口发出,那么如果不在呢?不在交换机会把这个数据复制成很多份,从除了接收数据的端口1外的其他所有端口发出去!我们把MAC地址表中找不到收件人MAC地址的数据,叫“未知单播帧”,交换机把“未知单播帧”从其他所有端口发出去的行为,叫“泛洪”。只有一种情况MAC地址不会转发,就是你要转发的地址的端口号和你这个信息进入交换机的端口号一样,这个可以自行思考
以下是MAC帧的封装格式
要发的数据是Data。电脑A在发送之前,需要填上收件人地址DMAC、发件人地址SMAC(就是自己的MAC地址),Type是告诉收件人,收到后把数据交给谁处理,CRC是为了避免数据在路上出错。
5.发件人在发送数据之前需要知道对方电脑的MAC地址,如果不知道MAC地址只知道IP地址怎么办?这个就是ARP(地址解析协议)解决的问题了。我们假设MAC地址是电脑的身份证号,那么IP地址就是电脑的名字。我们先来了解一下IP地址:
IP地址,就是你的电脑在网络中的名字,别人用它来找你;
子网掩码,可以通过它和IP地址,知道你的电脑属于哪个子网(如果把网络看成一幢大楼,子网就是每个楼层或者每个房间,可大可小。去楼层或房间找你,比在整个大楼找要容易得多);
网关,你所在子网通往其他子网的出入口。
比如,你的电脑IP地址是192.168.1.20,子网掩码是255.255.255.0,通过“按位与”,可以计算出你的子网号。
当两台电脑的子网号相同时,我们可以认为它俩在同一个网络,可以理解为同一个房间,直接互访就行,不用出门;如果子网号不相同,那它们要互访就需要通过网关这个出入口了。网关,就好像房间的门,一般都是路由。
所以接下来假设A要给B发信息,然后A知道B的IP地址不知道MAC地址,所以交换机现在不知道从哪个端口发出,那么我们就要先通过A的子网掩码来计算A和B是不是在一个网路,是的话就直接广播发出ARP协议的request报文询问B的MAC地址,其他电脑收到后发现是广播报文,拆开后发现封装的是ARP协议,然后发现询问的IP地址不是自己的就丢弃,如果是就单播回传ARP的reply报文,然后A收到后就会把这个信息写进自己的ARP表,下回再询问的时候就不用再发送了。
如果A和B的子网不同呢?ARP会去大声问网关的MAC地址,得到回复后把数据封装成以太网格式发给网关(收件人destination是网关的MAC地址)。后面的事情电脑就不管了,由网关去完成。
6.网关收到A发出的以太网帧后发现MAC地址是自己的,那么就直接把数据占为己有了怎么办?所以就需要还要有IP地址来指出真正的收件人。IP协议设计的初衷就是为了提高网络的可扩展性,比如实现不同“房间”内的电脑之间的通信,实现网络间的互连。
那么为什么既要有IP地址又要有MAC地址呢?
MAC地址不包含位置信息,只知道MAC地址无法通过它找到别人,而IP地址不管范围多大都能找到你,但是IP地址的地址资源有限并且电脑的IP地址是可以变化的,如果电脑的IP地址今天和明天不同找人就会很麻烦,但是MAC地址是固定不变的,所以就用ARP协议把多变的IP地址和唯一不变的MAC地址建立对应关系即可
IP协议用于实现不同网络之间的互通,所有具备路由功能的网络设备都能实现IP寻址,比如路由器。网关也是具备路由功能的设备,可以是路由器,也可以是其他设备。
IP协议把上层的应用层的TCP/UDP报文封装成IP数据报,格式如下
7.电脑之间通信的格式
详解电脑间通信