计算机网络学习之数据链路层与网络层

谢希仁老师的计算机网络学习(第六版)

物理层是很基础的通信的知识,感觉干这一年多的通信都很深刻了,懂得还是懂,不懂得还是不懂,就没必要写出来了,哈哈哈哈哈。
数据链路层使用的信道主要有以下两种类型:
(1)点对点信道:一对一通信
(2)广播信道:一对多通信
链路:从一个结点到相邻结点的一段物理路线(有线或者无线),中间没有其它任何交换结点。
数据链路:链路加上一些必要的通信协议和硬件来控制数据的传输。
数据链路层把网络层交下来的数据构成帧(添加首部和尾部封装成帧)发送到链路上,以及把接收到帧(无差错才会提取,否则丢弃这个帧)中的数据取出并上交给网络层,在因特网中,网络层的数据单元就是IP数据报。
数据链路层有多个协议,但三个问题是共有的:
(1)封装成帧
在一段数据的前后分别添加头部和尾部,这样保证构成了一个帧,接收到在收到物理层上交的比特流后,根据首尾的标记,识别出帧的开始和结束,帧的数据部分是存在长度上限的,即最大传送单元MTU,帧开始控制字符SOH(结束控制字符EOT),并不是单纯的这三个字符,两者的十六进制编码分别是01和04,在数据传输中,接收到只有头没有结束控制字符的帧,直接丢弃,只会要完整的帧。
(2)透明传输
透明的意思是值某一个实际存在的食物看起来确好像不存在一样,透明传输的意思是无论什么数据都能够成功通过链路层进行传输,所以就必须解决数据中可能会出现soh和EOt这个问题,具体方法就是在出现控制字符的数据处加上一个转义字符ESC(1B十六进制编码),接收端会在把数据送网络层之前删除掉这个插入的转义字符,称为字节填充或者字符填充,当出现转义字符的时候,就在转义字符前面加上一个转义字符,送网络层的时候删除掉该转义字符。
(3)差错检测
因为传输信道的原因,肯定是有误码率的,目前数据链路层采用的是循环冗余检验CRC(Cyclic Redundancy Check)检测技术。它会在数据的后面加上n位冗余码(FCS,帧检验序列)作为差错检验,只能检错,检测到错误就丢弃这个帧,所以仅是使用CRC,能够做到对帧的近似无差错接收。传输差错和比特差错也有不同,比特差错就上帧内结果错了,传输差错是指出现帧重复,帧丢失,帧失序。
点对点协议是数据链路层使用最多的一种协议,它的特点是简单,只检测差错,不纠错,不使用序号,也不进行流量控制,可同时支持多种网络层协议。
网络层
网络层向上只提供简单灵活的、无连接的、尽最大努力交付的数据报服务。网际协议IP是TCP/IP体系最重要的两个协议之一,与之配套使用的还有三个协议:
(1)地址解析协议ARP
(2)网际控制报文协议ICMP
(3)网际组管理协议IGMP