- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
实验二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(主机a)
您可能关注的文档
最近下载
- 幼儿园玩转滚筒自主游戏案例分享讲座PPT课件.pptx VIP
- 东南大学《网络与新媒体概论》2024 - 2025 学年第一学期期末试卷.pdf VIP
- 2024版建设工程质量常见多发问题防治措施汇编(房建篇)213页.docx VIP
- 大连理工大学24秋“计算机科学与技术”《C C++语言程序设计》考试历年常考点试题选编附答案.docx VIP
- 安徽大学《网络与新媒体概论》2024 - 2025 学年第一学期期末试卷.pdf VIP
- 2025中原农业保险股份有限公司招聘67人备考笔试题库及答案解析.docx VIP
- 人教版小学一年级道德与法治上册教案全册精选 .pdf VIP
- 宿舍楼及学生餐厅工程监理细则.doc
- 给水管道冲洗消毒实施方案计划-新.doc VIP
- Scinor赛诺超滤膜-热致相分离(TIPS)工艺与非溶剂致相分离.pdf
原创力文档


文档评论(0)