概述
通信协议栈
OSI模型
国际标准化组织ISO在1984年提出了OSI RM(Open System Interconnection Reference Model,开放式互连参考模型)。
其基本功能如下:
物理层
在OSI参考模型中,物理层(Physical Layer)是参考模型的最低层,也是OSI模型的第一层。
物理层的主要功能是:利用传输介质为数据链路层提供物理连接,实现比特流的透明传输。
物理层的作用是实现相邻计算机节点之间比特流的透明传送,尽可能屏蔽掉具体传输介质和物理设备的差异。使其上面的数据链路层不必考虑网络的具体传输介质是什么。“透明传送比特流”表示经实际电路传送后的比特流没有发生变化,对传送的比特流来说,这个电路好像是看不见的。
常用设备:网卡,网线,集线器,中继器,调制解调器。
数据链路层
数据链路层(Data Link Layer)是OSI模型的第二层,负责建立和管理节点间的链路。该层的主要功能是:通过各种控制协议,将有差错的物理信道变为无差错的、能可靠传输数据帧的数据链路。
在计算机网络中由于各种干扰的存在,物理链路是不可靠的。因此,这一层的主要功能是在物理层提供的比特流的基础上,通过差错控制、流量控制方法,使有差错的物理线路变为无差错的数据链路,即提供可靠的通过物理介质传输数据的方法。
该层通常又被分为介质访问控制(MAC)和逻辑链路控制(LLC)两个子层。
MAC子层的主要任务是解决共享型网络中多用户对信道竞争的问题,完成网络介质的访问控制;
LLC子层的主要任务是建立和维护网络连接,执行差错校验、流量控制和链路控制。
数据链路层的具体工作是接收来自物理层的位流形式的数据,并封装成帧,传送到上一层;同样,也将来自上层的数据帧,拆装为位流形式的数据转发到物理层;并且,还负责处理接收端发回的确认帧的信息,以便提供可靠的数据传输。
常用设备:网桥,交换机。
网络层
网络层(Network Layer)是OSI模型的第三层,它是OSI参考模型中最复杂的一层,也是通信子网的最高一层。它在下两层的基础上向资源子网提供服务。其主要任务是:通过路由选择算法,为报文或分组通过通信子网选择最适当的路径。该层控制数据链路层与传输层之间的信息转发,建立、维持和终止网络的连接。具体地说,数据链路层的数据在这一层被转换为数据包,然后通过路径选择、分段组合、顺序、进/出路由等控制,将信息从一个网络设备传送到另一个网络设备。
一般地,数据链路层是解决同一网络内节点之间的通信,而网络层主要解决不同子网间的通信。例如在广域网之间通信时,必然会遇到路由(即两节点间可能有多条路径)选择问题。
在实现网络层功能时,需要解决的主要问题如下:
寻址:数据链路层中使用的物理地址(如MAC地址)仅解决网络内部的寻址问题。在不同子网之间通信时,为了识别和找到网络中的设备,每一子网中的设备都会被分配一个唯一的地址。由于各子网使用的物理技术可能不同,因此这个地址应当是逻辑地址(如IP地址)。
交换:规定不同的信息交换方式。常见的交换技术有:线路交换技术和存储转发技术,后者又包括报文交换技术和分组交换技术。
路由算法:当源节点和目的节点之间存在多条路径时,本层可以根据路由算法,通过网络为数据分组选择最佳路径,并将信息从最合适的路径由发送端传送到接收端。
连接服务:与数据链路层流量控制不同的是,前者控制的是网络相邻节点间的流量,后者控制的是从源节点到目的节点间的流量。其目的在于防止阻塞,并进行差错检测。
常用设备:路由器
传输层
OSI下3层的主要任务是数据通信,上3层的任务是数据处理。而传输层(Transport Layer)是OSI模型的第4层。因此该层是通信子网和资源子网的接口和桥梁,起到承上启下的作用。
该层的主要任务是:**向用户提供可靠的端到端的差错和流量控制,保证报文的正确传输。传输层的作用是向高层屏蔽下层数据通信的细节,即向用户透明地传送报文。**该层常见的协议:TCP/IP中的TCP协议、Novell网络中的SPX协议和微软的NetBIOS/NetBEUI协议。
传输层提供会话层和网络层之间的传输服务,这种服务从会话层获得数据,并在必要时,对数据进行分割。然后,传输层将数据传递到网络层,并确保数据能正确无误地传送到网络层。因此,传输层负责提供两节点之间数据的可靠传送,当两节点的联系确定之后,传输层则负责监督工作。综上,传输层的主要功能如下:
传输连接管理:提供建立、维护和拆除传输连接的功能。传输层在网络层的基础上为高层提供“面向连接”和“面向无接连”的两种服务。
处理传输差错:提供可靠的“面向连接”和不太可靠的“面向无连接”的数据传输服务、差错控制和流量控制。在提供“面向连接”服务时,通过这一层传输的数据将由目标设备确认,如果在指定的时间内未收到确认信息,数据将被重发。监控服务质量。
会话层
会话层(Session Layer)是OSI模型的第5层,是用户应用程序和网络之间的接口,主要任务是:**向两个实体的表示层提供建立和使用连接的方法。将不同实体之间的表示层的连接称为会话。因此会话层的任务就是组织和协调两个会话进程之间的通信,并对数据交换进行管理。
用户可以按照半双工、单工和全双工的方式建立会话。当建立会话时,用户必须提供他们想要连接的远程地址。而这些地址与MAC(介质访问控制子层)地址或网络层的逻辑地址不同,它们是为用户专门设计的,更便于用户记忆。域名(DN)就是一种网络上使用的远程地址例如:www.3721.com就是一个域名。会话层的具体功能如下:
会话管理:允许用户在两个实体设备之间建立、维持和终止会话,并支持它们之间的数据交换。例如提供单方向会话或双向同时会话,并管理会话中的发送顺序,以及会话所占用时间的长短。
会话流量控制:提供会话流量控制和交叉会话功能。
寻址:使用远程地址建立会话连接。l
出错控制:从逻辑上讲会话层主要负责数据交换的建立、保持和终止,但实际的工作却是接收来自传输层的数据,并负责纠正错误。会话控制和远程过程调用均属于这一层的功能。但应注意,此层检查的错误不是通信介质的错误,而是磁盘空间、打印机缺纸等类型的高级错误。
表示层
表示层(Presentation Layer)是OSI模型的第六层,它对来自应用层的命令和数据进行解释,对各种语法赋予相应的含义,并按照一定的格式传送给会话层。其主要功能是“处理用户信息的表示问题,如编码、数据格式转换和加密解密”等。表示层的具体功能如下:
数据格式处理:协商和建立数据交换的格式,解决各应用程序之间在数据格式表示上的差异。
数据的编码:处理字符集和数字的转换。例如由于用户程序中的数据类型(整型或实型、有符号或无符号等)、用户标识等都可以有不同的表示方式,因此,在设备之间需要具有在不同字符集或格式之间转换的功能。
压缩和解压缩:为了减少数据的传输量,这一层还负责数据的压缩与恢复。
数据的加密和解密:可以提高网络的安全性。
应用层
应用层(Application Layer)是OSI参考模型的最高层,它是计算机用户,以及各种应用程序和网络之间的接口,其功能是直接向用户提供服务,完成用户希望在网络上完成的各种工作。**它在其他6层工作的基础上,负责完成网络中应用程序与网络操作系统之间的联系,建立与结束使用者之间的联系,并完成网络用户提出的各种网络服务及应用所需的监督、管理和服务等各种协议。此外,该层还负责协调各个应用程序间的工作。
应用层为用户提供的服务和协议有:文件服务、目录服务、文件传输服务(FTP)、远程登录服务(Telnet)、电子邮件服务(E-mail)、打印服务、安全服务、网络管理服务、数据库服务等。上述的各种网络服务由该层的不同应用协议和程序完成,不同的网络操作系统之间在功能、界面、实现技术、对硬件的支持、安全可靠性以及具有的各种应用程序接口等各个方面的差异是很大的。应用层的主要功能如下:
用户接口:应用层是用户与网络,以及应用程序与网络间的直接接口,使得用户能够与网络进行交互式联系。
实现各种服务:该层具有的各种应用程序可以完成和实现用户请求的各种服务
原文链接:https://blog.csdn.net/qq_41923622/article/details/85805003
TCP/IP协议
应用层
与osi的会话层,表示层,应用层对应。虽然一些路由选择协议使用这一层,例如边界网关协议(BGP),路由选择信息协议(ARP)等,但是最常用的功能是向用户应用提供访问网络接口。
传输层(主机到主机层)
它指定了控制网络层的协议,就像数据链路层控制物理层一样,主机到主机层和数据链路层都定义了流控和差错控制机制。两者不同之处在于,数据链路层协议强调数据链路层上的流量,即连接两台设备的物理介质上的流量;而传输层控制逻辑链路上的流量,即两台设备端到端连接欸,这种逻辑连接可能跨越一连串数据链路。
网络层
它与OSI的网络层相对应,主要负责定义数据包格式和地址格式,经过逻辑网络路径的数据进行路由选择。
数据链路层
如何访问和共享介质,怎样标识介质上的设备,以及在介质上发送数据之前如何完成数据成帧。
数据分装
应用数据需要经过TCP/IP每一层处理之后才能通过网络传输到目的端,每一层上使用该层的协议数据单PDU彼此交换信息。不同层的PDU中包含有不同的信息,因此PDU在不同层被赋予了不同的名称。如上层数据在传输层添加TCP报头后得到的PDU被称为Segment(数据段);数据传递给网络层,网络层添加IP报头,得到PDU被称为Packt(数据包);数据包被传递到数据链路层,封装数据链路层报头得到的PDU被称为Frame(数据帧),最后,帧被转换为比特,通过网络介质传输。这种协议栈逐层向下传递,并添加报头和报尾的过程称为封装。
冲突域
定义:通过共享物理介质进行双向传输所有节点的集合。
当同一个冲突域中的主机同时发送数据时,数据到达目的地之前可能会发生冲突。
避免冲突域的-CSMA/CD机制
如图是一个10BASE5以大网,每个主机都是用同一根同轴电缆来与其亡主机进行通信,因此,这里的同轴电缆又被称为共享介质,相应的网络被称为共享介质网络,或简称为共享式网络。共享式网络中,不同的主机同时发送数据时,就会产生信号冲突的问题,解决这一问题的方法一般是采用载波侦听多路访问/冲突检测技术( Carrier Sense Multiple Access/Collision Detection )
CSMA/CD的基本工作过程如下:
终端设备不停地检测共享线路的状态。如果线路空闲,则可以发送数据:如果线路不空闲,则等待一段时间后继续检测(延时时间由退避算法決定)如果有另外一个设备同时发送数据,两个设备发送的数据会产生沖突。终端设备检测到冲突之后,会马上停止发送自己的数据,并发送特殊阻塞信息,以强化沖突信号,使线路上其他站点能够尽早检测到沖突终端设备检测到沖突后,等待一段时间之后再进行数据发送(延时时间由退避算法決定)。
CSMA/CD的工作原理可简单总结为:先听后发,边发边听,冲突停发,随机延迟后重发。
CSMA/CD与CSMA/CA的区别
一.CSMA/CD 概述
CSMA/CD协议(Carrier Sense Multiple Access with Collision Detection)即载波帧听,多路访问/冲突检测
载波侦听:多个计算机在发送数据帧前,首先帧听是否空闲,如果空闲,则发送数据帧;否则等待,继续帧听直到信道空闲。
多路访问:许多计算机以多点接入方式连接在一根总线上,都有访问总线的权利。
二.CSMA/CD 特点
1、 使用 CSMA/CD 协议的以太网不能进行全双工通信,而只能进行双向交替通信(半双工通信)。
2、 计算机发送数据帧之后的一小段时间内,存在着遭遇冲突的可能性。
3、 冲突不确定性使整个以太网平均数据率远小于以太网最高数据率。
一、CSMA/CA
CSMA/CA (Carrier Sense Multiple Access with Collision Avoidance) 即载波侦听多路访问/冲突避免。
采用该协议要求设备要主动避免冲突而非被动侦测的方式来解决冲突问题。避免冲突的方法主要有两个:
1、监听到信道空闲时,并不是立即发送,而是等待一段时间再发送数据。
2、先发送一个很小的信道侦测帧RTS,如果收到最近的接入点返回的CTS,就认为信道是空闲的,然后再发送数据
协议的主要流程如下:
1、 首先检测信道是否有使用,如果检测出信道空闲,则等待一段随机时间后,才送出数据。
2、 接收端如果正确收到此帧,则经过一段时间间隔后,向发送端发送确认帧ACK。
3、 发送端收到ACK帧,确定数据正确传输,在经历一段时间间隔后,再发送数据。
二、CSMA/CD 与CSMA/CA 两者区别
1、 CSMA/CD主要着眼点在冲突的侦测,当侦测到冲突时,进行相应的处理,要求设备能一边侦测一边发送数据。
2、CSMA/CA主要着眼点在冲突的避免,协议里也看到经常是等待一段时间再做动作,通过退避尽量去避免冲突,还有就是先发送一些特别小的信道侦测帧来测试信道是否有冲突。
三、应用
CSMA/CD主要适用以太网。
CSMA/CA主要适用无线局域网。
以太网帧结构
以太网上使用两种标准帧格式。第一种是上世纪80年代初提出的DIX v2格式,即Ethernet Ⅱ帧格式。Ethernet Ⅱ后来被IEEE 802标准接纳,并写进了IEEE 802.3×-1997的3.2.6节。第二种1983年提出的IEEE 802.3格式。这两种格式的主要区别在于Ethernet I格式中包含一个Type字段,标识以太帧处理完成之后将被发送到哪个上层协议进行处理,IEEE802.3格式中,同样的位置是长度字段。
不同的Type字段值可以用来区别这两种帧的头型,当Type字段值小于等于1500(或者十六进制的0x05DC)时,帧使用的是EEE 802.3格式。当Type字段值大于等于1536(或者十六进制的0x0600)时,帧使用的是Ethernet Ⅱ格式。以太网中大多数的数据帧使用的是Ethernet Ⅱ格式.
以太帧中还包括源和目的MAC地址,分别代表发送者的MAC和接收者的MAC,此外还有帧校验序列字段,用于检验传输过程中帧的完整性。
Ethernet Ⅱ帧格式
Ethernet_I的帧中各字段说明如下:
DMAC ( Destination MAC) 是目的MAC地址。DMAC字段长度为6个字节,标识帧的接收者.
SMAC ( Source MAC)是源MAC地址。SMAC字段长度为6个字节,标识帧的发送者。
类型字段(Type)用于标识数据字段中包含的高层协议,该字段长度为2个字节。类型字段取值为0x0800的帧代表IP协议帧;类型字段取值为0x0806的帧代表ARP协议帧。
数据宇段(Data)是网络层数据,最小长度必须为46字节以保证帧长至少为64字节,数据字段的最大长度为1500字节循环冗余校验字段(FCS)提供了一种错误检测机制。该字段长度为4个字节。
IEEE802.3帧格式
IEEE802.3帧格式类似于Ethernet Ⅱ帧,只是Ethernet Ⅱ的Type域被802.3帧的Length域取代,并且占用了Data字段的8个字节作为LLC和SNAP字段。
Length字段定义了Data字段包含的字节数。
逻辑链路控制LLC ( Logical Link Control)由目的服务访问点DSAP ( Destination Service Access Point)、源服务访问点SSAP ( Source Service Access Point ) 和Control字段组成。
SNAP ( Sub-network Access Protocol )由机构代码(Org Code) 和类型(Type)字段组成。Org Code三个字节都为0。Type字段的含义与Ethernet I顺中的Type字段相同。
IEEE802.3帧根据DSAP和SSAP字段的取值又可分为以下几类:
(1)当DSAP和SSAP都取特定值0xff时, 802.3欣就变成了 Netware-ETHERNET帧,用
来承载NetWare类型的数据。
(2)当DSAP和SSAP都取特定值Oxaa时,802.3帧就变成了ETHERNET_ SNAP帧。
ETHERNET SNAP帧可以用于传输多种协议。
(3)DSAP和SSAP其他的取值均为纯IEEE802.3帧。
MAC地址
如同每一个人都有一个名字一样,每一台网络设备都用物理地址来标识自己,这个地址就是MAC地址。网络设备的MAC地址是全球唯一的。MAC地址长度为48比特,通常用十六进制表示。MAC地址包含两部分:前24比特是组织唯一标识符 ( OUI , Organizationally Unique Identifier),由IEEE统一分配给设备制造商。
单播
局域网上的帧可以通过三种方式发送。第一种是单播,指从单一的源端发送到单一的目的端。每个主机接口由一个MAC地址唯一标识,MAC地址的OUI中,第一字节第8个比特表示地址类型。对于主机MAC地址,这个比特固定为0,表示目的MAC地址为此MAC地址的帧都是发送到某个唯一的目的端。在冲突域中,所有主机都能收到源主机发送的单播帧,但是其他主机发现目的地址与本地MAC地址不一致后会丢奔收到的帧,只有真正的目的主机才会接收并处理收到的帧。
广播
第二种发送方式是广播,表示帧从单一的源发送到共享以太网上的所有主机。广播帧的目的MAC地址为十六进制的FF:FF:FF:FF:FF:FF ,所有收到该广播顾的主机都要接收并处理这个帧。广播方式会产生大量流量 ,导致带宽利用率降低,进而影响整个网络的性能。当需要网络中的所有主机都能接收到相同的信息并进(处理的情况下,通常会使用广播方式。
组播
第三种发送方式为组播,组播比广播更加高效。组播转发可以理解为选择性的广播,主机侦听特定组播地址,接收并处理目的MAC地址为该组播MAC地址的帧。组播MAC地址和单播MAC地址是通过第一字节中的第8个比特区分的。组播MAC地址的第8个比特为1,而单播MAC地址的第8个比特为0。
当需要网络上的一组主机(而不是全部主机)接收相同信息,并且其他主机不受影响的情况下通常会使用组播方式。
ICMP协议
Internet控制消息协议ICMP(Internet Control Message Protocol)是网络层的一个重要协议。ICMP协议用来在网络设备间传递各种差错和控制信息,并对于收集各种网络信息,诊断和排除各种网络故障等方面起着至关重要的作用。
ICMP是TCP/IP协议簇的核心协议之一,它用于在IP网络设备之间发送控制报文,传递差错控制,查询信息等。
ICMP重定向
ICMP重定向功能用于支持路由功能。如下图:
ICMP Redirect重定向消息用于支持路由功能。如图所示,主机A希望发送报文到服务器A,于是根据配置的默认网关地址向网关RTB发送报文。网关RTB收到报文后,检查报文信息,发现报文应该较发到与源主机在同一网段的另一个网关设备RTA,因为此转发路径是更优的路径,所以RTB会向主机发送一个Redirect消息,通知主机直接向另一个网关RTA发送该报文。主机收到Redirect消息后,会向RTA发送报文,然后RTA会将该报文再转发给服务器A.
ICMP差错检测
ICMP Echo消息常用于诊断源和目的地之间的网络连通性,同时还可以 提供其他信息,如报文往返时间。
ICMP Echo消息常用于诊断源和目的地之间的网络连通性,同时还可以提供其他信息,如报文往返时间等。
ICMP数据包
ICMP——ping应用
pig命令的输出信息中包括目的地址,ICMP报文长度,序号,TTL之以及往返时间。序号是包含在Echo回复消息(Type=0)中的可变参数字段,TTL和往返时间包含在消息的IP头中。
ICMP——Tracert应用
ICMP的另一个典型应用是Tracert。 Tracer基于报文头中的TTL值来逐跳跟踪报文的转发路径。为了跟踪到达某特定目的地址的路径,源端首先将报文的TTL值设置为1。该报文到达第一个节点后,TTL超时,于是该节点向源端发送TTL超时消息,消息中携带时问戳。然后源端将报文的TTL值设置为2,报文到达第二个节点后超时,该节点同样返回TTL超时消息,以此类推,直到报文到达目的地。这样,源端根据返回的报文中的信息可以跟踪到报文经过的每一个节点,并根据时间戳信息计算往返时间。Tracert是检测网络丢包及时延的有效手段,同时可以帮助管理员发现网络中的路由环路。
Tracert常用的配置参数说明如下:
-a source-ip-address指定tracert报文的源地址
-f first-tt/指定初始TTL。缺省值是1。
-m max-比指定最大TTL。缺省值是30。
-name使能显示每一跳的主机名。
-p port指定目的主机的UDP端口号
ARP协议
当网络设备有数据要发送给另一台网络设备时,必须要知道对方的网络层地址(即IP地址)。IP地址由网络层来提供,但是仅有IP地址是不够的,PP数据报文必须封装成帧才能通过数据链路进行发送。数据帧必须要包含目的MAC地址,因此发送端还心须获取到目的MAC地址。通过目的IP地址来获取目的MAC地址的过程是由ARP ( Address Resolution Protocol)协议来实现的。
ARP数据包格式
硬件类型:
协议类型 (Protocol Type):指定了发送者映射到数据链路标识符的网络层协议的类型;IP对应 0x0800。
硬件地址长度 (Hardware Adress Length:-指定了数据链路标识符的长度,单位是八位组。MAC 地址的长度为6。
协议地址长度 (Protocol Address Length):指定了网络层地址的长度,单位是八位组。IPv4 地址的长度为 4。
操作 (Operation):指明了一个数据包是 ARP 请求(1)还是 ARP 响应 (2)这里还可以发现有其他的值表明 ARP 数据包的其他用途。如反向 ARP 请求 (3)、反向 ARP 响应 (4)、反转 ARP请求 (8),反转 ARP 响应(9).
最后20 个八位组是发送者和目标机的数据链路标识符和 IPV4 地址
正向ARP工作过程
ARP请求
主机A的ARP缓存表中不存在主机C的MAC地址,所以主机C会发送ARP Request 来获取目的MAC地址。ARP Request报文封装在以太帧里。帧头中的源MAC地址为发送端主机的MAC地址。此时,由于主机A不知道主机C的MAC地址,所以目的MAC地址为广播FF-FF-FF-FF-FF-FF.ARP Request报文中包含源IP地址,目的IP地址,源MAV地址,目的MAC地址。其中目的MAC地址的值为0.ARP Request报文会在整个网络上传播,该网络中所有主机包括网关都会收到此ARP Request报文。网管将会组织该报文发送到其他广播域。
ARP 响应
所有的主机接收到该ARP Request报文后,都会检查它的目的协议地址字段"寻的IP地址是否匹配。如果不匹配,则该主机将不会响应该ARP Rilequest报文。如果匹配则该主机会将ARP报文中的源MAC地址和源P地址信息记录到自己的ARP缓存表中,然后通过ARP Reply报文进行响应。
主机C会向主机A回应ARP Reply报文。ARP Reply报文中的源协议地址是主机C自己的IP地,目标协议地址是主机A的IP地址,目的MAC地址是主机A的MAC地址,源MAC地址是自己的MAC地址,同时Operation Code被设置为Reply。ARP Reply报文通过单播传送。
代理ARP过程
在上述例子的组网中,主机A需要与主机B通信时,目的IP地址与本机的IP地址在同一个网段,所以A将会以广播形式发送ARP Request报文,请求主机B的MAC地址。但是,广播报文无法被路由器转发,所以主机B无法收到主机A的ARP请求报文 ,当然也就无法应答.在路由器上启用代理ARP功能,就可以解决这个问题。启用代理ARP后,路由器收到这样的请求,会查找路由表,如果存在主机B的路由表项,路由器将会使用自己的GO/0/0接口的MACt地址来回 应该ARP Reauest 主机A收到ARP RepIy后,将以路由品的GO/0/0投口MAC地址作为目的MAC地址进行数据转发。
免费ARP
主机被分配了D地址或者IP地址发生变更后,必须立刻检测其所分配的IP地址在网络上是否是唯一的,以避免地址冲突。主机通过发送ARP Request报文来进行地址冲突检测。主机A将ARP Request广播报文中的目的IP地址字段设置为自己的IP地址,且该网络中所有主机包括网关都会接收到此报文。当目的IP地址已经被某一个主机或网关使用时,该主机或网关城会回应ARPReply很文。通过这种方式,主机A就可以检测地址书否冲突。
最后
以上就是调皮自行车为你收集整理的网络基础之协议栈通信协议栈的全部内容,希望文章能够帮你解决网络基础之协议栈通信协议栈所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复