远程网络通讯协议

享学课堂作者:逐梦々少年
转载请声明出处!
现代互联网开发过程中,无论是什么架构系统,无法避免的并且很重要的一个环节就是网络通讯,好的网络通讯方案和协议会让整个程序效率和耗时变得更低,而JAVA开发过程中我们一般接触到的都是基于TCP/IP的网络协议,所以一个优秀的软件工程师,必备技术栈之一就是对远程网络协议有一定的了解
OSI七层网络模型一般我们说的网络模型都是OSI网络模型,而所谓的OSI网络模型一般分为七层,这七层从上到下分别为(应用层-->表示层-->会话层-->传输层-->网络层-->数据链路层-->物理层):
应用层-->表示层-->会话层-->传输层-->网络层-->数据链路层-->物理层大概的访问调用如图所示:
远程网络通讯协议

文章插图
 
有图可以看出,OSI的网络模型将每一个步骤分的特别细致,而在我们开发过程中,最常接触到的一般是基于OSI的二层协议--TCP/IP协议
TCP/IP四层(五层)网络模型看到这个标题一定会有人奇怪,到底是四层还是五层模型啊,其实TCP/IP基于OSI的模型,将其中一部分操作合并为一个模型,而传统认为是四层模型,分别为:
应用层-->传输层-->网络层-->网络接口层即与OSI对应的模型关系如下:
远程网络通讯协议

文章插图
 
而有些人认为网络接口层不应该合并数据链路层和物理层,这两层在表现上是不同的,所以就有了五层模型,三种模型之间的比较图如下:
远程网络通讯协议

文章插图
 
TCP/IP请求流程弄懂了TCP/IP大概的模型,我们来思考一个问题,即这四层模型分别是用来干啥的?又做了什么处理?在思考这些问题之前,我们先来了解这四层网络模型分别包括哪些东西
应用层
超文本传输协议(HTTP):万维网的基本协议
文件传输(TFTP简单文件传输协议)
远程登录(Telnet),提供远程访问其它主机功能,它允许用户登录
internet主机,并在这台主机上执行命令.
网络管理(SNMP简单网络管理协议),该协议提供了监控网络设备的方法,以及配置管理,统计信息收集,性能管理及安全管理等.
域名系统(DNS),该系统用于在internet中将域名及其公共广播的网络节点转换成IP地址
网络层
Internet协议(IP)
Internet控制信息协议(ICMP)
地址解析协议(ARP)
反向地址解析协议(RARP)
网络接口层
网络访问层又称作主机到网络层(host-to-network).网络访问层的功能包括IP地址与物理地址硬件的映射,以及将IP封装成帧.基于不同硬件类型的网络接口,网络访问层定义了和物理介质的连接
接下来,我们看看一个完整请求打来后,TCP/IP的四层模型的大概处理流程是什么:
远程网络通讯协议

文章插图
 
【远程网络通讯协议】从上图我们可以看到,当客户端发起请求的时候(应用层),传输层会根据你发来的请求,将请求中添加Tcp头信息,并且传递倒网络层,在网络层中,会将当前请求处理/计算(获取出ip地址等信息),添加Ip首部信息到请求中,接着传递到了数据链路层,在这一层中我们会依照IP地址再去给当前请求计算出一个mac码,由于IP还存在重复的情况,而MAC地址是唯一的,这个时候将MAC首部信息加入请求中,根据当前的请求就可以识别出唯一的请求了 。
当数据传输到服务端的时候,会将传递来的request请求进行解析,但是需要注意的是这里解析的顺序与请求的顺序相反,首先从数据链路层解析掉MAC首部信息,将剩下的请求信息继续往上传递,然后解析Ip首部信息,再去解析Tcp首部信息、端口和请求报文参数等,根据端口等找到对应的进程,进行响应操作,这样就是一个完整的调度流程
ARP寻址协议上面我们有介绍到封装请求的过程中,我们首先将IP首部信息存入请求中,然后再去存入MAC首部信息,这里不禁会有一个疑惑,IP和MAC有什么关系吗?其实我们任何一台设备都会有一个MAC和一个IP信息进行对应,客户端发起请求的时候,会利用一个ARP寻址协议的方式找到IP对应的MAC信息,此协议大至如下:当我们已知机器的IP的时候,发起一个基于当前IP的广播消息,而对应IP的机器收到广播后会返回响应信息,即当前机器对应的MAC首部信息,这样就可以根据IP获取到MAC首部信息


推荐阅读