三、TCP/IP五层——数据链路层中的重要概念
*1、数据链路层使用的信道的类型:点对点信道 和广播信道
*2、网络层实现的是数据在不同网络之间的跳转传输,也就是路由器负责的是对收到的分组进行转发到其他路由组成的网络中
3*数据链路层的三个基本问题:
3.1、封装成帧:
3.1.1、帧是数据链路层的数据传送单元
3.1.2、帧的首部和尾部是为了帧定界
3.1.3、帧的数据部分长度的最大值是MTU(Maximum Transfer Unit,这个值存在与网络适配器的ROM中,当然路由器中也有,网卡中的默认值为1500,去掉PPPoE的头部,实际上是1492字节)
3.1.4、在可打印的ASCII码组成的文本(键盘输入的文本)中,帧的定界符是SOH(Start Of Header)和EOT(End Of Transmission),SOH和EOT的16进制编码为0x01和0x04.特别注意,SOH或EOT是一个字符,而非三个
3.2、透明传输:控制符在帧的数据部分是透明的
3.2.1、字节/字符填充:在非ASCII码文件中,很容就出现和SOH和EOT等同的二进制数,解决方法是在定界符前加 ESC转义符(16进 制为0x1B),如果本身内容就是0x1B,同理在其前面加ESC转义符
3.3、差错检测:
3.3.1、循环冗余检验(Cyclic Redundancy Check):
a、将数据划分成k位为一组的比特流(其实就是一个分组或包的数据长度,我的理解是,网络中传输的最小数据单元是packet,而分组需要进过数据链路层的加工,所以,帧的数据长度必然与分组的数据长度一致)
b、双方实现约定一个数n,在k位一组的数后添加n个0,使其变成k+n位数作为被除数
c、设除数为P=n+1;
d、两数相处,得到余数R,将余数R作为FCS(Frame Check Sequence)添加到帧尾部
e、当收到数据时,将k+n位再加上余数R后数据除以P=n+1,如果为0,则表示传输无差错,提交给网络 层,否则,丢弃数据
3.3.2、网络适配器是作用物理层和数据链路层的设备,并且网络适配器是有处理器和存储器的。再就是上述过程 是适配器自行执行的,只有当数据无差错时,才会通过中断告知CPU,将数据提交到上层进行处理
3.3.3、上述的是比特差错,CRC也仅限于比特差错检测,还有一种传输差错:帧丢失,帧重复,帧失序
3.3.4、尽管有CRC这种检测存在,但仍然不算是可靠传输,所有可靠传输的操作都在传输层进行——TCP超时重传,流量控制
*4、ASCII码是7位编码,128个字符,期中有95个可打印的字符,33个不可打印的字符,也就是说键盘上所能输出的95个字符刚好与之对应
*5、在TCP五层中的IP数据报不一定是二进制,只有当到了物理层才转化成比特流,这与笔记一中记录的有所矛盾
*6、点对点的链路协议——PPP协议(Point to Point Protocol)。ISP是因特网边缘主机端连接到因特网核心的接入网,而PPP就是计算机和ISP进行通信时所使用的数据链路层协议。PPP是IETF在1992年制定的协议
*7、PPP协议应满足的需求:简单、封装成帧,透明传输、差错检测、多种网络协议,多种类型链路,检测连接状态,最大传送单元、网络层地址协商、数据压缩协商
7.1、PPP的三个组成部分:帧中的数据部分、用来建立、配置和测试数据链路连接的链路控制协议LCP(Link ControlProtocol)、一套网络控制协议NCP(Network Control Protocol)
其中F为定界符,A和C都无作用,协议用来指明是什么类型的数据:0x0021是IP数据报,0xC021是PPP链路控制协议LCP的数据,0x8021表示网络层的控制数据
7.2、PPP异步传输时,将转义符定义为0x7E;若在数据中遇到0x7E这把它变成2字节的0x7D,0x5E;若数据中出现0x7D,则把他变成2字节的0x7D,0x5D;若数据中出现ASCII码的控制字符(即数值小于0x20的字符),则在前面加一个0x7D
7.3、PPP同步传输时(一连串的比特连续传输,异步是逐个字符传输),使用零比特填充,即遇到连续的5个1,就在后面加一个0
7.4、PPP协议工作的过程:当连入ISP后,建立一条从PC到ISP的物理连接,然后想ISP发送一系列的LCP分组,建立LCP连接,然后再发送NCP连接,给PC分配一个临时的IP地址;当使用完后,NCP释放IP,LCP释放链路,最后释放物理层连接。需要注意的时,这整个过程的开始和结束,物理层的连接都是不存在的,当PC通过调制解调器呼叫路由器时,才喀什建立物理层的连接,然后建立LCP协商,设置最大帧长,所使用的鉴别协议,以及不使用A和C字段。
*8、广播的链路协议——CSMA/CD(Carrier Sense Multiple Access with Collection Detection)的过程:
准备发送:从网络层获取一个packet,加上帧的封装,放入适配器缓存,并开始检测信道
检测信道:若检测到信道忙,则继续不停检测,否则,如果9.6us内信道一直存于空闲,就发送帧
载波监听:就是边发送边监听,但是,发送过程中,如果数据正在信道中和其他端发送的数据发生碰撞,此时,碰撞两方是都不能接收到碰撞信号的,必须等数据的第一比特到达端的时候,才能终止,而终止后还需要发送32比特或48比特的干扰信 号。而后,在争用时间2t(512比特,51.2us)的r(指数退避算法)倍后,再次检测信道发送。
如果发送过程中并没有发生碰撞,则在发送结束9.6us后再次发送下一个帧(9.6us用来清楚缓存)
指数退避算法:即r是0到2的n(次数)次方-1之间的一个整数,并且如果2的n次方-1大于10,就让r在0到10之间的整数中取一随机数,当次数达到16次,就停止发送,向上报错
*9、PPP协议是全双工的,而CSMA/CD是单工的
*10、网络适配器的功能是:数据链路层数据的的封装和解封(添加帧首部和尾部)、对链路的管理(CSMA/CD的实现——进行数据串行传输和并行传输的转换)、物理层中对传输的数据的编码和解码(本来有个疑问,这个功能不是调制解调器的吗?后来发现在现在的网络中,电路传输已经很少了,那么对于数字信号转模拟信号的的实现就没有必要存在了,因此,也就没有真正意义上的调制解调器了,现在我们所听到的拨号器调制解调器错误都指的是软件,并且功能并不是模数转换了,而数据的编码依然是存在的,例如以太网的数据都是曼切斯特编码的。所以,才把这部分的功能归并到网络适配器上)
*11、电磁波在1km电缆的传播时延约为5us
*12、MAC帧判定无效:
帧的长度不是整数个字节
收到的帧检验序列FCS查出有错(CRC比特差错检测)
收到的有效帧帧字长不再64~1518字节之间
*13、网桥是依靠转发表来转发MAC帧的(路由器用路由表根据IP转发分组),网桥隔绝了冲突域
*14、交换机是多接口网桥
*15、网络适配器中有MAC地址,MTU值
*16、集线器(属于转发器)——物理层、交换机/网桥——数据链路层、路由器——网络层、网络适配器——数据链路层和物理层、网关——网络层以上
*17、链路是一个节点到相邻节点的一段物理线路,数据链路是在链路的基础上增加了一些必要的硬件(网络适配器)和软件(协议的实现)
*18、PPPoE是为宽带上网的主机使用的链路层协议
*19、共享信道资源的方式有两种:一是静态划分信道(各种复用技术,频分,时分,波分,CDMA码分),二是动态操控接入控制,又称多点接入