计算机网络基础协议与流程
一、计算机网络体系结构
计算机网络的体系结构有两种:IOS七层模型和TCP/IP五层模型。 两种模型各层的对应关系如下图所示。

IOS模型是最经典的网络模型结构,但是TCP/IP模型却是现在最为常用的(下面提到的各种协议归于哪一层是针对TCP/IP模型来说的),下图说明了在TCP/IP模型中数据的封装过程。

TCP/IP模型中各层提供的服务如下所示:
数据链路层 物理链路相邻节点之间提供通信服务
网络层 主机之间提供通信服务
传输层 主机之上的进程之间提供通信服务
应用层 主机之上的应用之间提供通信服务
二、计算机网络协议
计算机网络中最重要的内容就是各层的网络协议,如果能够理解各层网络协议的原理,那么网络的基础就已经掌握了。各层所包含的常见的协议如下所示:
应用层:HTTP协议、FTP协议、DHCP协议、SMTP协议、POP协议、DNS协议。
传输层:TCP协议、UDP协议。
网络层:IP协议、ICMP协议、RIP协议、OSPF协议、NAT协议。
链路层:ARP协议。
协议之间的包含关系如下图所示。

接下来解析各层各网络协议的作用,至于其原理,可以参考其它的博客。
1.应用层
HTTP协议:超文本传输协议,定义了浏览器怎样向万维网服务器请求万维网文档,以及服务器怎样把文档传送给浏览器。
FTP协议:文件传输协议,是用于传输文件的,与http协议类似,不过http协议主要传输网页。
DHCP协议:动态主机配置协议,该协议可以使得当一台新的主机加入到网络中时,不用手动获取ip地址,而是直接由DHCP服务器直接分配ip地址给新的主机。
SMTP协议:简单邮件传输协议,用于邮件的发送。
POP3协议:用于从邮件服务器上下载邮件。
DNS协议:域名解析协议,用于将域名转化为目的ip地址,供网络层使用。
2.传输层
TCP协议:传输控制协议,是面向链接的,实现端到端的稳定传输,有差错校验功能,可以校验tcp头部和数据内容是否有问题,协议内容主要包括tcp三次握手、四次挥手、流量控制、拥塞控制。
UDP协议:用户数据报协议,是一种无连接的协议,其实时性好,效率较tcp协议而言更高。
3.网络层
IP协议:互联网协议,通过ip协议可以实现两台主机之间的通信,除了ARP和RARP报文以外的几乎所有的数据都要经过IP协议进行传送。
ICMP协议:网络控制报文协议,允许主机或路由器报告差错情况和提供有关异常的报告,最重要的应用就是分组网间探测(ping),用于探测主机之间的连通性。
RIP协议:路由信息协议,是基于距离矢量的路由选择协议,用于为路由器提供通过网状网络最佳路径所需要的相互共享的路由信息,最大的优点是简单。
OSPF协议:开放最短路径优先协议,是基于最短路径算法的一种路由选择协议,功能与rip协议相同,实现方式有所差异。
NAT协议:网络地址转换协议,可以实现内网与外网之间的通信,提出nat协议最初的目的是解决ipv4不够用的情况。
4.链路层
ARP协议:地址解析协议,依据ip地址获取下一跳的mac地址。(APR属于哪一层没有明确的定论,由于ARP协议没有使用ip头部,所以我这里将其归到链路层)
三、浏览器向服务器申请一份html文件的过程中所使用到的网络协议
当我们打开浏览器,在地址栏中输入网址(等价于url)后,应用层会调用DNS协议,将该域名解析为对应的ip地址(一开始我们配置ip地址的时候有dns服务器这一个选项,如果没有选那就应该是默认的,我们通过该服务器来获得需要的ip地址。如果缓存中有相应的地址解析信息的话,则直接获取),然后应用层便会通过http协议来封装请求信息,再将封装好的信息交给传输层。传输层获取应用进程的端口号,调用tcp协议,先与服务器进行三次握手建立连接,然后传递http请求,如果http请求信息很大的话,tcp协议还会对其进行分段,等到服务器的传输层再进行组装,当得到了http响应报文后,便进行四次挥手断开连接。网络层获取到了传输层传下来的报文后,对其进行处理,这时候会用到dns解析得到的目的ip地址,加上ip头部,形成一个ip数据包(如果报文过大,ip协议便会对其进行分片,不过使用tcp协议的话不会出现这种问题)。链路层获取到了来自网络层的ip数据包后,如果发现其ip地址不在本子网中的话,便会将数据帧发送给默认网关,这时候如果发现没有默认网关的mac地址,就使用arp协议,广播apr请求,默认网关在收到arp请求后,发现其中的ip地址正好是自己,就进行回复,告诉主机它的mac地址。有了mac地址后,链路层便可以将数据帧发送给默认网关了。默认网关收到之后会调用nat协议,将数据帧中的子网源ip地址转化为外网的ip地址,并通过ip与端口号来进行一一对应。
我们假定路由器中使用的是OSPF路由协议,路由器通过OSPF路由协议来维护一份路由表,从路由表中路由器可以知道哪一个端口通向哪一个网络,当路由器收到来自客户机的数据帧后,会将其进行解析,解析其中链路层和网络层的信息,通过网络层的信息来得到目的ip地址,然后比较哪一个端口所连的网络与其最相近,便将数据帧由那一个端口发送出去,发送前如果缓存中没有对应的下一跳的mac,便再次调用arp协议来获取。中间的路由过程如此循环便可以到达目的服务器。
数据帧到达服务器后,服务器的链路层会先对其进行解析,看看数据帧的是否完整,看看目的mac地址是否是自己,如果没有问题,链路层便将解析好的数据包向上交给网络层。网络层查看目的ip地址是否是自己,是的话就剥去ip头部,将剩下的信息上交给传输层。传输层就会校验tcp头部与数据内容是否存在问题,如果有,就要求客户机重传,如果没有,就剥去tcp头部,将数据信息按照指定的端口交给应用进程。应用层收到来自传输层的数据信息后,发现它是一份http请求信息,便调用http协议对其进行解析,依据url中的文件目录,找出相应的文件发送给客户机,流程相似。

(本图摘自https://www.cnblogs.com/wzndkj/p/7710730.html)
小结:计算机网络学习了这么久,学习了很多内容,但是一直觉得没有掌握整体的结构,这次就借期末考复习来整理了一下,感觉思路清晰了很多。如果有问题,欢迎指出。

浙公网安备 33010602011771号