本文是整理B站up主free-coder的视频【网络】半小时看懂<计算机网络>,以备日后复习翻阅!
最开始要使计算机之间实现通信,采用的是两台计算机之间互联通信线路。
这样的方式进行计算机之间的通信会耗费大量的通信资源,而且不方便管理。
于是人们在这种模式上加入了转发和标识,转发就是通过集线器(Hub)进行代理转发,不用要求两两计算机之间都要连接通信线路,而只需要将所有的计算机与集线器Hub连接即可,如若发送数据由集线器代理转发。标识就是在计算机接收通过集线器转发的数据时,如果标识是本台计算机要接收的数据,那么接收,否则就会丢弃。
举个例子:
1要给4发送数据,那么首先1的数据会到集线器,然后由集线器广播(无条件转发)到2,3,4,5,然而2,3,5并不是要接收数据的标识,因此都丢弃数据,只有4接收数据。
这样的话就会存在一个问题,如果2也要发送数据,集线器无法分辨是1还是2发的数据,全部都广播出去,导致4可能接收到的数据是1和2的混合数据。
解决的办法就是采用CSMA/CD载波侦听检测链路上是否有人要发送数据,可以防止冲突。注意CSMA/CD是用在数据链路层的介质访问控制层(MAC层),管理着物理层,多用在以太网中。如果无线局域网,使用CSMA/CA。
但是集线器也会存在缺点:带宽利用率低,链路上只能由一个设备发送数据;集线器只适用于小规模网络工作于物理层。
首先交换机是维护着一张表(mac地址–端口),注意这个端口不是指的应用层的端口号,而是单纯的交换机的端口是几号。
其次交换机是可以实现全双工通信的,比如1号在发送数据时也可以接收数据。
如果1要给3发送数据,1先发送给sw交换机,交换机再到自己维护的表中查找计算机3的mac地址mac3对应的端口号是3,那么数据就从交换机的3号口发送给了3。
缺点:维持表的数据才几千,网络规模大的场景不适用。
**问题:**交换机确实满足了小规模家用局域网的互联互通,但是互联网的目的是跨局域网的全球互联,这个时候交换机就不能满足需求了,那么什么设备能够实现跨网络之间进行数据转发呢?
引入路由器的初衷就是为了实现跨网络时进行数据转发。
跟交换机一样,路由器也维护着一张表,建立这张表的过程有很多算法进行实现。
IP地址的作用:标识网络和标识设备。
**问题:**如果认为IP直接能找到对应的主机,那岂不是不需要mac地址了?(同样可以问:有了IP地址,还需要mac地址吗?)
首先得知道IP是抽象的地址,不能用作直接通信,只能使用mac地址直接通信。
那么192.168.1.52向192.168.1.254发送数据的过程:
1、查1.254的mac地址(通过ARP协议可查得)
2、mac层传输
传输过程中IP的源目地址是不变的。(特例是NAT协议时IP会变)。
如果想要了解NAT协议可参考
NAT转换是怎么工作的? - 网工Fox的回答 - 知乎
https://www.zhihu.com/question/31332694/answer/1917791148
ARP协议整理自黑马的linux网络编程
那么对于ARP数据报格式
ARP的过程:
这里的arp1目的mac地址是广播地址,应该是ff:ff:ff:ff:ff:ff
arp1是从192.168.1.20广播到路由192.168.1.35的arp数据报格式,然后由192.168.1.35的路由填充arp1的目的mac和接收端mac进行返回,这样192.168.1.20就拿到了目的mac地址。
简单来说ARP就是获取下一跳的mac地址的协议,获取的mac地址就是数据包要发送的下一个路由的mac地址。
数据包寻路:在寻路的过程当中,最终的目的ip是在网络层的IP协议中。在每次经过一个路由时,会将以太网帧和ip协议拆开暴露出来,然后ip协议可以通过查看当前路由器的路由表查询到下一跳的ip地址,然后填入到arp中,通过arp获得下一跳的mac地址,然后依次这样向前寻路,直至将数据包传送到最终的ip地址。
如果路由节点之间网络传输存在问题,那么可能会出现在一个环路里面死循环,会拥塞网络。那么处理的办法就是TTL,就是最大生命周期,比如初始值是56,经过一跳之后就减一,如果TTL为0还没有传输完成,那么路由器就会丢弃数据包。
1、集线器在物理层通过广播形式转发数据;交换机工作在数据链路层,通过mac地址转发数据。
2、集线器内部采用总线型拓扑,各个节点共有一条总线进行通信,数据包的发送和接收采用CSMA/CD协议,在同一时间内必须是单向的,只能维持在半双工模式下;交换机上的两个端口之间是相互独立的,可以实现全双工通信,两个端口可以同时收发数据。
路由器和交换机的不同之处有哪些? - 冯若航的回答 - 知乎
https://www.zhihu.com/question/20465477/answer/18025629
1、工作层次方面:交换机工作在数据链路层;路由器工作在网络层。
2、转发依据方面:交换机转发所依据的对象是mac地址;路由器转发所依据的对象是IP地址。
3、主要功能方面:交换机用于组建规模小的局域网;路由器则是将交换机组建好的局域网连接起来,即实现跨网络数据转发。