数据链路层六大协议详解

2023-11-16


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

一些假设

  • 物理层、数据链路层和网络层各自是独立的处理进程
  • 机器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.有噪声信道的单工协议

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

数据链路层六大协议详解 的相关文章

随机推荐

  • luajit笔记---编译成静态库以及FFI绑定宿主程序函数

    luajit笔记 编译成静态库以及FFI绑定宿主程序函数 发表于2016 3 31 9 23 19 219人阅读 分类 Lua local ffi require ffi ffi cdef typedef struct uint8 t id
  • 两个JSON合并一个JSON

    因为用artTemplate 一个script只能嵌入一条json 多条JOSN给多个script 数据共通又不理想所有就拼吧 虽然看起来都是json格式 String就是String json对象 function JSONcompose
  • 异常点检测算法工具库(pyod)介绍+代码

    异常点检测算法工具库 pyod 一 PyOD介绍 二 PyOD主要亮点 三 工具库相关重要信息汇总 四 作者介绍 五 API介绍与实例 API References Examples 六 代码及效果图 6 1 代码 6 2 效果图 项目地址
  • 《人工智能导论》期末项目 - 基于CNN的花卉识别系统

    目录 一 需求和用例分析 需求分析 用例分析 二 设计和实现 设计 实现 三 数据收集 四 项目技术 对于CNN深度学习算法的解析 五 结果评估方法 1 定性评估 2 定量评估 3 统计分析方法 六 参考文献 花卉系统项目演示 1 通过tr
  • 半波整流、全波整流电路#集成运算放大器

    半波整流 全波整流电路 集成运算放大器
  • 一零六八、回顾MySQL关键字排序

    一 关键字书写顺序 select distinct from join on where group by having union all order by limit 二 关键字实际执行顺序 from on join where gro
  • 详解Spring Bean的生命周期

    Spring Bean的生命周期是Spring面试热点问题 这个问题即考察对Spring的微观了解 又考察对Spring的宏观认识 想要答好并不容易 本文希望能够从源码角度入手 帮助面试者彻底搞定Spring Bean的生命周期 只有四个
  • 通过一张照片来定位拍摄地点和网站的域名 LA CTF 2023

    简介 这次打ctf遇到了一个比较经典的osint类题目 在这里分享一下如何做此类题目 题目链接 https platform lac tf challs 题目简介 你能猜出这个猫天堂的名字吗 答案是此位置的网站域 例如 如果答案是 ucla
  • 从编译器角度分析C语言中数组名和指针的区别

    数组名和指针是两个往往很容易让人们混淆的概念 很多人以为数组名就是一个指针 也有很多人知道数组名不同于指针但是仅知道数组名的值不能像指针一样改变 例如你可以写出下面这样的代码 int p p 却不能写这样的代码 int a a 那么数组名跟
  • Ubuntu下GCC引用mysql头文件和库文件

    http blog csdn net fjssharpsword article details 6942812 1 安装mysql server sudo apt get install mysql server 5 1 2 gcc连接m
  • 小程序嵌套h5界面,在h5界面调用小程序的扫一扫功能(自用方法3)

    前言 因为小程序对项目要求比较多 我们经常会使用webview嵌套H5界面来 然后在H5界面来实现我们的一些功能页面 这里就会遇到一些问题 比如H5界面的微信扫码功能 目录 实现方法的尝试 自用方法3 方法1 在h5界面中 点击调用小程序的
  • Go语言的学习【2】基础语法

    目录 代码组成部分 字符串 格式化字符 数据类型 变量 变量声明 多变量声明 值类型和引用类型 遇到的问题及解决办法 1 报错1 代码组成部分 Go 程序可以由多个标记组成 可以是关键字 标识符 常量 字符串 符号 在 Go 程序中 一行代
  • Python编程快速入门基础作品(集合)

    Python编程快速入门基础作品 第1集线条 Python编程快速入门基础作品 第2集角 Python编程快速入门基础作品 第3集三角形 Python编程快速入门基础作品 第4集正方形 Python编程快速入门基础作品 第5集五边形 Pyt
  • c语言实现队列

    1 队列的定义 队列 queue 是只允许在一端进行插入操作 而在另一端进行删除操作的线性表 队列是一种先进先出 First In First Out 的线性表 简称FIFO 允许插入的一端称为队尾 允许删除的一端称为队头 队头 head
  • c++ stl(标准模板库)

    1 引言 STL 标准模板库 从广义上分为 容器 算法 迭代器 容器和算法之间通过迭代器进行无缝连接 在 c 标准种 STL被组织成以下13个头文件
  • qt多线程下,QString赋值导致崩溃

    问题 在多线程情况下 给全局的QString变量赋值 拷贝操作 导致程序崩溃 例如有一个全局变量 QString strGlobal 在多线程代码段中进行赋值 strGlobal QString real value 线程执行频率到一定程度
  • 乐学python靠谱吗_【乐学100】-乐学100怎么样

    花开梦未蓝nice 今天刚给孩子注册成功 孩子马上被乐学100吸引住了 首先 是看到礼品店里有许多他心仪的奖品 他希望通过努力能够得到礼品 然后 他开始为自己挣学分 他一口气做了有理数单元11个小模块的练习 正确率较高 又做了错题总结 改正
  • C++函数模板基础

    今天给大家带来函数模板的内容 当我们面对 逻辑相同但类型不同 的问题时 比如整型相加和浮点型相加 使用函数模板可以提高代码利用率 起到事半功倍的效果 今天给大家分享蛋类型变量的函数模板 include
  • 关于C++对象模型(下)

    下篇主要讨论调用成员函数 访问成员变量的开销 及其特殊成员函数 数组 异常处理的讨论 这篇文章中出现的对象定义都出现在上篇中 全文在这里下载 文章内容转自 http tb blog csdn net TrackBack aspx PostI
  • 数据链路层六大协议详解

    数据链路层六大协议详解 一些假设 1 无限制的单工协议 乌托邦协议 五点假设 发送方 接收方 接受方 2 单工停 等协议 3 有噪声信道的单工协议 本文图片截取自 学堂在线 华南理工大学的计算机网络课程 一些假设 物理层 数据链路层和网络层