世界上最简单的网络就是用一根线把两台计算机连起来,这个看似简单的连接过程其实一点也不简单。首先这根线得有讲究,随便找一根麻绳那肯定是不行的;其次两台计算机得各自有“连接点”;最后两台计算机之间必须约定一套通讯协议。
所以我们总结出来了网络的三要素:
传输介质(网线);
网络适配器(网卡);
数据传输协议
基于这三方面考虑世界上曾经出现过很多网络,令牌环、AppleTalk、FDDI,还有今天的主角——以太网。以太网规定了通讯介质——铜线、双绞线、光纤,网络传输介质的物理接口,一套数据传输协议。时至今日以太网几乎成为了网络的代名词,它成功干掉各种对手的关键愿意是采用了廉价的传输介质,设计了一套非常简单的数据传输协议。
以太网为每个终端(计算机)分配了一个6字节的唯一地址——MAC地址;通讯格式非常简单
目标地址+源地址+类型(2字节)构成了以太网的头部——14字节,冗余校验是固定的4字节,一个组这样的数据叫一个帧(Frame)。以太网帧格式里面没有表示长度的字段,这是因为以太帧的长度是被硬件限制死的——最大1518字节;去掉固定以太网头部+冗余校验(共18字节)剩下的“负载”最大是1500字节。这就是MTU的来历。
类型字段的用途主要是出于兼容性考虑,一些“老炮”可能知道Novell的IPX协议(没有这个协议玩不了红警,哈哈),它要比以太网出现的早,以太网在设计的时候专门用一个字段来兼容这种协议。
以太网是一种共享传输介质的网络,网络上的所有终端(计算机)都共享同一套传输介质(网线)。但是一根传输介质同一时刻肯定只能传输一个终端数据,如果两个终端同时传输就会发生碰撞。以太网设计了一种简单的算法——“带冲突检测的载波监听多路访问技术(CSMA/CD)”,简单描述一下它的过程
这种算法非常简单,是一种对等“架构”;缺点也非常明显——速度慢到令人发指。很多事实都证明在一个东西刚起步的时候——便宜、巨烂但是能工作的东西要好过很贵、优秀能很好的工作的东西;以太网的算法虽然很低效但是非常容易实现,而且对于通讯介质不挑剔,所以它很快的占领了市场最终成为了绝对的霸主。以太网现在几乎是网络的代名词。
以太网是用一个6字节的数据来标识通讯地址,这个就是MAC地址。以太网保留了00:00:00:00:00:00这个特殊地址标识“广播”,发向该地址的数据包可以被网络上所有终端接收到。这个限制只能由“网卡”实现的,碰到不属于自己MAC地址的数据包和非广播(组播)包就丢弃,我们可以通过设置网卡忽略这个限制,这就是混杂模式。每条以太网链路都是一个冲突域,因为在这个链路上传送数据包都可能发生冲突。所以,广播域是指A发的广播数据包B能收到(处于混杂模式的时候A发的任何数据包B都能收到);冲突域是指A发送的数据包和B发送的数据包可能产生碰撞。这是两个完全不同维度的概念。如果世界上没有交换机那么广播域就等于冲突域,假如A、B分别连接在交换机的不同端口,A发送的数据包是到达交换机的这时候由交换机决定是否转发数据包到B。A->交换机这条链路和交换机->B是完全不同的链路所以不可能冲突的。
欢迎关注公众账号了解更多信息“写程序的康德——思考、批判、理性”