基本的网络概念
Posted wukj_litai
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了基本的网络概念相关的知识,希望对你有一定的参考价值。
这篇博客是我看《Java 网络编程》,Elliotte Rusty Harold 写,李帅,荆涛等翻译的一点自己的想法和平时自己看的其他资料的一点总结,希望大家对大家理解理解网络有所帮助。
首先Java是第一个从开始就为了网络应用而设计的编程语言,Java 提供的API可以帮助我们很好的开发出自己的网络应用软件。我们一直在说网络,到底什么是网络?这里来一个算是官方的定义吧,网络是几乎可以实时相互发送和接受数据的计算机和其他网络设备的总和。网络中的每一台机器称之为节点(node),网络中的每一个节点都有一个地址(address),我们可以通过这个地址找到这个节点的设备。所有现代计算机网络都是包交换(分组交换):流经网络的数据被分成小块,称之为包,每个包被分开单独进行处理,每个包都包含这是由谁发送的,要发送到哪里去的信息。
在网络上传输数据的具体流程很复杂,会涉及到很多的东西,比如数据的打包,解包,传输,检测和修正错误。面对这样复杂的问题,我们怎样去处理,把所有的处理流程放在一起处理肯定是不合理的,这样问题会变得的很复杂,一个很好的思路就是把功能进行拆解,做成简单的模块或者层级去分别处理这些小的问题,最后在把这些小的模块给综合起来,这样这个复杂的问题就能得到很好的解决。我们对网络传输的这个问题就是这样解决的,按照分层思想分成了四大层(也有说分成7层的,关于这二者之间的关系我们会在后面进行详细的说明),那么现在开始我们看看分成的这四层。
主机网络层: 主机网络层指的是连接不同计算机的硬件(线缆,光纤电缆,无线电波或者烟信号)等组成,有的时候我们也称之为网络的物理层。其实这个层,涉及的是一些硬件资源,对我们程序员来说不是特别需要留心去关注,但是如果你开发的应用要在复杂的网络情况下使用的时候,这个问题就变得比较重要了,需要考虑了。比如我是做android 开发的,之前看过一篇关于携程 APP 网络架构的文章,在里面就涉及到了很多关于在不同的地区 ,不同网络状况,比如WIFI ,2G ,3G和4G 下对网络传输数据的处理,这时我们就要考虑物理层的问题啦。
网际层:也有称之为网络层的,这个层的协议定义了数据位和字节如何组织为更大的分组,称为包,还定义了寻址机制,不同的计算机按照这个寻址机制查找对方。这个层的协议有IPv4和IPv6,其中IPv4 使用的是32 位地址,IPv6 使用的是128 位地址。IPv4和IPv6 中数据是按照包在网络层上传输的,这些包称之为数据报。每个IPv4数据报包含一个长度为20至60字节的首部,以及一个包含多大65515字节数据的有效载荷。总结下吧,其实网际层是负责数据的传输的,把数据分成数据报,然后按照使用寻址机制把数据报发送到指定的地方,还有的一个功能就是支持不同类型的主机网络层的相互对话,Internet 路由器会完成WIFI和Ethernet和DSL,DSL 和光纤往返等协议之间的转换。如果没有网际层或者类似的分层,则每个计算机只能与同一类型的其他计算机通话,网际层负责使用同构协议将异构网络相互连接。
传输层:原始的数据报在传输的时候会有一些缺点,很显著的一个就是不能保证可靠传输,即使能传送也可能在传输中遭到破坏。首部校验只能检测首部中的破坏情况,而不能检测数据报中的情况。最后还有一个问题是,数据报到达的顺序也可能和发送的时候不一样。为了处理以上的这些问题我们就需要在传输层确保各包以发送的顺序进行接收,并保证没有数据丢失或者破坏,如果丢包,传输层会请求重发这个包。在这层有二个协议TCP和UDP 协议,属于传输控制协议。TCP是一个开销很高的协议,支持对丢失或者破坏的数据进行重传,并按照发送时的顺序进行传送。UDP是用户数据报协议,它允许接受方检测被破坏的包,但是不进行数据的重传。关于TCP和UDP的详细介绍,大家可以自己找资料学习。
应用层:上面的三层已经确保了数据从一台计算机传输到了另一台计算机,对传输到的数据进行处理的就到了应用层。例如,应用层协议如HTTP协议可以确保web浏览器将图片显示为图片而不是文字等等。
写到这里我们基本上已经把网络分层的四层知识都给说完了,你可能还会感觉到有点困惑,感觉似懂非懂的感觉,其实我在刚开始接触这些的时候也有点困惑,感觉好像知道,又不是很理解这些东西,希望下面的描述让你能够很好的理解上面的知识点。现在我们还是回到文章刚开始说的分层的问题上面,我们已经把这个比较复杂的问题进行了分层,接下来我们只要处理好每层的问题,把这几层给连起来,这样我们的问题就会得到很好的解决。这个里面需要特别注意的是网际层和传输层,网际层的协议是IP
协议,负责传输的问题,把数据传输到指定的地方,而传输层的是负责控制数据的接受和数据的完整性问题,这里面的传输控制协议有TCP和UDP协议,我们知道TCP 协议的三次握手等等就是为了传输数据而做的,它俩个是为了控制传输的数据的,在IP 协议传输的基础上加上控制协议,确定包接受的顺序和重传等等问题,分工各不相同,二个协同,完成数据的传输。
文章的最后,我们知道好多的资料上都说有七层,其实就是讲主机网络层分成数据链路层和物理层,在应用层和传输层之间插入了表示层和会话层,有了更细的分工,但是这个网络数据传输的流程是相同的,原理是相同的,大家可以结合相关资料学习相关的东西。
以上是关于基本的网络概念的主要内容,如果未能解决你的问题,请参考以下文章
计算机网络—— 网络层(789):IPv4数据报的首部格式网际控制报文协议ICMP虚拟专用网VPN与网络地址转换NAT
计算机网络—— 网络层(789):IPv4数据报的首部格式网际控制报文协议ICMP虚拟专用网VPN与网络地址转换NAT
计算机网络湖科大微课堂笔记 p54-57 IPv4数据报的首部格式网际控制报文协议ICMP虚拟专用网VPN与网络地址转换NAT