数据链路层六大协议详解


本文图片截取自 学堂在线-华南理工大学的计算机网络课程

一些假设

  • 物理层、数据链路层和网络层各自是独立的处理进程
  • 机器A希望向B发送的是一个可靠的、面向连接的长数据流
  • 假设机器不会崩溃
  • 从网络层获取到的数据是纯的数据,直接装到载荷里
  • 定义了四个数据传送接口
    • from_network_layer 从网络层取数据
    • to_physical_layer 向物理层发送数据
    • to_network_layer 向网络层提交数据
    • from_physical_layer 从物理层获取数据
  • 等待事件的发生
    • frame_arrival 帧到达事件
    • cksum_err 校验和没有通过
    • timeout 定时器超时
  • 定义两个定时器
    • timer 重传定时器
    • ack_timer捎带确认定时器
  • 定义数据帧的结构
    在这里插入图片描述

1.无限制的单工协议(乌托邦协议)

五点假设

  • 1.数据单向传送
  • 2.收发双方网络层都处于就绪的状态
  • 3.处理的时间可以忽略不计
  • 4.可用的缓存空间无穷大
  • 5.完美信道:信道不损坏,不丢帧
    由于该协议的假设实际情况是不可能存在的,所以该协议又叫乌托邦协议

发送方

typedef enum {
	frame_arrival
} event_type;
#include "protocol.h"
void sender(void){
	frame s;
	packet buffer;
	while(true){
		from_network_layer(&buffer); // 从网络层接受数据
		s.info = buffer; // 包装数据
		to_physical_layer(&s); // 送向物理层
	}
}

接收方

typedef enum {
	frame_arrival
} event_type;
#include "protocol.h"
void receiver(void){
	frame r;
	event_type event;
	while(true){
		wait_for_event(&event); // 等待接收事件的到来
		from_physical_layer(&r); // 从物理层接收数据
		to_network_layer(&r.info); // 送向网络层
	}
}

接受方

2.单工停-等协议

明天再写。。。

3.有噪声信道的单工协议

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值