计算机网络课程设计报告--- CSMACD协议仿真.doc

计算机网络课程设计报告--- CSMACD协议仿真.doc

  1. 1、本文档共13页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
计算机网络课程设计实验报告 -- CSMA/CD协议仿真 学院:计算机科学与通信工程 一、CSMA/CD协议工作原理(查资料)及性能分析(指标与影响因素) ??CSMA/CD是carrier?sense?multiple?access/collision?detected?的缩写,“载波侦察听多路访问/冲突检测”,或“带有冲突检测的载波侦听多路访问”。所谓载波侦听(carrier?sense),意思是网络上各个工作站在发送数据前都要总线上有没有数据传输。若干数据传输?(称总线为忙),则不发送数据;若无数据传输(称总线为空),立即发送准备好的数据。所谓多路访问(multiple?access)意思是网络上所有工作站收发数据共同使用同一条总线,且发送数据是广播式的。所谓冲突(collision),意思是,若网上有两个或两个以上工作站同时发送数据,在总线上就会产生信号的混合,哪个工作站都同时发送数据,在总线上就会产生信号的混合,哪个工作站都辨别不出真正的数据是什么。这种情况称数据冲突又称碰撞。为了减少冲突发生后又的影响。工作站在发送数据过程中还要不停地检测自己发送的数据,有没有在传输过程中与其它工作站的数据发生冲突,这就是冲突检测(collision?detected)。? CSMA/CD媒体访问控制方法的工作原理,可以概括如下:?先听后说,边听边说;? ???? ?一旦冲突,立即停说;? ????? 等待时机,然后再说;? ?注:“听”,即监听、检测之意;“说”,即发送数据之意。? 上面几句话在发送数据前,先监听总线是否空闲。若总线忙,则不发送。若总线空闲,则把准备好的数据发送到总线上。在发送数据的过程中,工作站边发送检测总线,是否自己发送的数据有冲突。若无冲突则继续发送直到发完全部数据;若有冲突,则立即停止发送数据,但是要发送一个加强冲突的JAM信号,以便使网络上所有工作站都知道网上发生了冲突,然后,等待一个预定的随机时间,且在总线为空闲时,再重新发送未发完的数据。???CSMA/CD控制方式的优点是:原理比较简单,技术上易实现,网络中各工作站处于平等地位?,不需集中控制,不提供优先级控制。但在网络负载增大时,发送时间增长,发送效率急剧下降。时间片 512比特时间 帧问间隔 9.6微秒 尝试极限16 退避极限 10 人为干扰长 32比特 最大帧长 1518字节 最小帧长 512字节 地址字段长 48比特? )#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 aTh

文档评论(0)

2017meng + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档