您的位置:首页 > 理论基础 > 计算机网络

Wireshark之网络通信原理(一)

2017-03-11 19:35 295 查看
一、协议

        现代网络是由多种运行在不同平台上的异构系统组成。为了使它们之间能够互相通信,我们使用了一套共同的网络语言,并称之为协议。常见的网络协议包括传输控制协议(TCP)、互联网协议(IP)、地址解析协议(ARP)、动态主机配置协议(DHCP)。协议栈是一组协同工作的网络协议的逻辑组合。

        理解网络协议的最佳途径之一是将它们想象成人类口头或书面语言的使用规则。网络协议它帮助我们定义如何路由数据包,如何发起一个连接,以及如何确认收到数据等。

二、七层OSI参考模型

        网络协议是基于它们的行业标准OSI参考模型中的职能进行分层的。OSI模型将网络通信过程分为7个不同层次:



        1.物理层(第1层):

        OSI参考模型的底层是传输网络数据的物理媒介。这一层定义了所有使用的网络硬件设备的物理和电气特性,包括电压、集线器、网络适配器、中继器和线缆规范等。物理层建立和终止连接,并提供一种共享通信资源的方法,将数字信号转换成模拟信号传输,并反过来将接受的模拟信号转换回数字信号。

        理解:科学家要解决的第一个问题是,两个硬件之间怎么通信。具体就是一台发些比特流,然后另一台能收到。于是,科学家发明了物理层:主要定义物理设备标准,如网线的接口类型、光纤的接口类型、各种传输介质的传输速率等。它的主要作用是传输比特流(就是由1、0转化为电流强弱来进行传输,到达目的地后在转化为1、0,也就是我们常说的数模转换与模数转换)。这一层的数据叫做比特

        功能:为数据端设备提供传送数据的通路,数据通路可以是一个物理媒体,也可以是多个物理媒体连接而成。一次完整的数据传输,包括激活物理连接,传送数据,终止物理连接。所谓激活,就是不管有多少物理媒体参与,都要在通信的两个数据终端设备间连接起来,形成一条通路。

        相关协议与标准举例:

        ISO2110:称为"数据通信----25芯DTE/DCE接口连接器和插针分配"。它与EIA(美国电子工业协会)的"RS-232-C"基本兼容。

        ISO2593:称为"数据通信----34芯DTE/DCE----接口连接器和插针分配"。

        ISO4092:称为"数据通信----37芯DTE/DEC----接口连接器和插针分配"。与EIARS-449兼容。

        CCITT V.24:称为"数据终端设备(DTE)和数据电路终接设备之间的接口电路定义表"。其功能与EIARS-232-C及RS-449兼容于100序列线上.

        2.数据链路层(第2层): 

        这一层提供了通过物理网络传输数据的方法,其主要目的是提供一个寻址方案,可用于确定物理设备(例如MAC地址)。网卡、网桥和交换机是工作在数据链路层的物理设备。

        理解:现在通过电线能发数据流了,但是,还希望通过无线电波,通过其它介质来传输。然后,还要保证传输过去的比特流是正确的,要有纠错功能。于是,发明了数据链路层。定义了如何让格式化数据以进行传输,以及如何让控制对物理介质的访问。这一层通常还提供错误检测和纠正,以确保数据的可靠传输。

        功能:链路层应具备如下功能,链路连接的建立,拆除,分离。帧定界和帧同步:链路层的数据传输单元是帧。协议不同,帧的长短和界面也有差别,但无论如何必须对帧进行定界。顺序控制:指对帧的收发顺序的控制。差错检测和恢复。还有链路标识,流量控制等等。差错检测多用方阵码校验和循环码校验来检测信道上数据的误码,而帧丢失等用序号检测,各种错误的恢复则常靠反馈重发技术来完成。

        相关协议与标准举例:

        ISO3309--1984:称为"HDLC 帧结构"。

        ISO4335--1984:称为"HDLC 规程要素"。

        3.网络层(第3层)

       这一层负责数据在物理网络中的路由转发,是最复杂的OSI层之一。它负责网络主机的逻辑寻址(例如通过一个IP地址)外,还处理数据包分片和一些情况下的错误检测。路由器工作在这一层上。

        理解:如果有多台计算机,怎么找到我要发的那台?或者,A要给F发信息,中间要经过B,C,D,E,但是中间还有好多节点如K.J.Z.Y。我怎么选择最佳路径?这就是路由要做的事。于是,发明了网络层。即路由器,具有寻址功能的设备所实现的功能。这一层定义的是IP地址,通过IP地址寻址。所以产生了IP协议。

        功能:网络层为建立网络连接和为上层提供服务,它具备路由选择和中继,激活、终止网络连接。

        相关协议与标准举例:

        ISO.DIS8208:称为"DTE用的X.25分组级协议"

        ISO.DIS8348:称为"CO 网络服务定义"(面向连接)

        ISO.DIS8349:称为"CL 网络服务定义"(面向无连接)

        ISO.DIS8473:称为"CL 网络协议"

        ISO.DIS8348:称为"网络层寻址"

        4.传输层(第4层)

        传输层的主要目的是为较低层提供可靠的数据传输服务。通过流量控制、分段/重组、差错控制等机制,传输层确保网络数据端到端的无差错传输。因为确保可靠的数据传输极为繁琐,因此OSI参考模型将其作为完整的一层。传输层同时提供了面向连接和无连接的网络协议。某些防火墙和代理服务服务器也工作在这一层。

        理解:当发大量数据时候,可能需要好长时间,例如一个视频格式的,网络会中断好多次(事实上,即使有了物理层和数据链路层,网络还是经常中断,只是中断的时间是毫秒级别的)。那么,必须要保证传输大量文件时的准确性。于是,要对发出去的数据进行封装。就像发快递一样,一个个地发。于是,先发明了传输层(传输层在OSI模型中,是在网络层上面)

        例如TCP,是用于发大量数据的,我发了1万个包出去,另一台电脑就要告诉我是否接受到了1万个包,如果缺了3个包,就告诉我是第1001,234,8888个包丢了,那我再发一次。这样,就能保证对方把这个视频完整接收了。

        例如UDP,是用于发送少量数据的。我发20个包出去,一般不会丢包,所以,我不管你收到多少个。在多人互动游戏,也经常用UDP协议,因为一般都是简单的信息,而且有广播的需求。如果用TCP,效率就很低,因为它会不停地告诉主机我收到了20个包,或者我收到了18个包,再发我两个!如果同时有1万台计算机都这样做,那么用TCP反而会降低效率,还不如用UDP,主机发出去就算了,丢几个包你就卡一下,算了,下次再发包你再更新。

        功能:为较低层提供可靠的数据传输服务

        相关协议与标准举例:

        ISO8072:称为"面向连接的传输服务定义"

        ISO8073:称为"面向连接的传输协议规范"

        5.会话层(第5层)

        这一层管理两台计算机之间的对话(会话)。负责在所有的通信设备之间建立、管理和终止会话连接。会话层还负责以全双工或者半双工的方式来创建会话连接,在通信主机间礼貌的关闭连接,而不是粗暴的直接丢弃。

       理解:现在,已经保证给正确的计算机发送正确的封装过后的信息了。但是用户级别的体验好不好?难道我每次都要调用TCP去打包,然后调用IP协议去找路由,自己去发?当然不行,所以我们要建立一个自动收发包,自动寻址的功能。于是,发明了会话层。会话层的作用就是建立和管理应用程序之间的通信

       功能:为给两个对等会话服务用户建立一个会话连接

       相关协议与标准举例:

       "DIS8236:会话服务定义"

       "DIS8237:会话协议规范"

        6.表示层(第6层)

        这一层将接受到的数据转换层应用层可以读取的格式。在表示层完成的数据编码与解码取决于发送与接受数据的应用层协议。表示层同时进行用来保护数据的多种加密与解密操作。

        理解:现在,可以保证应用程序自动收发包和寻址了。但是我要用Linux给window发包,两个系统语法不一致,就像安装包一样,exe是不能在linux下用的,shell在window下也是不能直接运行的。于是需要表示层(presentation),帮我们解决不同系统之间的通信语法问题。

        功能:为异种机通信提供一种公共语言,以便能进行互操作。这种类型的服务之所以需要,是因为不同的计算机体系结构使用的数据表示法不同。例如,IBM主机使用EBCDIC编码,而大部分PC机使用的是ASCII码。在这种情况下,便需要会话层来完成这种转换。

        相关协议与标准举例:

        DP8822、DP8823、DIS6937/2等一系列标准

        7.应用层(第7层)

        OSI参考模型的最上层,为用户访问网络资源提供一种手段。这通常是唯一一层能够由最终用户看到的协议,因为它提供的接口是最终用户所有网络活动的基础。

        理解:编写程序完成需求之应用程序。

        功能:进程通信

        相关协议与标准举例:

        DP8649"公共应用服务元素"

        DP8650"公共应用服务元素用协议"

三、附录

        A.Socket

        这不是一个协议,而是一个通信模型。其实它最初是伯克利加州分校软件研究所,简称BSD发明的,主要用来一台电脑的两个进程间通信,然后把它用到了两台电脑的进程间通信。所以,可以把它简单理解为进程间通信,不是什么高级的东西。

主要做的事情就是:

        A发包:发请求包给某个已经绑定的端口(所以我们经常会访问这样的地址182.13.15.16:1235,1235就是端口);收到B的允许;然后正式发送;发送完了,告诉B要断开链接;收到断开允许,马上断开,然后发送已经断开信息给B。

        B收包:绑定端口和IP;然后在这个端口监听;接收到A的请求,发允许给A,并做好接收准备,主要就是清理缓存等待接收新数据;然后正式接收;接受到断开请求,允许断开;确认断开后,继续监听其它请求。

        可见,Socket其实就是I/O操作。Socket并不仅限于网络通信。在网络通信中,它涵盖了网络层、传输层、会话层、表示层、应用层——其实这都不需要记,因为Socket通信时候用到了IP和端口,仅这两个就表明了它用到了网络层和传输层;而且它无视多台电脑通信的系统差别,所以它涉及了表示层;一般Socket都是基于一个应用程序的,所以会涉及到会话层和应用层。


       B.常见协议英文名称:

       OSI           Open System Interconnection                   开放式系统互联

       TCP          Transmission Control Protocol                 传输控制协议

       IP              Internet Protocol                                           互联网协议

       ARP         Address Resolution Protocol                     地址解析协议

       DHCP      Dynamic Host Configuration Protocol      动态主机配置协议

       C.OSI参考模型各个层次上的典型网络协议:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: