Jan 13, 2025
18 mins read
七层OSI模型
应用层、表示层、会话层、传输层、网络层、数据链路层、物理层
应用层:各种应用软件,会发送一个探测数据包,探测双方网络是否能胡同。
表示层:用来描述文件的类型(比如发送图片,会在整体二进制数据前加上文件类型数据标记)、数据加密。
会话层:发起会话/接受会话
传输层:传输数据TCP、UDP
网络层:定义IP编址、路由功能,如数据转发
数据链路层:定义数据基本格式,如MAC地址
物理层:定义物理设备标准,如网线/光纤的接口类型、传输速率等
五层模型
应用层、传输层、网络层、数据链路层、物理层
TCP/IP四层模型
应用层(HTTP\SMTP\DNS\RTP)、运输层(TCP\UDP)、网络层(IP)、网络接口层
协议三要素:
电话交换机接通电话线的方式称为电路交换,使用电路交换传送计算机数据时,其线路的传输效率往往很低。
三个步骤:
分组交换采用的是存储转发技术
在发送报文之前,先把较长的报文划分成一个个更小的等长的数据段;然后在数据段的前面加上一些由必要的控制信息组成的首部 后,就构成了一个分组
发送方:构造分组、发送分组
路由器:缓存分组、转发分组
接收方:接受分组、还原报文
用于早期的电报通信网,现在较少使用,通常被分组交换方式所取代。
对比
解决在各种传输媒体上传输比特0和1的问题,给数据链路层提供透明传输比特流的服务,如:双绞线、同轴电缆、光纤等。
物理层协议的主要任务
导引型传输媒体:同轴电缆、双绞线、光纤(多模光纤、单模光纤)、电力线
非导引性传输媒体:无线电波、微波、红外线、可见光
串行传输 / 并行传输
计算机远距离传输采用串行传输,计算机内部采用并行传输
同步传输 / 异步传输
内同步(曼彻斯特编码)
异步是指字节之间异步
单项通信(单工)/ 双向交替通信(半双工)/双向同时通信(全双工)
单项通信:一种方向,无线电广播就是这样的方式。
双向交替通信:双方可以相互传输数据,比如对讲机,但是不能同时传输。
双向同时通信:双方可以同时发送、接收信息,比如手机。
链路就是从一个结点到相邻结点的一段物理线路,而中间没有任何其他的交换结点。
数据链路是指把实现通信协议的硬件和软件加到链路上,就构成了链路。
数据链路层以帧为单位传输和处理数据
应用层传递应用层协议数据单元给运输层,运输层加上运输层协议首部传递给网络层,网络层将数据添加网络层协议首部传递给数据链路层,数据链路层添加帧头和帧尾。
帧头和帧尾的作用之一就是帧定界。如下图,红色部分就是P2P帧定界标志。但是以太网MAC帧并没有帧定界标志。
那以太网的MAC帧怎么被提取一个个帧呢?
实际上以太网V2的MAC帧交付给物理层后会添加前导码,前导码中前7个字节为前同步码,作用是使接收方的时针同步,之后的1字节为帧开始定界符。
透明传输是指不管所传数据是什么样的比特组合,都应当能够在链路上传送。当所传数据中的比特组合恰巧与某一个控制信息完全一样时,就必须采取适当的措施,使接收方不会将这样的数据误认为是某种控制信息。这样才能保证数据链路层的传输是透明的。
如何判断发送的数据中是帧定位符还是帧的数据?
下图是P2P帧的格式,在数据部分每遇到5个1可以添加1个0,和帧的首尾区分开,在读取的时候再删除这个0。
为了提高帧的传输效率,应当使帧的数据部分尽可能大一些。
帧在传输过程中可能会出现误码,所以进行差错检测,在以太网V2的MAC帧中如上图,FCS就是检错码,通过检错算法就可以检查到是否出现了误码。
如果有奇数个位发生误码,则奇偶性发生变化,可以检查出误码;
如果有偶数个位发生误码,则奇偶性不发生变化,无法检查出误码;
如:
$$ G(x) = x^4 + x^2 + x + 1 $$
尽管误码不能完全避免,但如果能实现发送方发送什么,接收方就能收到什么,就成为可靠传输。
不可靠传输服务:仅仅丢弃有误码的帧,其他什么也不做。
TCP向其上层提供面向连接的可靠传输服务
UDP向其上层提供无连接、不可靠传输服务
IP向其上层提供无连接、不可靠传输服务
802.11无线局域网要求数据链路层实现可靠传输
以太网不要求数据链路层实现可靠传输
如果接收方没有收到数据,发送方一直都收不到接收方传送回来的ACK,于是一直等待,所以要设置超时重传,选择略大于”从发送方到接收方的平均往返时间“,这样当超时的时候,发送方会重新传送数据。
如果接收方发送的ACK丢失,发送方就不知道数据是否已经被接收,于是又发送一条DATA0数据给接收方,这时候接收方无法判断该数据是否接受过,所以要将分组带上序号,保证每次接收到的都是新的数据。
但是接收方传送的ACK,发送方怎么判断是第几条信息的传送成功呢?当DATA0和DATA1同时发送时,如果都返回的是ACK,当有一条数据没有收到时,就无法判断出是哪条信息丢失了,所以要对ACK也编号。
但是数据链路层中一般不会出现ACK分组迟到的情况,因此在数据链路层中可以不用给ACK分组编号。
由于停止-等待协议的信道利用率太低了,于是出现了其他两种协议,即后退N帧协议GBN和选择重传协议SR。
如果Wt = 1,则跟停止等待协议相同了。发送窗口最大2^n -1,最小1。
对n号帧的确认采用累计确认方式,表明接收方已经收到n号帧和它之前的全部帧。
如果正确收到,则为n帧发出ACK;
否则全部丢弃,重传从最后一个确认开始。
缺点:必须按序接收帧,不按序会被丢弃。为了提高性能,接收窗口的尺寸不应该再等于1(而应该大于1),以便接收方线收下失序到达但无误码的那些数据分组,等所缺分组收齐后再一并送交上层,于是引出选择重传协议。
发送方一次可以发送N帧,可以不按序接收,重传没有确认的帧。
对每个正确收到的数据逐一确认,如果Wr = 1则与回退N帧协议相同了。
帧格式
透明传输
差错检测 使用循环冗余码检查FCS之前数据
共享信道要着重考虑的一个问题就是如何协调多个发送和接受站点对一个共享传输媒体的占用,即MAC。
频分复用FDM
所有用户同时占用不同的频带资源并行通信。
时分复用TDM
时分复用技术将时间划分成一段段等长的时分复用帧,占用固定的时隙。
波分复用WDM
码分复用CDM
该技术主要用于多址接入(多点接入:处理动态分配信道给用户),常被叫做码分多址CDMA。
同理,频分复用FDM和时分复用TDM同样可用于多址接入,FDMA和TDMA。
在CDMA中,每一个比特时间再划分为m个短的间隔,称为码片,通常m = 64 / 128。
如果一个站要发送比特1,则发送它自己的m bit码片序列;
如果一个站要发送比特0,则发送它自己的m bit码片序列的二进制反码。
eg:码片序列为00011011,发送比特1:00011011,发送比特0:11100100。按惯例将0写为-1,1写为+1(直接序列扩频DSSS),所以该站点的码片序列为(-1,-1,-1,+1,+1,-1,+1,+1)
Sharing is caring!