概述
计算机网络学习的核心是各种网络协议的学习。网络协议就是一套大家规定俗称的的网络通信标准。国际标准化组织(ISO)在1978年提出了“开放系统互连参考模型”,这就是著名的OSI/RM模型。它将计算机网络体系结构的通信协议划分为7层,自上而下依次分为:应用层、表示层、会话层、传输层、网络层、数据链路层、物理层。对于TCP/IP五层协议,可以去掉表示层,会话层。主机间的每次信息传输都需要经过这些层。如下图:
箭头代表信息,传递方向。主机A要向主机B传递信息,信息从顶层向下传递,每一层都会用对应协议对数据进行封装。图片中的协议只是举个例子,具体还是看情况。信息传输到主机B后,就用各层相对应的协议拆解信息。途中经过若干个路由器,路由器用于转发。路由器这边同样是拆解和封装。那么**网络协议为什么要进行分层呢?**参考几篇博客()后,得出以下想法:
- 封装下层的变化,使得下层操作对上层而言是透明的。就想我们平时写程序一样,不会将复杂的功能一次性都写在一个函数里,而是会封装成不同功能的函数,然后组合拼接。这里也是同样的道理。
- 做到协议是水平的,服务是垂直的。可以看到,相同层之间是水平的,方便进行封装和拆解。不同层之间是垂直的,下层为上层提供服务。
下面简单的介绍一下各层。具体内容之后的博客会写并在此提供连接。
应用层
每个应用层协议都是为了解决某一类应用问题。不同的应用要求有不同的协议。常用的协议有HTTP协议、DNS协议、FTP协议等。
这里就简单一下DNS协议和FTP协议。Http协议可以看这篇博客https://blog.csdn.net/weixin_43219146/article/details/115832166
DNS协议(域名转化协议),用来将我们平常输入的网址转转缓存具体要访问的ip地址。端口号是53。每个网址极其具体对应的ip会存在DNS服务器中,需要写去访问DNS服务器得到网址对应ip地址。
FTP协议(文件传输协议),用来主机之间传送文件的。他特殊的地方就是开放两个端口,一般是端口21和端口20.端口21用于传输命令,如删除文件的命令。而端口20用于传输文件(主动模式下)。ftp有两种数据传输模式,主动模式和被动模式,如果客户端受防火墙限制,用被动模式较好。
传输层
传输层用于确定传输到两个传输主机之间的具体端口。一条信息传输到主机,不知道是给哪个应用程序的,因此需要事先约定好对应的端口用来识别。另外流量控制、重传机制也在传输层。我想这是因为若是传输层之下的一些层发生了信息丢失篡改问题。全部都可以由传输层发现并重传,保证应用层接受到的数据是正确的。传输层主要有TCP协议、UDP协议
网络层
传输层用于确定是哪个应用程序的信息,而网络层则用于确实是哪两个主机之间的通信。通过使用ip地址识别不同的主机。另外主机数量非常多,如何找到目标主机也是一个问题。网络层就负责路由(即查找到最近的一条到主机的路线)和转发(转发信息)。网络层就是ip协议啦。
数据链路层和物理层
数据的传输最后肯定是要依赖底层硬件的。物理层中数据以二进制流的方式传输。而确定要传输的目的地是根据物理机的MAC地址。每个机子的MAC地址都是唯一的。