由于在传统的共享以太网中,所有的节点共享传输介质,所以同一时间只能允许2台计算机之间通信,如果多台计算机想要同时通信,就会导致数据“粘包”或堵塞。于是以太网采用了: CSMA/CD协议(基带冲突检测的载波监听多路访问技术):
这个协议的作用是:证传输介质有序、高效地为许多节点提供传输服务,换句话说,就是每个主机发送信息前要先进行载波监听(看这个网络有没有人用),有人用就等待,没人用就立即发信号并监听,一旦发生了冲突,就后退一段随机时间,然后在检测。
交换机:
这样就又有一个问题了,在网络负载增大时,发送时间增长,发送效率急剧下降(就是在同一时刻发生了冲突,大家都不发送了)。那么,我们就需要一个新的解决方案了,将一个大网络切割成小网络,这样就可以使小网络内部之间的通信就相对流畅了。
小网络之间通过交换机/网桥进行通信,交换机/网桥中有一个mac地址表(存放着网络上的节点的网卡MAC地址),通过mac表实现小网络之间的通信。
MAC地址表动态生成的过程:
1)主机A将一个源MAC地址(一共48位:前24bits由IEEE的注册管理机构RA分配给不同厂家,后24bits:厂商自己定)为自己,目标MAC地址主机C的数据帧发送给交换机
2)交换机1收到此数据帧后,会学习源MAC地址,并检查MAC地址表,发现没有目标MAC地址的记录,则会将数据帧广播(发送每一个主机一份)出去,主机B和交换机2都会收到此数据帧。
3)交换机2收到此数据帧后也会将数据帧中的源MAC地址和对应的接口记录到MAC地址表中,并检查自己的MAC地址表,发现没有目标MAC地址的记录,则会广播此数据帧。
4)主机C收到数据帧后,会响应这个数据帧,并回复一个源MAC地址为自己的数据帧,这时交换机1和交换机1都会将主机C的MAC地址记录到自己的MAC地址表中,并且以单播的形式将此数据帧发送给主机A。
5)这时,主机A和主机C通信就是一单播的形式传输数据帧了,主机B和主机C通信如上述过程一样,因此交换机2的MAC地址表中记录着主机A和主机B的MAC地址都对应接口f 0/1。
路由器:
以上这种方法解决了冲突域的问题,但是会产生广播域的问题(广播过于频繁,会导致广播过多,引起主机之间不发送数据了,光广播了)
所以我们通过路由器来解决广播域的问题,路由系统连接着交换机
相比于交换机,路由器并不通过MAC地址来确定转发数据的目的地址。路由器工作在网络层,利用不同网络的ID号(IP地址+子网掩码)来确定数据转发的目的地址,路由器通过IP地址将连接到其端口的设备划分为不同的网络(子网),每个端口下连接的网络即为一个广播域,广播数据不会扩散到该端口以外,因此我们说路由器隔离了广播域。
进程之间的通信:
由于真正通信的是进程之间进行通信,所以我们是通过套接字(ip:port),这种方式使进程之间进行通信的。
应用层协议(url):
由于我们访问网站的时候,只会获得相应网址的内容,所以url是标记套接字上哪个资源的位置。
网络7层协议
应用层
表示层 前三个是:资源子网
会话层
传输层:源port --> 目标port
网络层:源IP --> 目标IP 后4个是通信子网
数据链路层:本地通信
物理层:物理电缆