为什么要进行网络层次划分?
网络分层其实符合了程序设计原则中的单一职责原则,每个层次做不同的事情,层与层之间的改动互不影响。
网络分层图
各层的作用
物理层
数据链路层
通过一些规程或协议(以太网协议)来控制两个相邻节点之间数据的传输,也就是"一跳",以保证传输数据的正确性;
它的主要任务是负责在两个相邻节点之间的线路上无差错地传输以帧为单位的数据。数据链路层将数据分解成帧,然后按顺序传输帧,每一帧包括数据和必要的控制信息(包括同步信息、地址信息、差错控制信息和流量控制信息等);
数据链路层负责解决两个直接相邻节点之间的通信,但并不负责解决数据经过通信子网中多个转接节点时的通信问题,而是由网络层解决。
物理层是构成计算机网络的基础,所有的通信设备、主机都需要通过物理线路互联。物理层建立在传输介质的基础上,是系统和传输介质的物理接口,它是OSI模型的最低层;
物理层为设备之间的数据通信提供传输媒体及互连设备,为数据传输提供可靠的环境。如果想要用尽量少的词来记住这个第一层,那就是"信号"和"介质"。
网络层
传输层
传输层的主要功能就是为了能够实现“端口到端口”的通信。计算机上运行的不同程序都会监听不同的端口,所以才能使得数据能够正确的传送给不同的应用程序,不然就会出现你在聊微信,结果一条游戏的消息出现在你的微信中(此处只是一个比方);
将应用层需要发送的数据在必要时对数据进行分割然后将数据传递到网络层,并确保数据能正确无误地传送到网络层;
传输层的数据传输单元是报文段(segment),简称报文。该层协议的代表包括TCP、UDP等。
应用层
这个就比较简单了,就是你的软件咯,各个软件之间的传输的数据格式都是有约定的,比如http、ftp、smtp等协议。否则发送的数据对方就不知道是什么鬼,无法正确解析。
它在数据链路层提供的两个相邻端之间的数据帧的传送功能上,进一步管理网络中的数据通信,将数据设法从源端经过若干个中间节点传送到目的端;
它通过路由选择算法,为分组通过通信子网选择最适当的路径,以实现网络的互连功能;通俗点说就是要规划好所有"跳"的路线,因为网络上有那么多网关(如路由器),如何找到最佳路线到达终点这是一个很复杂的事情;
网络层负责在网络中传送的数据单元是分组或包。
总结
此文只是一个初步的笼统的分析,具体到每一层做的那些细致性的东西,后续我们再探究。