首页 > 试题广场 >

下面是一个简单流量控制程序片断:

[问答题]
下面是一个简单流量控制程序片断:
#define MAX_SEQ  1
#define MAX_PKT  1024
typedefine enum {frame,arrival,chksum_err,timeout} event_type;
typedefine enum {data,ack,nak} frame_kind;
typedefine struct {unsigned char data[MAX_PKT];} packet;
typedefine struct {
   frame_kind kind;
   unsigned int seq;
   unsigned int ack;
   packet info;
}frame;
void protocol(void)
{
   unsigned int next_frame_to_send;
   unsigned int frame_expected;
   frame s,r;
   packet bufffer;
   event_type event;
   
   next_frame_to_send=0;
   frame_expected=0;
   from_network_layer(&buffer);
   s.info=buffer;
   s.seq=next_frame_to_send;
   s.ack=1-frame_expected;
   to_physical_layer(&s);
   start_timer(s.seq);
   
   while (1){
       wait_for_event(&event);
       if (event==frame_arrival) {
          from_physical_layer(&r);
          if (r.seq==frame_expected) {
             to_network_layer(&r.info)
             inc(frame_expect);
          }
          if (r.ack==next_frame_to_send) {
             from_network_layer(&buffer);
             inc(next_frame_to_send);
          }
       }
       s.info=buffer;
       s.seq=next_frame_to_send;
       s.ack=1-frame_expected;
       to_physical_layer(&s);
       start_timer(s.seq);
   }
}

问题:
(1)该协议是哪一层的协议?
(2)画出协议数据单元的格式
(3)如果A,B两点都运行上述协议,假设A发送的单元首先到达B,画出A,B之间协议单元的传输过程.如果A,B发送的单元同时到达对方,画出协议传输过程.


这道题你会答吗?花几分钟告诉大家答案吧!