数据包在网络中的流转

文分为两部分   基础概念介绍 和数据包在网络中流转的过程

 

1.啥是集线器

从0开始,当一台机器A想与机器B发消息,连一根实体线即可完成(假设这根线很牛逼,连上就能通消息)

两台机器交互没有问题,如果一台机器A想与B,C,D,E,F五台机器通信,他就需要扯五根线,

如果六台机器想互相通信那就得扯十五条,十分尴尬。 so 有了集线器,每台机器只需要和集线器扯一根线即可

机器A都发消息到集线器中转,再由集线器转发至所有的机器。

每台机器接到消息再通过MAC地址判断该消息是不是自己接收。属于无脑广播类型,

集线器属于网络分层中的最底层——物理层

 

集线器的主要问题在于每个消息都要广播发给所有连接的机器,开销极大。  引入交换机来解决。

 

2.啥是交换机

交换机这东西可以理解为一个plus版的集线器

 交换机维护了一份MAC地址表

当机器A想发消息给机器C,A只需要将消息发给交换机,交换机找到C的MAC地址,然后单独发给C 而不是广播。

 

交换机如何构建这个MAC地址表呢?

很简单,不知道MAC地址是哪台机器还是广播,广播给所有连接交换机的机器,当C发现MAC地址是自己然后响应,MAC地址表记录下来,就得这么一点点构建。

 

单台交换机的端口有限,只能支撑那么几个机器连接。

那么多台机器可以通过交换机与交换机连接

 如果当一台交换机需要对接的交换机多了起来,还是会出现端口不够用情况,因此引入了路由器。

 

 

3.啥是路由器

路由器也是作为一个转发的中转站,每个路由器有自己独立的MAC地址。路由器的每个端口都代表了独立的MAC地址

路由器属于网络层,通过IP地址进行转发

 

4. 啥是子网

ip地址通过子网掩码进行与运算后相等的,就是在同一子网,不相等就不在同一子网。

在同一子网的机器可以仅通过交换机,通过MAC地址就能通信。

不在同一子网的机器就需要通过路由器转发来实现最终通信。

 

5. 啥是默认网关

我新到手一台机器A想通过互联网通信,第一时间要配置默认网关——也就是路由器的ip

机器A发现要发送的机器ip是外网的,直接把消息发给默认网关,剩下的不用管了,默认网关去做转发。

 

6.完整的流转过程

好,依据上边的图,我现在拥有一台机器A,今天刚装的宽带 村里通了网,我想往隔壁村的 机器H发一条消息。

我们首先要知道成功的发送一条消息的数据头信息的几个必要字段

我现在机器A已知的信息:  

机器A的MAC地址,机器A的IP地址,机器A的子网掩码,默认网关,要发送的机器H的IP地址

 

第一步

那么机器A首先通过子网掩码,判断机器H的IP地址是否与A是同一子网。

发现并不是,那么把消息丢给默认网关,也就是路由器。

此时源MAC地址就是:MAC_机器A      目标MAC地址:MAC_路由器      源IP地址:IP_机器A  目标IP地址:IP_机器H

其中MAC_路由器如何知道呢?

ARP协议,可通过IP地址找到对应MAC地址。原理也是先广播,后缓存

 

第二步

机器A打包将数据包发给连接的交换机,交换机通过MAC地址映射表找到具体哪台机器是路由器 (表中没有就广播去找),然后发出去

 

第三步

路由器此刻拿到这个数据包,此时通过ARP协议,找到 IP_机器H 对应的MAC地址  MAC_机器H,填到目标MAC地址的位置

看到目标IP为 IP_机器H,便从路由表中查到这个IP对应路由器的哪个端口,选择该端口发出数据包。

(路由表是路由器自己维护的表,由路由算法+人工配置生成。通过路由表可以查到某个子网的ip对应路由器的哪个端口)

 

第四步

包从路由器的端口出来,发到对应的交换机上。

交换机再通过MAC地址表,找到MAC地址对应的机器H,最终消息到达。

 

 

 

7. 再看网络分层与对应的协议

TCP/IP 五层模型是以 OSI 七层优化而来

自底向上依次是  物理层,数据链路层,网络层,传输层,应用层

 

物理层           没有感情的物理电信号传输

数据链路层    通过交换机来中转,通过MAC地址来识别           主要解决的问题就是通过MAC地址映射表,找到想要发送的MAC是哪台机器

网络层           通过路由器来中转,通过IP地址来识别              典型的协议就是IP协议,ARP协议                  主要解决的问题就是分清内网外网,通过下一跳准确路由到路由器,并通过IP地址找到MAC地址

传输层           这时候就上升到了操作系统端口,套接字等层面      典型的协议就是 TCP协议,UDP协议      主要解决的问题就是数据包收发的可靠性等问题

应用层        到这包已经能完美的发到对应的机器上,问题就在于怎么解析这个包     典型的协议就是HTTP协议,FTP协议等     主要解决的就是千辛万苦来的包怎么解析成你想要的样子                

 

over

posted @ 2022-01-10 20:35  六小扛把子  阅读(404)  评论(0编辑  收藏  举报