光纤通信的传输体制(PDH、SDH、PTN的概念及速率等级、容量)
时间: 2023-06-06 19:08:38 浏览: 1306
关于光纤通信的传输体制,我可以回答你的问题。PDH、SDH和PTN都是光传输的技术标准,其中PDH指的是分时复用层次,SDH指的是同步数字分层,PTN指的是分组传输网络。它们分别有不同的速率等级和容量。
PDH分为E1、E2、E3等多个等级,其中E1速率为2.048Mbps,E2速率为8.448Mbps,E3速率为34.368Mbps,容量也随之逐级提升。
SDH则分为STM-1、STM-4、STM-16等等多个等级,其中STM-1速率为155.52Mbps,STM-4速率为622.08Mbps,STM-16速率为2.48832Gbps,容量也随之逐级提升。
PTN是一种以分组为单位进行传输的网络,可以提供更灵活的服务质量和更高的带宽利用率。
希望这些信息可以帮助你理解光纤通信的传输体制。
相关问题
SDH传送网组成和帧结构的分析,STM-16传输速率的计算;给出PDH 4次群如何复用到STM-1的过程。
SDH传送网由多个光纤传输系统组成,每个光纤传输系统包括一个光纤收发器和一个光纤信号处理器。SDH传送网的帧结构是一个多层结构,由同步传输模块(STM)和同步传输信道(TDM)组成。其中,STM是一种固定速率的数字信号,TDM是将多个数字信号按照时间顺序复用到一个信道中。
在SDH传输系统中,STM-16传输速率为2.5 Gbps。其中,STM-16帧长为125 μs,每帧包含16个STM-1信道。每个STM-1信道的传输速率为155.52 Mbps。
PDH 4次群是指将4个2.048 Mbps的PDH信号复用到一个34 Mbps的信道中。将多个34 Mbps的信道按照时间顺序复用到一个STM-1信道中,需要进行映射和复用处理。
具体过程如下:
1. 将4个2.048 Mbps的PDH信号分别映射到4个2.048 Mbps的容器中。
2. 将4个容器中的数据进行交错,形成1个8.448 Mbps的容器。
3. 将8.448 Mbps的容器中的数据映射到1个34 Mbps的容器中。
4. 将多个34 Mbps的容器按照时间顺序复用到一个STM-1信道中,形成一个STM-1多路复用信号。
qt通过PDH获取网络流量
Qt通过PDH获取网络流量需要使用Windows的性能数据帮助程序(PDH)接口。以下是获取网络流量的示例代码:
```cpp
#include <windows.h>
#include <pdh.h>
#include <pdhmsg.h>
#include <QDebug>
#define MAX_COUNTER_PATH 256
void getNetworkStat(double* inBytes, double* outBytes)
{
PdhQueryOptions(NULL, PDH_GLOBAL_MACHINE, NULL);
HCOUNTER inCounter;
HCOUNTER outCounter;
wchar_t inCounterPath[MAX_COUNTER_PATH];
wchar_t outCounterPath[MAX_COUNTER_PATH];
// 获取网络接口的计数器路径
PdhLookupPerfNameByIndex(NULL, 2, (LPWSTR)inCounterPath, NULL);
PdhLookupPerfNameByIndex(NULL, 10, (LPWSTR)outCounterPath, NULL);
// 打开网络接口的计数器
PdhOpenQuery(NULL, 0, NULL);
PdhAddCounter(NULL, inCounterPath, 0, &inCounter);
PdhAddCounter(NULL, outCounterPath, 0, &outCounter);
PdhCollectQueryData(NULL);
// 获取网络流量值
PDH_FMT_COUNTERVALUE inValue;
PDH_FMT_COUNTERVALUE outValue;
PdhCollectQueryData(NULL);
PdhGetFormattedCounterValue(inCounter, PDH_FMT_DOUBLE, NULL, &inValue);
PdhGetFormattedCounterValue(outCounter, PDH_FMT_DOUBLE, NULL, &outValue);
*inBytes = inValue.doubleValue;
*outBytes = outValue.doubleValue;
// 关闭计数器和查询
PdhCloseQuery(NULL);
PdhCloseCounter(inCounter);
PdhCloseCounter(outCounter);
}
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
double inBytes;
double outBytes;
getNetworkStat(&inBytes, &outBytes);
qDebug() << "In Bytes: " << inBytes << " Out Bytes: " << outBytes;
return a.exec();
}
```
在这个示例代码中,我们使用 `PdhLookupPerfNameByIndex` 函数获取网络接口计数器的路径,并使用 `PdhOpenQuery` 函数打开查询,然后使用 `PdhAddCounter` 函数打开计数器。最后使用 `PdhGetFormattedCounterValue` 获取计数器的值。注意,需要在程序结束时使用 `PdhCloseCounter` 和 `PdhCloseQuery` 函数关闭计数器和查询。