注:所有标题带h的博客不保证准确性和正确性。
写这篇博客原因是因为网络知识学了又忘,忘又学,翻来覆去。所以做个笔记。正如上文注明,此篇博客所写内容不够准确和专业,甚至不正确,只是为了便于理解记忆。
概念
- 以太网 ethernet
- 双绞线 同轴线缆 光缆
- 线路仲裁
网络模型
过程
现在两个主机要通信。线缆传输电磁信号,光缆传输光信号。计算机只能理解高低电平,那么一段高电平信号到达目标主机后,是一个高电平还是几个高电平就需要提前协商好,这就是协议。现在两个主机相连,如图:
现在两个主机相连,甚是简单,一个发一个收,也没有别的干扰。如果两个机器也就简单了,现在加入一台C,如图:
实际上A看来是这样的:
A根本不知道谁是谁,也不知道该把信息发给谁,为了区别就引入了MAC地址,至于为啥叫MAC地址,而不叫MAC_XX,可以这样想A发送数据是要找到接收者在哪也就是地址,就像发快递要填地址,一个意思。
看一个复杂点的网络,如图:
路由表中黑色字体的记录代表自己的网络,绿色代表可通过自己的端口联通的网络
现在要从主机 A(ip:1.1,网关:1.5) 发送数据到 N(ip:6.2,网关: 6.5) 。看数据包的处理过程:
- 首先A肯定已经获得了N的ip地址,就像访问Google就肯定已经知道了他的地址(域名也要解析成地址)
- A组织IP报文:src:1.1; dst:6.2 ; … data: …
- A组织MAC报文:使用IP的src与自己的 子网掩码 做 与 运算,得到:1.0,使用dst与自己的子网掩码做 与 运算得到6.0,发现值不同,目标地址和自己不是一个网络,是外部通信,发往网关。在A的网络配置中只配置了网关的ip地址,没有mac地址,A 需要将ip转换为mac地址,就吼一嗓子(广播)谁的ip地址是1.5把你的mac给我,交换机S1收到后,将广播信号发给每个端口,R1作为网关收到后回复,A就得到了网关的mac地址,这就是arp。 于是mac报文类似: src:MAC-A; dst:MAC-R1;data:(IP [src:1.1; dst:6.2 ]…),mac报文发给S1,S1收到信号后发现不是广播,于是查表R1在4号端口,将报文给4号口
- R1收到报文后,拆mac报文得到其中data内容,发现目的ip地址属于6.0网络,查表发现3号端口联通6.0网络。组织mac报文: **src:MAC-R1; dst:MAC-R2;data:(IP [src:1.1; dst:6.2 ]…)**发给R2
- R2收到报文重复R1操作,得到6.0网络在自己的2号端口可联通。于是组织mac报文:src:MAC-R2; dst:MAC-R3;data:(IP [src:1.1; dst:6.2 ]…),发给R3
- R3收到报文继续R1操作,发现6.0网络就是自己的2号端口的网络,于是进行arp根据ip:6.2得到N的mac地址。于是组织mac报文:src:MAC-R3; dst:MAC-N;data:(IP [src:1.1; dst:6.2 ]…),发给N
- N收到mac报文,拆mac报文,得到data,读ip报文首部,发现目标ip地址正是自己,于是拆ip报文体,得到数据,传输结束。