NS2_mac层理解.doc

  1. 1、本文档共5页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
NS2 mac层理解 mac-802_11.h: // frame control field: struct frame_control { u_char??? ??? fc_subtype??? ??? : 4; u_char??? ??? fc_type??? ??? ??? : 2;?? //frame type : RTS, CTS, ACK, data u_char??? ??? fc_protocol_version??? : 2; u_char??? ??? fc_order??? ??? : 1; u_char??? ??? fc_wep??? ??? ??? : 1; u_char??? ??? fc_more_data??? ??? : 1; u_char??? ??? fc_pwr_mgt??? ??? : 1; u_char??? ??? fc_retry??? ??? : 1; u_char??? ??? fc_more_frag??? ??? : 1; u_char??? ??? fc_from_ds??? ??? : 1; u_char??? ??? fc_to_ds??? ??? : 1; }; // frame field: struct hdr_mac802_11 { struct frame_control??? dh_fc; //duration of reserved transmission time (RTS/CTS) u_int16_t??? ??? dh_duration; //address 1: MAC address of wireless host or AP to receive this frame u_char??????????? dh_ra[ETHER_ADDR_LEN]; //MAC address of wireless host or AP transmitting this frame u_char??????????? dh_ta[ETHER_ADDR_LEN]; //MAC address of router interface to which AP is attached u_char??????????? dh_3a[ETHER_ADDR_LEN]; //used only in ad hoc mode u_char??? ??? ??? dh_4a[ETHER_ADDR_LEN]; u_int16_t??? ??? dh_scontrol; u_char??? ??? ??? dh_body[1]; // size of 1 for ANSI compatibility }; 发送包: recv()--send()--sendDATA() and sendRTS()--start defer timer--deferHandler()--check_pktRTS()--transmit()--recv()--recieve timer started--recv_timer()--recvCTS()--tx_resume()--start defer timer--rx_resume()--deferHandler()--check_pktTx()--transmit()--recv()--recieve timer started--recv_timer()--recvACK()--tx_resume()--callback_--rx_resume() recv()(down)--要发送的数据包先被recv()处理,recv()先检查包头方向字段,如果是down,意味着包来自上层,数据包将转由send()处理。不管接收包来自上层或下层,recv()总被调用。 send()-- 首先检查能量模式,如果在睡眠模式则丢弃包,并随包设callback_ 给handler(?),这是包传送完毕后会调用handler的原因。 下一步,send()调用sendDATA()and sendRTS建立数据包包头,RTS包存储在pktTx_ and pktRTS_并随数据包发送。数据包的MAC头赋唯一序列值。 MAC用 is_idle()检查backoff timer,如果backoff timer不减少,则检查信道(medium)是否空闲,如果空闲则启动defer. DIFS+a randomly chosen amount of time in the interval [0,cw_), cw_当前竞争窗口。 如果节点正在等待其defer time,则继续等待。 如果介质忙,节点启动其backoff timer. 此时,send

文档评论(0)

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

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

1亿VIP精品文档

相关文档