日常开发主要是应用层,传输层和应用层密切交互,传输层用到的也不少。网络层以及再往下,日常开发就涉及到的非常少了
认识以太网
插网线的上网方式
80211
是无线 WiFi 上网方式
mac 地址
- 一般一个网卡,在出场的时候,mac 地址就被分配好了,就写死了(不能改了)
- mac 地址也可以作为设备的身份标识
比如,你花钱买外挂,一般的外挂都是“绑定机器”的(防止你进行二次售卖),这就可以通过记录设备的 mac 地址来实现
- 当你买了这个挂之后,人家就会在服务器上记录你这个设备的 mac 地址
- 如果你之后给别人登录这个程序,被发现 mac 地址不一样,就没法使用
mac 地址和 IP 地址的区别
mac
地址使用 6 个字节,IP 地址 4 个字节
- 空间范围比 IP 地址大了 6w 多倍
mac
地址当前仍然可以给每个设备都分配一个唯一的mac
地址
mac
地址使用在数据链路层,用来实现两个设备之间的数据转发——微观;IP
地址使用在网络层,立足于整个转发流程,进行路经规划——宏观
理论上来说,搞一套地址也能完成宏观和微观地址上的所有工作,IP 地址和 mac 地址留一组就可以了,但实际上两个都留下来了,分配了不同的任务(不是技术问题,而是历史遗留问题)。
IP 地址和 mac 地址是两伙人,在同一个时间段各自独立提出的。两伙人都觉得自己的东西好,于是大家就综合一下,你这个地址负责这块;你那块地址负责那块就可以了
举个栗子:西安到吉林省白城市安广镇
第一步:路径规划(网络层)
西安—>北京—>长春—>白城—>安广
西安—>北京—>沈阳—>白城—>安广
西安—>长春—>白城—>安广
…
第二步:实施(选择第一条线路)
- 坐飞机
源IP
:西安;目的IP
:安广;
源mac
:西安;目的mac
:北京- 坐高铁
源IP
:西安;目的IP
:安广
源mac
:北京;目的mac
:长春- 坐大巴
源IP
:西安;目的IP
:安广
源 mac:长春;目的 mac:白城- 坐出租车
源IP
:西安;目的IP
:安广
源mac
:白城;目的mac
:安广
.
上述场景不考虑NAT
,源 IP 和目的 IP 始终都是固定的。以太网数据帧里面的 mac 地址,会随着转发的过程,时刻发生改变(每经过一个交换机/路由器就会产生上述变化),牢牢抓住了下一个数据要往哪传输这样的要点
类型
描述了载荷中是什么样的数据
0800
(十六进制),IP 数据报0806
,ARP
报文0835
,RARP
报文
后俩不传输业务数据,而是给转发功能提供辅助的措施
ARP 协议
ARP 数据报/协议,可以视为是让当前设备能获取到周围设备的 IP 地址和 mac 地址之间的映射关系
在 IP 协议的路由转发过程中,都是拿着 IP 地址来进行查路由表的操作的,得到的是“网络接口”(抽象的概念)。更具体的的话,就需要知道传输给目标对象的 mac 地址,这个环节中就涉及到 IP 地址到 mac 地址的转换。ARP 就是用来建立上述的映射关系的
当前设备接入网络的时候,就会往广播地址发送 ARP 报文。收到 ARP 请求的设备就会返回 ARP 响应,响应中就会告知自己的 IP 和 mac
MTU
数据链路层数据帧的最大载荷长度为 1500
字节,相当于 1.5kb
,把这个数字称为 MTU
MTU
是和硬件直接相关的,硬件不同,所对应的 MTU
也可能是不一样的
- 不同的硬件设备硬件设备,就对应到了不同的数据链路层协议,就对应到了不同的
MTU
以太网,其实是很短的,只有 1.5kb
,IP/UDP
至少还是 64kb
- 此处
MTU
的限制,就会对上层协议产生直接影响 IP
协议能拆包组包,实际上更多的是应对MTU
的限制(到 1500 的时候就被砍了,远远不到64kb
的时候)- 当一个
IP
数据报,达到1500
以上的时候,就会自动拆包了