计算机网络
强烈推荐网课地址:https://www.bilibili.com/video/BV1c4411d7jb
计算机网络体系结构:
网络接口层并没规定什么标准,主要是为了能兼容多种网络接口,实质上TCP/IP结构可认为只有网际层,运输层和应用层三层
- 应用层:HTTP,SMTP…DNS…RTP
- 运输层:TCP ,UDP
- 网际层:IP
IP协议互连不同的网络接口,也为各种网络应用提供服务
原理体系结构划分:
应用进程基于网络的通信:
请求的传递需要经过层层封装
数据链路层:
数据链路层以帧为单位传输和处理数据
封装成帧:
指数据链路层给上层交付的协议数据单元添加帧头和帧尾使之成为帧
帧头和帧尾的作用之一就是帧定界
数据链路层需要达到的理想效果是透明传输:即对上层交付的数据没有任何限制,无论是什么格式都能完成任务
- 面向字节的物理链路使用字节填充的方法(如插入转义字符,占用一个字节。十进制值为27)
- 面向比特的物理链路使用比特填充的方法(例如每5个连续的1后面添加一个比特0)
想提高传输效率帧的数据部分应该尽可能长
差错检测:
使用差错检测码来检测数据在传输过程中是否产生了比特差错
奇偶检验漏检率高
循环冗余校验CRC:
算法要求生成多项式必须包含最低次项 检错码只能表明出现差错,无法定位错误
可靠传输:
若提供不可靠服务,仅丢弃有误码的帧,其他什么都不做
提供的是可靠服务,则要实现发送了什么,就一定能接收到什么
除了比特差错,传输差错还包括分组丢失,分组失序和分组重复,这些一般不出现在数据链路层,所以可靠传输服务可由各层选择是否实现
- TCP提供面向连接的可靠传输服务
- UDP提供无连接不可靠传输服务
- IP提供无连接不可靠传输服务
停止等待协议SW(Stop-and-Wait):
发送方发送完一个数据分组后停止发送,等待接收方的确认分组或否认分组,若是否认分组则需要重传
但接收方收不到数据分组,就不会发送ACK或NAK。如果不采取其他措施,发送方就会一直处于等待接收方ACK或NAK的状态。
为解决该问题,可以在发送方发送完一个数据分组时,启动一个超时计时器。若到了超时计时器所设置的重传时间而发送方仍收不到接收方的任何ACK或NAK,则重传原来的数据分组,这就叫做超时重传。
一般可将重传时间选为略大于“从发送方到接收方的平均往返时间”
除了数据分组可能丢失,接收方发送的确认分组也可能丢失,那么就会引起发送方的超时重传从而导致分组重复
为避免分组重复这种传输错误,必须给每个分组带上序号。
对于停止-等待协议,由于每发送一个数据分组就停止等待,只要保证每发送一个新的数据分组,其发送序号与上次发送的数据分组的序号不同就可以了,因此用一个比特来编号就可以了。同理,接收方的确认分组也需要编号
停止等待协议信道利用率很低
回退N帧协议GBN(Go-Back-N):
采用n个比特位给分组编号,发送方需要维护一个发送窗口。接收方的接收窗口值固定为1。
**累计确认:**接收方不一定要对收到的数据分组逐个发送确认,而是可以在收到几个数据分组后(由具体实现决定),对按序到达的最后一个数据分组发送确认。ACKn表示序号为n及以前的所有数据分组都已正确接收。
回退N帧协议在流水线传输的基础上利用发送窗回来限制发送方连续发送数据分组的数量,是一种连续ARQ协议。在协议的工作过程中发送窗回和接收窗口不断向前滑动,因此这类协议叉称为滑动窗回协议。
由于回退N帧协议的特性,当通信线路质量不好时,其信道利用率并不比停止-等待协议高。
回退N帧协议的接收窗口尺寸WR只能等于1,因此接收方只能按序接收正确到达的数据分组。一个数据分组的误码就会导致其后续多个数据分组不能被接收方按序接收而丢弃(尽管它们无乱序和误码)。这必然会造成发送方对这些数据分组的超时重传,显然这是对通信资源的极大浪费。
选择重传协议SR(Select Request):
为了进一步提高性能,可设法只重传出现误码的数据分组。因此接收窗口的尺寸WR不应再等于1(而应大于1),以便接收方先收下失序到达但无误码并且序号落在接收窗口内的那些数据分组,等到所缺分组收齐后再一并送交上层。这就是选择重传协议。
**注意:**选择重传协议为了使发送方仅重传出现差错的分组,接收方不能再采用累积确认,而需要对每个正确接收到的数据分组进行逐一确认!
否则无法分辨新,旧数据分组
点对点协议PPP:
PPP协议为在点对点链路传输各种协议数据报提供了一个标准方法,主要由以下三部分构成:
- 对各种协议数据报的封装方法(封装成帧)
- 链路控制协议LCP,用于建立、配置以及测试数据链路的连接
- 一套网络控制协议NCPs其中的每一个协议支持不同的网络层协议
点对点协议PPP的帧格式:
使用PPP协议的数据链路层不提供可靠服务
MAC(Medium Access Control)地址:
- 媒体接入控制:协调多个发送和接收站点对一个共享传输媒体的占用
使用点对点信道的数据链路层不需要使用地址,因为只有2台主机。但在使用广播信道的数据链路层中,必须使用地址来区分各主机,每个主机都必须有一个唯一的标识,即一个数据链路层地址;
在每个主机发送的帧中必须携带标识发送主机和接收主机的地址。由于这类地址是用于媒体接入控制MAC(Media Access Control),因此这类地址被称为MAC地址
-
MAC地址一般被固化在网卡(网络适配器)的电可擦可编程只读存储器EEPROM中,因此MAC地址也被称为硬件地址或物理地址,但MAC地址不属于物理层!
-
一般情况下,用户主机会包含两个网络适配器:有线局域网适配器(有线网卡)和无线局域网适配器(无线网卡)。每个网络适配器都有一个全球唯一的MAC地址。而交换机和路由器往往拥有更多的网络接口,所以会拥有更多的MAC地址。综上所述,严格来说,MAC地址是对网络上各接口的唯一标识,而不是对网络上各设备的唯一标识。
MAC地址格式:
共6字节,一般将每4个一节以一个16进制数表示,即以12个16进制符号表示
- 单播MAC地址:只与一个目标主机地址匹配,只有一个主机能接收
- 多播MAC地址:与多个目标主机地址匹配,所有多播组包含该地址的主机可以接收
- 广播MAC地址:与该网络中的所有主机地址都匹配,任意主机都可接收
IP地址:
IP地址是因特网上的主机和路由器所使用的地址,用于表示两部分信息
- 网络编号:标识因特网上数以百万计的网络
- 主机编号:标识同一网络上不同的主机(或路由器接口)
在数据包转发过程中,源IP地址和目的IP地址保持不变,源MAC地址和目的MAC地址随逐个链路(或逐个网络)改变
地址解析协议ARP:
如何通过IP地址获得MAC地址:
-
每一个主机都有ARP高速缓存表,若在表中没有查到目标IP地址的MAC地址,则发送ARP请求报文广播帧
-
主机通过发送装有ARP请求的广播帧,目标主机收到请求报文后返回响应,告知自己的MAC地址(返回的响应ARP报文为单播帧