热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

计算机网络(谢希仁第七版)数据链路层个人笔记

写此博文目的:整理知识点方便自己以后复习和深入的学习

数据链路层

1)数据链路:除了物理线路外,还必须有通信协议来控制这些数据的传输,若把这些协议的软件和硬件加到链路上,就构成了数据链路

数据链路层传输的数据单位:帧

帧从生成到发送的一个过程:由应用层,传输层,网络层形成的数据报,在数据链路层封装成帧,然后通过数据链路传输到另外一个结点

链路层的基本功能:

1)封装成帧

加头:在哪里开始(开始标志)

加尾:在哪里结束(结束标志)

首尾还包含控制信息和最大传输单元(最大传输长度)

SOH:首部

EOT:尾部

规定首尾头的长度加起来要小于原始报文的长度(软性规定)

2)透明传输(理解透明二字,表示无论什么样比特组合的数据都能通过数据链路层)

字符填充发保证数据链路传输的透明性

以下是字符填充法:

如果数据报文中由和头SOH,尾(EOT)相同的部分怎么办?

答:数据报文中出现的SOH和EOT(不代表头尾的)前面一个转义字符ESC

如果由ESC这个数据的话,也是在ESC前面加ESC

这样无论什么样的数据,数据链路层都能传输

3)差错检测

数据可靠性的保证

循环冗余校验CRC

1)在发送端,数据报文后面加冗余码

n位数据+k位冗余码生成完整的一个帧

冗余码的生成:

数据m:1010001101(10位)

假设n=5,p=110101

然后用二进制的模2运算进行2的n次方乘以m的运算

具体:m后面加n个0,得到n+k位除数除以p得到余数r

如果r不够n位,则前面补0

二进制的除法:和十进制的除法(竖式)不同在于没有减法,而是直接异或

异或:相同为0,不同为1

在接收端:

CRC校验:把收到的每一个帧都除以相同的除数p(模2运算),然后检测余数r,r=0,则数据无误

即a/b 商c余d 那么 b*c+d==c

帧检验序列:是数据+冗余码生成的序列

注意帧检验序列和循环冗余校验的区别,一个是序列,一个是方法

CRC是无差错接受:凡是接收的帧都没有传输差错,由差错的帧就丢弃而不接受

确认和重传机制:流量控制

4)流量控制(确认和重传机制)

弥补主机a,b之间的带宽差异

发送下一个帧之前先确认上一个帧传输成功(等待接收端发送过来的接收成功信号)

(ack信号)

发送方:

1. 从主机中取一个帧

2. 进数据帧发送到数据链路层的发送缓存里

3. 将发送缓存里的数据帧发送出去

4. 等待

5. 若收到ack信号,则跳转到1

接收方:

1. 等待

2. 若收到数据帧,则放入接收缓存中

3. 先进行冗余校验,正确则上交给主机

4. 向发送端发送ack信息

5. 跳转到1

没有流量控制的话,就是不停的发不停的发,由流量控制的话,就发送一个帧,收到ack信号再发

可靠性的保证

采用流量控制的时候数据传输可能出现的四种情况:

1)正常情况

2)数据帧出错:接收端进行CRC校验之后发现数据错误,则向发送端发送NAK信号

3)数据帧丢失:接收端一直没有接收到数据,如果发送端没有超时计时器的话会一直得到接收端返回信号

4)返回信号丢失:发送端在超时计时器时间内没有收到接收信号,则重发

重传时间限定:发送的平均值

第四种因为返回信号丢失,所以发送端会一直发,那么接收端就存在接收了重复帧的问题

解决方法:给发送帧编号,然后直接去重

帧编号因为帧很多,占用的比特就大(1,2,3,......n)

所以用0,1表示帧编号,0,1区分这个帧和前面帧的不同(0,1区分上下帧)

链路层代表协议:ppp协议

Ppp协议就是用户计算机和因特网服务提供者(ISP)进行通信所用的数据链路层协议

ppp协议的特点:

1)简单

2)封装成帧

3)透明性

4)多种网络层协议:在同一条物理链路上同时支持多种网络层协议,向上兼容

5)ppp能在多种类型的物理链路上运行,向下兼容(ppp协议保证遵循ppp协议的二进制既能转换为电信号和光信号

6)差错检测

7)检测链接状态:检测物理链路是否处于链接状态

8)最大传输单元:一帧最多能传输多少数据

9)网络层地址协商:识别路由结点,mac地址(网卡上的,唯一16进制地址)

10)数据压缩协商:不经过任何有损数据的操作,对数据进行重复率删除

ppp协议的组成:

1)封装成帧的方法

2)链路控制协议LCP:保证链路是连通的,保证跟谁连,跟谁不连,还有mac地址(物理上的管理)

3)网络控制协议NCP:怎么从数据报文是给你的?所以还需要识别的进程(逻辑层面的管理)

ppp协议的帧格式:

1)各字段的意义

标志字段F仍为0x7F

地址字段A为0xFF,网络层所用

控制字段C为0x03

ppp有一个2个字节的协议字段

协议字段为0x0021时,ppp帧的信息子段就是ip数据报

协议字段为0xC021时,则是ppp链路控制数据

协议字段为0x8021时,则是网络控制数据

2)ppp协议采用字符填充法来保证透明传输(硬件实现)

出现0x7E自动转换为2字节序列:0x7D和0x5E

出现0x7D自动装完0x7D,0x5D

Assic码:7位2进制 128

前32个和最后一个都是控制字符

为区分控制字符和普通字符,在控制字符前面加上0x7D用来区分

3)零比特填充法:5个连续的1则填入一个0

除开开始和结束标志的0x7F,中间出现的0x7F出现5个连续的1就填充一个0,这样就能区分数据0x7f和结束标志0x7f:填充完毕之后,遇到5个连续的1,如果后面有0,那么他是数据0x7f,如果没有0,那么他是结束标志0x7f

数据链路层的两个子层:逻辑链路控制层LLC和媒体接入控制MAC(物理设备)

现在实际制造过程两层的概念很模糊

通信适配器:又叫网卡

网卡的重要功能:

1)进行串并转换(从传输层拿到的东西封装成帧在物理线路上进行传输)

2)对数据进行缓存(流量控制中的缓存存放地点)

3)在计算机的操作系统安装设备驱动程序

4)实现以太网协议(PPP协议)

CSMA/CD协议:避免数据链路层的数据“碰撞”影像数据准确性的协议

局域网广播发送方式:B发送一个数据,总线上的每一个工作的计算机都能检测到B发送的数据,总线上每个在工作的计算机都会检测B发送的数据,如果是发送给自己的就接收,如果不是就放弃

优点:

1)不需要先建立链接再发送数据,可以直接发送

2)不必对发送的数据帧进行编号,也不必确认重传(局域网默认通信状况非常好,不存在误差

CSMA/CD协议:载波监听多点接入/碰撞检测

1)多点接入:在总线上任意接入

2)载波监听:发送数据前先检测一下总线上是否有其他计算机在发送数据

3)碰撞检测:当总线上检测到两个电波,就认为发生了碰撞,现在不发送数据

检测出来发送碰撞之后,立即停止发送数据,等待随机时间后再发送

因为存在发送时延,虽然存在碰撞检测,但还是有可能会发生碰撞

碰撞时间是一个往返时间,不确定,这是2M网只有200k的原因

计算机网络(谢希仁 第七版) 数据链路层 个人笔记

争用期:一旦检测到碰撞,等待一定时间在发送,这个时间叫争用期或者碰撞窗口

经过争用期这段时间还没有检测到碰撞,那么这次发送不会发生碰撞

长度:51.2us(现用的)

所以发送一个数据后,只有等待一个争用期才能确定这个数据没有发生碰撞,完整到达了

二进制指数类型避退算法:确定碰撞后最多重传次数

强化碰撞:发送一条干扰信号,让发生了碰撞的事件让大家都知道,避免再次碰撞

因为物理层存在不同的传输方式(传输介质的不同),所以数据链路层需要弥补物理层的这些差异,给上层提高服务!!!

集线器:转发器,相当于一段总线,目的是接收有点失真的信号,修补一下,然后再发生出去,这样可以减少远距离传输的失真数据

以太网上的物理层工作器件

数据传输总时间分为四个部分:

1)发送时间:网卡一比特一比特的发送出去需要时间

2)传输时间:从网口出来到目的端的时间

3)传输时间中的等待时间:中间的转发器转法数据需要一个一个来

4)处理时间:比如冗余错误检测需要时间

以太网的信道利用率:

1)发送时间

2)传输时间

发送时间/(发送时间+传输时间)

因为以太网中存在碰撞所以发送时间和传输时间占的比重很大,所以算信道利用率的时候只算这两个

计算机网络(谢希仁 第七版) 数据链路层 个人笔记

解释一下:

以太网信道利用率S=发送成功时间/(Nr个等待时间+发送成功时间+确认传输成功信号时间)

计算机网络(谢希仁 第七版) 数据链路层 个人笔记

A:总发送成功的概率(总体)

P:每一次成功的概念(个体)

计算机网络(谢希仁 第七版) 数据链路层 个人笔记

S最后只和参数a有关

参数a:a的意思参考前面

计算机网络(谢希仁 第七版) 数据链路层 个人笔记

所以a要小的话,则帧长L必须尽可能大

以太层的MAC地址:局域网中,硬件地址又叫物理地址(MAC地址)

避免物理设备识别和重名(48比特,6个字节)

MAC构成:

前3个字节:机构唯一标识符(厂商)

后三个字节:厂商自己决定的(生产日期,型号等)

正常情况下,一个物理设备的MAC地址是全球唯一的,但路由器除外,因为它又两个网卡,所以又两个硬件地址

MAC层拿到有一个MAC帧之后,硬件检验一下是我的,就收下,不是我的,就是不接收,是我的又分为了三种情况:

1)单播帧:明确知道该帧是发给谁的,一对一

2)广播帧:拿到帧之后,不确定是发给谁的,只确定是发给我这总线上的某一个的,所以对该帧进行广播

3)多播帧:通过集线器往其他总线上再广播一次

MAC帧格式的两种标准格式:

V2标准(书本以该为例),802.3标准

MAC地址:目的地址(6个字节)+源地址(6个字节)+类型(在数据链路层支持哪些协议,2个字节)+数据(最少64字节,小于则填充)+帧检测冗余序列(3个字节)

前8个字节+MAC地址

前8个字节中的7个字节:用来进行MAC帧的比特同步,准备工作

前8个字节中的最后一个字节:正式开始接收MAC层的标志,因为在同步过程中不是发一个就接收一个的,可能会漏掉,所以需要标识符

接收MAC帧的检验:

1)帧的长度应该是整数个字节

2)冗余检验序列FCS有差错

3)数据段长度不在46-1500之间(过小或者过大)

4)有效帧长位64-1518之间

5)无差错传输(出差错就丢弃)

帧间最小时间间隔:确认这个帧没有发送碰撞或者发生了碰撞(9.6us)

一个站在检测到总线开始空闲之后,还要等待9.6us才能再次发送数据

物理层扩展以太网:集线器

多层集线器叠加:

计算机网络(谢希仁 第七版) 数据链路层 个人笔记

使用集线器在物理层扩展以太网:

优点:

1.扩大局域网的覆盖地理范围

2.扩大了碰撞域

缺点:

1.虽然碰撞域大了,单总的吞吐率并未提高

2.不能连接不同传输速率的网线

网桥:工作在数据链路层,也是扩展以太网

特点:

具有过滤帧的功能(只要拿到帧解析出来以后就知道往哪里送,发送给谁

网桥替代集线器,网桥的一个端口出来的线就相当于一个总线,网桥表记录站地址和端口,即该数据从那个机器来的,通过我的那个端口进来的

比集线器更节约资源,带有目的性的传输,而不是集线器的盲目传输

网桥带来的优点:

1. 过滤了通信量

计算机网络(谢希仁 第七版) 数据链路层 个人笔记

原因说明:1和3的通信不影响4 5 6的通信,他们不在一个碰撞域上,如果使用的是集线器,那么他们就是在同一个集线器上的

2. 扩大了物理范围(各地的连接,网状)

3. 提高了可靠性

计算机网络(谢希仁 第七版) 数据链路层 个人笔记

原因说明:2,3之间断了,不影响4 5 6之间的通信

4)可连接不同速率的的网

缺点:

1)储存转法增加了时延(站-端口表)

2)MAC子层没有流量控制功能

3)具有不同MAC子层的网段桥接在一起时延更大(光信号,点信号)

4)只适用于用户数不太多的局域网(不超过几百个),否则会因为过多的广播信息产生网络堵塞,产生广播风暴(因为用户多导致转法表太大!!)

网桥按照以下算法处理收到的帧和建立转发表

1)从端口x收到无差错的帧(有差错就丢弃了),然后在转法表中查找此帧的目的站的MAC地址

2)

查到了:查出到此目的地的MAC地址应该走的端口号,如果该端口号就是x,那么此帧不要再从网桥发出去了,如果不是x,就从该端口号把此帧转发出去

没有查到:向网桥除x以外的所有端口转发此帧

2)如果源站不在转发表中,则将源站的MAC地址加入转发表且登记该帧进入网桥的端口号

3)如果源站在表中则更新计时器,否则不更新

网桥转发表登记的信息:

站地址:收到帧的源MAC地址

端口:收到的帧进入网桥的端口号

时间:收到的帧进入该网桥的时间

网桥转发表计时器的作用:网桥使用了支撑树算法,避免网桥转发的帧在网络中不停的兜圈子!!

看图即可明白:

计算机网络(谢希仁 第七版) 数据链路层 个人笔记

支撑树算法的核心思想:

每隔几秒要每一个网桥广播其标识号和它所知道的其他所有在网上的网桥

选择一个网桥作为支撑树的一个跟,然后以最短路径为依据,找到树上的每一个结点,当局域网中网桥数量很多时,可以划分成多给支撑树

(个人现在的理解是避免产生环)

交换机

本质:工作在数据链路层的集线器(集线器是工作在物理层的),功能和网桥的功能类似

交换机的特点:

1)每个端口都与主机相连,工作在全双工方式

2)连通的端口对,使得端口对的主机能像独占网线一样,进行没有碰撞的数据传输

3)交换速率高

计算机网络(谢希仁 第七版) 数据链路层 个人笔记

上面的局域网中还存在集线器的原因:交换机太贵了,小地方没有必要用

虚拟局域网VLAN(逻辑分组)

计算机网络(谢希仁 第七版) 数据链路层 个人笔记

举例:A4发送信息,先是该楼层的交换机收到,解析一下,发现A4属于VLAN组1,所以查找VLAN1组员的端口,如果该楼层没有VLAN组1的成员的话,就把信息给整栋楼的总交换机,然后整栋楼的总交换机,查找VLAN组1的成员所在楼层,将信息给该楼层的交换机,然后改楼层的交换机发给组员(其实就是一种逻辑的分组,关键是解析你是哪个VLAN组的)

虚拟局域网协议允许在以太网帧格式中插入一个4字节的标志符,叫做VLAN标记,用来指明发送改帧的工作站属于哪一个虚拟局域网

有交换机的以太网在全双工方式下工作不会存在碰撞(以太网的功能特性),属于不使用CSMA/CD碰撞协议

吉比特以太网在半双工下,必须进行哦碰撞检测,由于数据率提高了,为保证时延带宽积变小,必须减小电缆长度或者增加帧的长度

增加帧长度的方法就叫载波延申(不足512字节,填充特殊字符)

分组突发:当很多的短帧要发送的时候,你要对他们都进行载波延申,一个个的都填充字符就很麻烦,你只要将这些短帧间留有最小的间隔,将他们当作填充了特殊字符以后的帧发送(实际上没有填充特殊字符,都是有用的信息),直到大于限定帧长度(1500字节)或者稍多一点

全双工下不使用载波延申和分组突发,因为不存在碰撞


推荐阅读
  • 网站访问全流程解析
    本文详细介绍了从用户在浏览器中输入一个域名(如www.yy.com)到页面完全展示的整个过程,包括DNS解析、TCP连接、请求响应等多个步骤。 ... [详细]
  • 考前准备方面,我的考试时间安排在上午11点至12点,只需提前20分钟到达考场的接待休息区即可。由于我居住在福田区,交通便利,可以选择多种方式前往考场。为了确保顺利通过考试,我建议考生提前熟悉考试流程和环境,并合理规划出行时间,以保持良好的心态和状态。此外,考前复习应注重理论与实践相结合,多做模拟题,加强对重点知识点的理解和掌握。 ... [详细]
  • 本文回顾了作者初次接触Unicode编码时的经历,并详细探讨了ASCII、ANSI、GB2312、UNICODE以及UTF-8和UTF-16编码的区别和应用场景。通过实例分析,帮助读者更好地理解和使用这些编码。 ... [详细]
  • 本章介绍了TCP/IP协议族中的链路层,其主要功能是为IP模块发送和接收IP数据报。链路层还支持一些辅助性协议,如ARP。此外,本文详细探讨了不同类型的链路层技术及其应用。 ... [详细]
  • 秒建一个后台管理系统?用这5个开源免费的Java项目就够了
    秒建一个后台管理系统?用这5个开源免费的Java项目就够了 ... [详细]
  • 本文深入探讨了NoSQL数据库的四大主要类型:键值对存储、文档存储、列式存储和图数据库。NoSQL(Not Only SQL)是指一系列非关系型数据库系统,它们不依赖于固定模式的数据存储方式,能够灵活处理大规模、高并发的数据需求。键值对存储适用于简单的数据结构;文档存储支持复杂的数据对象;列式存储优化了大数据量的读写性能;而图数据库则擅长处理复杂的关系网络。每种类型的NoSQL数据库都有其独特的优势和应用场景,本文将详细分析它们的特点及应用实例。 ... [详细]
  • Web开发框架概览:Java与JavaScript技术及框架综述
    Web开发涉及服务器端和客户端的协同工作。在服务器端,Java是一种优秀的编程语言,适用于构建各种功能模块,如通过Servlet实现特定服务。客户端则主要依赖HTML进行内容展示,同时借助JavaScript增强交互性和动态效果。此外,现代Web开发还广泛使用各种框架和库,如Spring Boot、React和Vue.js,以提高开发效率和应用性能。 ... [详细]
  • 负载均衡基础概念与技术解析
    随着互联网应用的不断扩展,用户流量激增,业务复杂度显著提升,单一服务器已难以应对日益增长的负载需求。负载均衡技术应运而生,通过将请求合理分配到多个服务器,有效提高系统的可用性和响应速度。本文将深入探讨负载均衡的基本概念和技术原理,分析其在现代互联网架构中的重要性及应用场景。 ... [详细]
  • 本文介绍了如何通过路由汇总和无类域间路由(CIDR)技术来优化路由表,减少路由条目数量,提高网络效率。具体案例展示了路由汇总的实现方法及其对网络性能的影响。 ... [详细]
  • 解决Bootstrap DataTable Ajax请求重复问题
    在最近的一个项目中,我们使用了JQuery DataTable进行数据展示,虽然使用起来非常方便,但在测试过程中发现了一个问题:当查询条件改变时,有时查询结果的数据不正确。通过FireBug调试发现,点击搜索按钮时,会发送两次Ajax请求,一次是原条件的请求,一次是新条件的请求。 ... [详细]
  • 阿里巴巴终面技术挑战:如何利用 UDP 实现 TCP 功能?
    在阿里巴巴的技术面试中,技术总监曾提出一道关于如何利用 UDP 实现 TCP 功能的问题。当时回答得不够理想,因此事后进行了详细总结。通过与总监的进一步交流,了解到这是一道常见的阿里面试题。面试官的主要目的是考察应聘者对 UDP 和 TCP 在原理上的差异的理解,以及如何通过 UDP 实现类似 TCP 的可靠传输机制。 ... [详细]
  • 在《Linux高性能服务器编程》一书中,第3.2节深入探讨了TCP报头的结构与功能。TCP报头是每个TCP数据段中不可或缺的部分,它不仅包含了源端口和目的端口的信息,还负责管理TCP连接的状态和控制。本节内容详尽地解析了TCP报头的各项字段及其作用,为读者提供了深入理解TCP协议的基础。 ... [详细]
  • 该大学网站采用PHP和MySQL技术,在校内可免费访问某些外部收费资料数据库。为了方便学生校外访问,建议通过学校账号登录实现免费访问。具体方案可包括利用学校服务器作为代理,结合身份验证机制,确保合法用户在校外也能享受免费资源。 ... [详细]
  • Java Socket 关键参数详解与优化建议
    Java Socket 的 API 虽然被广泛使用,但其关键参数的用途却鲜为人知。本文详细解析了 Java Socket 中的重要参数,如 backlog 参数,它用于控制服务器等待连接请求的队列长度。此外,还探讨了其他参数如 SO_TIMEOUT、SO_REUSEADDR 等的配置方法及其对性能的影响,并提供了优化建议,帮助开发者提升网络通信的稳定性和效率。 ... [详细]
  • 本文详细介绍了在Linux系统上编译安装MySQL 5.5源码的步骤。首先,通过Yum安装必要的依赖软件包,如GCC、GCC-C++等,确保编译环境的完备。接着,下载并解压MySQL 5.5的源码包,配置编译选项,进行编译和安装。最后,完成安装后,进行基本的配置和启动测试,确保MySQL服务正常运行。 ... [详细]
author-avatar
lucky燕子加加加
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有