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协议, ...
随机推荐
- android ViewPager实现的轮播图广告自定义视图,网络获取图片和数据
public class SlideShowAdView extends FrameLayout { //轮播图图片数量 private static int IMAGE_COUNT = 3; ...
- ios摇一摇功能
在 UIResponder中存在这么一套方法 - (void)motionBegan:(UIEventSubtype)motion withEvent:(UIEvent *)event __OSX_A ...
- 原生j获取元素的几种方法
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- 原生javascript实现call、apply和bind的方法
var context = {id: 12}; function fun (name, age) { console.log(this.id, name, age) } bind bind() 方法会 ...
- IO之转换流举例
import java.io.*; public class TestTransForm1 { public static void main(String[] args) { try { Outpu ...
- 安装lnmp
一.yum安装php 1.更新更新yum源:rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rp ...
- 第二十节:Scrapy爬虫框架之使用Pipeline存储
在上两节当中,我们爬取了360图片,但是我们需要将图片下载下来,这将如何下载和存储呢? 下边叙述一下三种情况:1.将图片下载后存储到MongoDB数据库:2.将图片下载后存储在MySQL数据库:3.将 ...
- python 几种点积运算方式效率分析
本系列文章由 @yhl_leo 出品,转载请注明出处. 文章链接: http://blog.csdn.net/yhl_leo/article/details/51793984 本文列举出几种pytho ...
- sed和awk的常用实例
一.文本间隔 1.在每一行后面增加一空行 sed G guo.sh awk '{printf("%s\n\n",$0 ) }' 2.将文件中原来的空行删掉,并在在每一行后边增加一空 ...
- idea导入(import)项目和打开(open)项目的区别
前言: 每次接手老项目,都得从git或svn下载下来,但是如果之前的项目不是用idea写的怎么办,可是你又习惯啦idea,那你必须把项目在idea上跑起来,那是用import还是用open呢,如何抉择 ...