文章目录
- 前言
- 网络分层原因
- 网络分层模型
- 各层大致用途
- 主机网络层
- 网际层
- 传输层
- 应用层
- 总结
前言
在日常开发中,大家总是会或多或少的遇到一些网络通信的相关代码,如http请求调用。但是我们却不知道,数据是怎么从一台计算机到另一台计算机的,接下来,我们便大致介绍下网络基础相关知识,帮助大家理解。
网络分层原因
通过网络发送数据是一项及其复杂的操作,必须仔细的协调网络物理特性以及所发送数据的逻辑特征。通过网络发送数据的软件必须了解如何避免包冲突,将数字数据转为模拟信号,检测和修正错误,将包从一台机器路由到另外的主机等。
为了对程序应用人员和最终用户隐藏这种复杂性,网络通信的不同层面被分为多个层。网络通信变成不同层级之间的通信,不同层级之间互不干扰。这样不管你用的是wifi还是网线,用的是windos操作系统还是linux,作为应用程序都不需要关心,他只需要对接他的网络下一层级即可。这样便实现了应用协议与网络硬件物理特性以及网络连接拓扑结构的解耦合。
网络分层模型
上面说了,方便应用程序和实际复杂的网络通信操作解耦,才有了网络分层这么一说。但是对于不同的网络需求,有不同的网络分层模型,最经典的就是七层模型,但是我们今天介绍的是TCP/IP四层协议。
由上图我们可以看出,四层模型分别为:应用层,传输层,网际层和主机网络层。而我们平时开发的时候,一般都是在应用层。我们在进行网络通信的时候,都是层层往下调,最后通过主机网络层和其他的主机网络层通信。也就是我们平常做网络通信的时候,其实本质讲就是可本机的其他层对话,并不是直接和其他主机对话。
各层大致用途
主机网络层
主机网络定义了一个特定的网络接口如何通过物理连接向本地网络或世界其他地方发送ip数据报。主机网络层由连接不同加计算机的硬件组成的部分,有时被称为网络的物理层。
网际层
网际层又被称为网络层,网络层协议定义了数据位和字节如何组织为更大的分组,称为包,还定义了寻址地址,不同计算机要按照这个寻址机制查找对方。网际协议(IP)是世界上使用最广泛的网络层协议,也是java唯一理解的网络层协议。网际层还支持不同类型的主机网络层相互对话。
传输层
传输层负责确保各包以发送的顺序接收,并保证没有数据丢失或破坏。这一层主要有两个协议
1.传输控制协议(TCP):这是一个开销很高的协议,支持对丢失或破坏的数据进行重传,并按照发送顺序进行传送。
2.用户数据报协议(UDP):它允许接收方检测被破坏的包,但不保证这些包以正确的顺序传送。
应用层
前面三层定义了数据如何从一台计算机传输到另一台计算机,应用层确定了数据传输后的操作。就是接受到数据后,后续对数据的操作。
总结
在日常开发中,我们可能并不需要知道计算机之间是如何通信的。但是了解网络通信机制,有助于帮助我们写出更好的网络通信相关代码。