目录
网络协议如何分层
引入
osi模型
tcp/ip模型
引入
命名由来
介绍
物理层
数据链路层
网络层
传输层
应用层
中间设备
网络协议如何分层
引入
我们已经知道了网络协议是层状结构,接下来就来了解了解下网络协议如何分层
- 常见的网络协议分层模型是OSI模型 和 TCP/IP模型
osi模型
- osi模型称为开放式系统互联参考模型,是一个逻辑上的定义和规范
- 包含七个层次,它提供了一个框架,完善地描述了在网络通信中各层次的逻辑功能
tcp/ip模型
引入
虽然osi模型很好,但是在实际工程中,我们发现了许多问题
- 我们本来是要把网络功能直接写在内核里的 (因为我们每台电脑都要联网,并且要保证使用统一的标准,所以干脆将网络协议整合到操作系统中,这样就不会出现因为协议不同而导致无法通信的问题了)
- 但是在实操中,发现会话层和表示层不好在os中实现
- 于是这两层并没有实际落地,而是将这两层统一看作应用层,在应用层的协议中实现这两层
- 所以,在实际实现时只剩下了五层
命名由来
- 站在os角度,最重要的两层是网络层和运输层(因为最终只有这两层被实际写在了os内)
- 而他们两个最具有代表性的协议分别是ip协议和tcp协议,所以这五层网络协议栈也被叫做tcp/ip协议栈
由于物理层我们考虑的比较少,因此很多时候也可以称为 tcp/ip四层模型
介绍
物理层
- 确保了数字数据与实际的传输介质之间的互换,包括将数字数据转换为适合传输介质的信号(光/电信号),以及从接收到的信号还原为数字数据
- 比如现在以太网通用的网线(双绞线)、早期以太网采用的的同轴电缆(现在主要用于有线电视)、光纤, 现在的wifi无线网使用电磁波等,这些都属于物理层的概念
- 物理层的能力决定了最大传输速率、传输距离、抗干扰性等属性
- 集线器(Hub)工作在物理层
数据链路层
- 主要负责两个功能:帧的封装/解析和链路管理
- (数据帧 -- 在数据链路层传输数据的一种结构化格式)
- 负责将从网络层接收到的数据封装成帧,将收到的帧解析后传递给网络层:
- 下图很详细 -- 来源于https://www.cnblogs.com/caijinghong/p/15887860.html
- 协调多个设备之间的数据传输(包括帧的流量控制、错误检测和纠正、以及数据链路层的访问控制),检查帧中的地址信息,以确定这个帧是否是发给当前设备的
- 有以太网、令牌环网, 无线LAN等标准(也就是协议)
- 交换机(Switch)工作在数据链路层
网络层
- 负责地址管理和路由选择
- 例如,在IP协议中, 通过IP地址来标识一台主机, 并通过路由表的方式规划出两台主机之间的数据传输的线路
- 路由器(Router)工作在网路层
传输层
- 负责两台主机之间的数据传输
- 如传输控制协议 (TCP), 能够确保数据可靠的从源主机发送到目标主机
- 没有特定的物理设备与传输层直接对应,传输层主要工作在os中,提供一些协议和机制,以确保应用程序之间的有效通信
应用层
- 负责应用程序间沟通
- 如简单电子邮件传输(SMTP)、文件传输协议(FTP)、网络远程访问协议(Telnet)等
- 我们的网络编程主要就是针对应用层
中间设备
随着网络功能的复杂,需要更多的设备来支持,所以会增加一些中间设备,来辅助网络功能的实现
- 比如路由器,交换机,集线器,网卡等等
这些设备会具备各自层次的功能,但不仅仅只有这个功能
在实际网络中,它们经常需要相互协作以提供综合的网络服务
- 例如,路由器不仅进行网络层的路由,还可能包括数据链路层的交换功能
- 交换机虽然主要是数据链路层的设备,但在实现VLAN时可能涉及到网络层的信息