osi 七层模型
七层模型是基础,而 tcp/ip 四层模型是基于 osi 模型精简而来。七层模型的作用从下到上分别是
- 物理层: 负责物理介质的传输,并转化为二进制的数据。例如通过双绞线,光纤,无线电波等传输二进制数据。
- 数据链路层: 负责把要传输的数据封装成一个帧,帧包含5部分,包括源 mac 地址,目标 mac 地址,类型(IPV4/IPV6),传输数据 (最大1500字节,MTU=1500),FCS (帧校验)。从结构可以看出数据链路层只认 mac 地址,mac 地址理论上是全世界唯一的,从 mac 的前缀也可以看出是哪个厂商生产的网卡。常见的数据链路层协议有 ARP 协议。
从 wireshark 抓包看是看不到 FCS 的,因为 FCS 是默认通过硬件进行校验的,校验之后就丢了,所以 wireshark 也抓不了。
- 网络层: 负责2个节点的通讯,让上层对通讯保持透明。如果2个节点相连,可以直接通过 mac 地址就可以进行通讯了。但如果网络规模很大,拓扑结构复杂,两个节点就不能再通过 mac 地址通讯了,必须要进行分组。而 ip 就可以很方便的进行分组。因此这层核心就是 ip 协议,根据 ip 地址进行路由,同时提供堵塞控制。因为 ip 协议比较复杂,后面的文章再单独介绍。常用的 ping 用到的 ICMP 协议,计算动态路由的 ospf 协议都属于网络层。
- 传输层: 负责应用程序端到端的传输,负责传输控制,流量控制。端也就是端口,0-65535。可以看出这里已经和应用程序有关了,应用程序可以选择不同的端口进行通讯。TCP 和 UDP 就是这层的协议。
- 会话层: 负责建立,管理和终止会话。这里和上面的传输不同,一次端到端的传输可以包含多次会话,一次会话也可以包含多次端到端的连接。只和程序怎么定义会话有关。
- 表示层: 负责数据的序列化,加密,压缩等。例如 rpc 的序列化方式,TLS 的加密方式等。
- 应用层: 用户可以直接访问的服务,例如 SMTP(邮件),http,ssh 等。
TCP/IP 四层模型
因为应用层,表示层,会话层一般都是一起设计,例如 http 的设计就包含了这三层,因此为了方便就合并到一起了。
而数据链路层和物理层都偏底层和硬件处理,一般上层设计也用不上且管不了,所以就合并到一层了。但是如果我们需要学习交换机,就需要单独学习数据链路层的协议。因为交换机是作用在二层协议的,也就是数据链路层的。所以我们说的,二层(数据链路层),三层(网络层),四层(传输层),七层(应用层) 都是基于 osi 的七层模型。
总结
从物理层到应用层,与我们程序员的关系越来越密切,也越来越复杂。还有很多需要我们掌握的。我们下篇文章会从集线器->交换机->路由器->代理服务器的历史来进一步了解各层的差异。