CSMA-CD模擬实验指导书.docVIP

  • 12
  • 0
  • 约6.29千字
  • 约 10页
  • 2016-12-06 发布于重庆
  • 举报
CSMA-CD模擬实验指导书

实验一 CSMA/CD协议模拟实验 一、实验目的 以太网是目前应用最广泛的局域网。本课程设计的目的是通过模拟以太帧的发送过程,使大家能进一步理解和掌握以太网核心协议CSMA/CD。 二、实验要求 编写程序模拟以太结点的数据发送流程。具体要求: 用两个线程a和b模拟两台主机。 用一个双字类型变量Bus来模拟总线(将其初始化为“\0”,并且总线等于“\0”时表示总线空闲)。 两个子线程向总线发送自己的数据。数据用该线程的线程号进行模拟,发送数据用线程号和Bus的“或”操作进行模拟(即Bus=Bus|ID,ID为该线程的线程号)。 每台主机须向总线上成功发送10次数据,如果其中某次数据发送失败,则该线程结束。 发送流程须遵循CSMA/CD。随机延迟算法中的冲突窗口取0.005。在数据发送成功(即Bus==ID)后,报告“ID send success”,产生冲突(Bus!=ID)后报告“ID send conllision”,发送失败(即冲突计数器值为0)后报告“ID send failure”。随着主机发送成功次数增加,报告其已发送成功的次数,如“主机A发送成功数=3”。 三、相关知识 1. CSMA/CD协议工作原理及性能分析 以太网的核心技术是随机争用型介质访问控制方法,即带有冲突检测的载波侦听多路访问CSMA/CD方法。 它的工作原理是: 发送数据前先侦听信道是否空闲若空闲,则立即发送数据。若信道忙碌,则等待一段时间至信道中的信息传输结束后再发送数据;若在上一段信息发送结束后,同时有两个或两个以上的节点都提出发送请求,则判定为冲突。若侦听到冲突,则立即停止发送数据,等待一段随机时间,再重新尝试。 其原理简单总结为:先听后发,边发边听,冲突停发,随机延迟后重发  性能指标:信道利用率、吞吐量、介质利用率   CSMACD的主要影响因素:传播时延、工作站数。   ①CSMA/CD对站点个数不是很敏感,对实际的输入负载比较敏感。   ②CSMA/CD对传播时延a比较敏感。   ③CSMA/CD冲突不可避免。   ④CSMA/CD的介质利用率随a的上升下降较快。   ⑤CSMA/CD适合通信量不大,交互频繁的场合   ⑥对于CSMA/CD帧越长,吞吐量越太,要求帧具有最小长度,当有许多短消息时,带宽浪费严重。 ⑦CSMA/CD在轻负载时提供最短延迟,但对重负载敏感。)#include stdafx.h #include csmacd.h #include cstdio #include iostream #include cmath #include windows.h #ifdef _DEBUG #define new1 DEBUG_NEW #undef THIS_FILE HIS_FILE[]=_FILE_; #endif //static char T CWinThread *thread1,*thread2; //定义变量 DWORD ID1,ID2,Bus=0; //初始化共享 UINT aThread(LPVOID pParam); //线程a,代表主机a UINT bThread(LPVOID pParam); //线程b,代表主机b using namespace std; int _tmain(int argc,TCHAR* argv[],TCHAR*envp[]) { int nRetCode=0; if(!AfxWinInit(::GetModuleHandle(NULL),NULL, ::GetCommandLine(),0)) { cout_T(Fata1 Error:MFC initialization failed) endl; nRetCode=1; } else { thread1=AfxBeginThread(aThread,NULL); //启动线程a ID1=thread1-m_nThreadID; //获取线程ID号 thread2=AfxBeginThread(bThread,NULL); //启动线程b ID2=thread2-m_nThreadID; //获取线程ID号 getchar(); } return nRetCode; } UINT aThread(LPVOID pParam) //线程a(

文档评论(0)

1亿VIP精品文档

相关文档