TCP/IP具体解释学习笔记——数据链路层(2)
我们姑且觉得这两个部分是与物理层相关的一些细节,不用太关心,主要来看MPDU,它类似于以太网帧格式。可是又加入了一些别的东西。
MPDU的開始部分是帧控制字 (Frame Control Word),占领两个bit。用来表示帧类型。帧类型一共同拥有三种,管理帧(management frames),控制帧(control frames)和数据帧(data frames)。
当进入节能模式时,在Frame Control Word中相应位将置位,然后发送出去。与之连接的AP接收到这些置位的数据帧之后,会将原本应该发送到该设备的帧数据先存到缓存中。等到设备须要时再发送给它。
我们这里主要介绍DCF(distributed coordinating function)。DCF是一种基于竞争的媒介訪问控制协议,与CSMA/CD类似,设备在发送数据之前检測媒介是否空暇。假设空暇则发送数据。否则等待一段时间知道检測到媒介是空暇为止。不同的地方在于,DCF为不同的设备或者不同类型的帧设置了不同的优先级。通常情况下,设备在检測到媒介空暇,准备发送数据之前。会等待一段时间(distributed
inter-frame space or DIFS),让更高优先级的设备接入信道。另外还有个不同的地方在于,DCF有两种检測冲突的方法,物理的方法(physical)和虚拟的方法(virtual carrier sense)。
每一个设备都会在本地生成一个NAV(Network Allocation Vector)用来保存当前媒介中正在传输的数据须要多长时间才干传输完。以此决定自己尝试数据传输的时间。假设检測到的Duration值大于本地NAV值。显然要用这个大的值对其进行更新。当然,随着时间的推移,NAV值要慢慢减小,这表示当前数据传输里目的地越来越近。但仅仅要非0。则该数据仍然占领传输媒介。当收到ACK确认信号时,说明已经传输完毕。这个时候将NAV置0.
slot time是几十微秒的数量级,随机的整数值在一个固定的范围之内。
这和我们之前讨论的CSMA/CD中。当检測到冲突后。等待一段随机的时间再尝试发送有点类似。这个过程(产生随机等待时间的过程),称为backoff procedure.
相同,RTS和CTS也有相似的性质。
这样发送者就知道哪些数据被正确接收。而哪些数据没有。
Code字段表示操作类型。标识该帧是请求帧还是应答帧等等。Lenghth字段表示LCP
packet的长度,单位是字节。须要注意的是,该字段是有LCP packet提供的,普通的PPP协议并不提供该字段。
转义的意思就是将原本的字符内容变为转义字符(0x7D)加上原字符与(0x20)作异或的结果。比方0x13的转义字符是0x7D33.这样做是由于某些控制字符可能会对硬件造成某些特殊的影响,转义之后,这样的影响将消失。默认情况下,全部的ASCII控制字符(值小于0x20)都要进行转义。
在协商过程中,通过配置信息。PPP能够将该功能开启,这样发送端和接收端能够在规定的时间内周期性的交换LQR信息。LQRs表示传输质量的相关參数,包含:magic number,发送和接收的帧数量和大小。接收到的错误帧数量。丢弃帧的数量以及交换的LQR数据总数量。LQRs信息的交换是周期性的,这个周期是能够手动设置的。
当LQRs的值没有达到某个要求时。我们还能够设置终止连接
所以通常在每一个MP帧中放置一个2到4字节的序列头字段,然后远程的MP接收者负责依照顺序又一次组装数据。
这样使得一个捆绑依据实际情况(比方网络是否拥塞)动态的加入或者删除链路。使得虚拟链路更加灵活。
一个传给环回接口的IP数据报不能再不论什么网络上出现。可能在我们的想象中,一旦传输层检測到目的端地址是环回地址时,应该能够省略部分传输层和全部网络层的逻辑操作。
可是大多数的产品还是照样完毕传输层和网络层的全部过程。仅仅是当IP数据报离开网络层时把它返回给自己。
看上去用传输层和IP层的方法来处理环回数据似乎效率不高,但它简化了设计,由于环回接口能够被看做是网络层以下的还有一个链路层。网络层把一份数据报传送给环回接口,就像传给其它链路层一样,仅仅只是环回接口把它返回到IP的输入队列中。
比方以太网的数据帧最大不超过1500字节,这个数值就叫做MTU。最大传输单元,不同类型的网络都有一个MTU。假设IP层有一个数据要传,并且数据的长度比链路层的MTU大,那么IP层就须要进行分片。把数据报分成若干片,这样每一片都小于MTU。在PPP中的MTU并不是指的是网络媒体的物理特性,相反,它是一个逻辑限制,目的是为交互使用提供足够快的对应时间。
可是假设两台主机之间的通信要通过多个网络,那么每一个网络的链路层就可能有不同的MTU。这时起决定作用的是两台通信主机路径中最小的MTU,称之为路径MTU。须要注意的是。两台主机之间的路径MTU不一定是个常数。
它取决于当时所选择的路由。而选路不一定是对称的。因此路径MTU在两个方向上不一定是一致的。后面提到IP层和传输层时,还会介绍MTU发现机制。
TCP/IP具体解释学习笔记——数据链路层(2)的更多相关文章
- TCP/IP具体解释学习笔记——地址解析协议ARP
一 概述 我们知道,IP协议是用来在不同的物理网络之间数据传输的.要在不同的网络之间数据传输,至少须要将IP协议所用的地址转换成特定网络所使用的物理地址. 一般来说.就是将IPv4地址转换为mac地址 ...
- TCP/IP具体解释学习笔记--TCP的超时与重传
1.基本概念 TCP之所以能够安全的将数据在传输中的安全性,是因为它每次给对方发送数据,都会等待对方给个确认,当长时间收不到这个确认,发送端就会重发这个数据. 2.超时时间的測量 要測超时时间,TCP ...
- TCP/IP具体解释学习笔记--TCP数据流
1.TCP的交互数据流 (1)基本概念 所谓交互数据流,其对TCP而言,就是他们所产生的大多数的TCP报文段中所包括的数据不超过10个字节.比如聊天等telnet的软件的TCP数据流就属于TCP交互数 ...
- TCP/IP具体解释学习笔记--TCP的坚持和保活定时器
TCP的坚持定时器 1.基本概念 TCP的接收方指名希望从发送方接收的数据字节(窗体大小)来进行流量控制,假设窗体大小为0.那么放送方就会阻止发送数据,直到接收方发来一个已跟新窗体大小的ACK为止,那 ...
- TCP/IP详解学习笔记 这位仁兄写得太好了
TCP/IP详解学习笔记(1)-基本概念 为什么会有TCP/IP协议 在世界上各地,各种各样的电脑运行着各自不同的操作系统为大家服务,这些电脑在表达同一种信息的时候所使用的方法是千差万别.就好像圣 ...
- TCP/IP详解学习笔记 这位仁兄写得太好了.(转载)
TCP/IP详解学习笔记 这位仁兄写得太好了 TCP/IP详解学习笔记 这位仁兄写得太好了. http://blog.csdn.net/goodboy1881/category/20444 ...
- 【转】TCP/IP详解学习笔记(二)
TCP/IP详解学习笔记(5)-IP选路,动态选路,和一些细节 1.静态IP选路 1.1.一个简单的路由表 选路是IP层最重要的一个功能之一.前面的部分已经简单的讲过路由器是通过何种规则来根据IP数据 ...
- 【转】TCP/IP详解学习笔记(一)
TCP/IP详解学习笔记 这位仁兄写得太好了. http://blog.csdn.net/goodboy1881/category/204448.aspx TCP/IP详解学习笔记(13)-T ...
- TCP/IP详解学习笔记
TCP/IP详解学习笔记(1)-基本概念 TCP/IP详解学习笔记(2)-数据链路层 TCP/IP详解学习笔记(3)-IP协议,ARP协议,RARP协议 TCP/IP详解学习笔记(4)-ICMP协议, ...
随机推荐
- CAD绘制固定圆形云线标注(网页吧)
js中实现代码说明: function DoCloudCircleCommentFix() { var comment = mxOcx.NewEntity("IMxDrawComment&q ...
- 进程的互斥运行:CreateMutex函数实现只运行一个程序实例
HANDLE hMutex=CreateMutex(NULL,TRUE,"HDZBUkeyDoctorTool"); if(hMutex) { if(ERROR_ALREADY_E ...
- oracle分配权限 学习笔记--转载
在全局数据库ORCL下创建一个用户首先在开始-->运行——>sqlplus,然后输入 sys/change_on_install as sysdba 以sys权限登陆进去 然后可以进行操作 ...
- jquery腾讯换肤的一些技术实现
//检查cookie if($.cookie("skinID")){ $("#cssSkin").attr("href","/st ...
- 运用 node + express + http-proxy-middleware 实现前端代理跨域的 详细实例哦
一.你需要准备的知识储备 运用node的包管理工具npm 安装插件.中间件的基本知识: 2.express框架的一些基础知识,知道如何建立一个小的服务器:晓得如何快速的搭建一个express框架小应用 ...
- [Python3网络爬虫开发实战] 7.3-Splash负载均衡配置
用Splash做页面抓取时,如果爬取的量非常大,任务非常多,用一个Splash服务来处理的话,未免压力太大了,此时可以考虑搭建一个负载均衡器来把压力分散到各个服务器上.这相当于多台机器多个服务共同参与 ...
- GROUP函数
GROUP_ID 首先我们看看官方的解释: 大意是GROUP_ID用于区分相同分组标准的分组统计结果. 解释起来比较抽象,下面我们来看看具体的案例. 例1:单一分组 SQL> select gr ...
- Python之目录结构
Python之目录结构 项目名project_name project_name -|--bin (可执行文件) --|--start.py import os,sys #设置环境变量 BASE_DI ...
- Linux笔记:定时任务和文件操作
查看定时任务 crontab -l 注册定时任务 crontab -e然后就像 vim 一样编辑自己的定时任务.如: * * * * * . /home/hadoop/timer/check_job. ...
- ORACLE RAC with NFS install
第一步:建立第一台节点机1).拷贝一台虚拟机做第一个节点,增加host-only的网卡 kudzu工具识别网卡(两都host-only是可以的).然后以下步骤修改相应的配置.etc/hosts内容如下 ...