再探计算机网络

Posted hydstar

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了再探计算机网络相关的知识,希望对你有一定的参考价值。

这个星期在工作之余花了一些时间去研究计算机网络部分的一些知识,感觉颇有收获,便记录下来以供交流。

一,计算机通信原理:

 我们都知道tcp/ip协议镞有五层模型(其实和osi七成模型没多大区别),那么这五层模型时怎么实现计算机之间的通信的呢?

我们就以tcp/ip协议来了解一下他的通信过程:·(抱歉嫌麻烦所以手绘了,很多地方不是很详细)

技术分享图片

我们发现发送过程中都会再其发送给下一层的数据中加上一个首部信息来指示应该发给下一层的哪一个协议去处理,而在接收方议会通过解析这个首部信息确定应该发给上一层的哪一个协议或者端口(应用)。这五层通过相互或者完成了计算机之间的通信,这个过程就是使用tcp/IP协议实现通信的例子。

二,各层的具体作用和相关协议。

2.1,物理层:

物理层实质就是将上层的比特流(0,1二进制流)转换成电压的高低,灯光的闪灭等物理信号,将数据传输出去。

2.2,数据链路层:

它主要提供在同一个数据链路的节点之间进行包传递,它有一个识别码MAC地址,通过这个地址他就能将数据发送到相应主机的数据链路层,相应的主机通过这个数据包首部的MAC地址来判断是不是发送给自己的包,如果不是,则丢掉。如果是,则解析这个包的首部包含的协议,具体是上一层(网络层)的哪一个协议,将这个包发送给上一层的相关协议进行处理(这个例子是ip包)。

2.3,网络层:

网络层的作用是实现终端节点间的通信,即在复杂的网络环境中将数据包发送给最终的目标地址。这里以ip协议为主介绍。

IP实质是一个面向无连接的协议,即在发包之前不需要建立与对端目标地址之间的连接。这样的好处是简化和高效。如果每次发送数据都要建立连接之后再发送数据这样会很低效和不值。(对于是否要要建立连接来保证数据传输的可靠它交给了上一层传输层来处理,比如tcp)。

首先在发送阶段,它从传输层拿到了数据之后会再头部加上自己的IP地址和目标主机的IP地址然后再发送给数据链路层,而再读取数据的时候,它从数据链路层拿到数据之后会判断头部的ip地址是不是自己的,然后再看数据使用的额上层协议是什么(本例是tcp),然后再传给上一层的相关协议进行处理。

其中IP地址是如何来区分不同主机的呢?其实一个IP地址包含两个部分(网络标识和主机标识),通过网络标识来判断域,通过主机标识来判断具体到那一台主机。当然这里面还有很多其它的知识,比如ip地址的分类啊,ipv4和ipv6等,感兴趣可以去看书或者google。

2.4,传输层:

传输层包括了两个重要的协议,tcp和udp。

其中tcp是一个面向连接的流协议,udp是一个不具有可靠性的数据报协议。当然这个还有一个socket,socket实际就是一个对tcp和udp的封装api,方便开发而已。

因为udp是一个无连接,所以它传输数据的速度很快,但是不可靠。对于一些要求数据对小小的额安全不是那么重要的应用可以使用udp,比如视频通信,语音,广播等。而tcp是一个有链接的可靠性传输协议。它能够保证实现数据的可靠传输。具体是通过他的检验和,序列号,确认应答,重发控制,连接管理以及窗口控制,流控制,阻塞控制等机制来实现的。其中保证数据的可靠性主要是通过序列号,确认应答和连接管理来实现的。连接管理是指在通信之前先确认两端之间的准备工作,主要是三次握手和四次挥手。

当发送数据时,传输层会再其首部加上端口号,收到数据时它也会解析这个端口号确认该发送给哪一个应用。

2.5,应用层

应用层主要是负责编码解码和一些应用逻辑的额处理了。其中也有已经制定好了的一些协议,ftp,fmtp,http等。具体是采用这些已经归档了的协议还是自己定的协议就要按照业务的需求来考虑了。

以上就是我对计算机网络的一些了解了,当然还有很多细节和纰漏,希望大家指正。

 

以上是关于再探计算机网络的主要内容,如果未能解决你的问题,请参考以下文章

计算机系统篇之虚拟内存:再探 mmap

再探jQuery

再探webpack

再探ELK-全新的ELK-5.2.0

老老实实学WCF] 第五篇 再探通信--ClientBase

再探共享存储