はじめに、私も書き込みデータリンク層の障害、すべてを学ぶためには、これに依存ハンLigang教師のクラス、絶対に面白い、これは私の参照であるムークラスのネットワーク:記事中に必要な基礎をプログラミングネットワーク、すべてのソフトウェアではなく、非常に完全な、しかし、私は十分に出ソフトウェアのためだと思います。間違って記入してください
記事のディレクトリ
1.包装フレーミング
「フレーム」は、データリンク層の基本単位です。
データリンク層にデータ送信終了ネットワーク層(データパケット)の期間の後、フォームとも呼ばれる「フレーム」は、標識された特定のデータグラムの添加前後の「データフレーム」。
特定の識別タグ前面によれば、「フレーム」は、データリンク層の端部を受け入れます。
- フレームヘッダ及びフレームテールは、特定の制御文字(ビットストリーム)であります
2.透明の送信
データはフレームのみであるので、この提示を透明送信を解決する方法に、このような特定のビットストリームがある場合、受信側へのデータは、フレームデータ、除去フレームの第一の端をマークします。
多くの場合、コンピュータで「透明」と述べた:ユーザーが特定の実装を知っている必要はありません(可能なコードまたは他の関数)を参照すると、ユーザーに対して透過的には、ユーザーが唯一のラインで使用する必要があります。引数のさまざまながありますが、パッケージとすることができ、ネットワークのために、物理層の仕事は、データリンク層に透明であり、それだけでデータリンク層へのインタフェースを提供する必要があります。事が実際に存在するが、存在していないようです。
現実世界と混同しないように「透明」透明現実世界の反対を意味します。
トランスペアレント伝送:データリンク層は、EOTのデータフレームに、このような問題を解決するためのメッセージ(フレーム・データ)は、(フレームデータ、すなわち制御文字)に転送することができるかに関係なく。私達はちょうどメッセージを渡すので、それがEOTの問題が含まれていることをメッセージを気にしないでください。私たちは、EOTが透明であるという問題に対処するためにこれはメッセージがあります。
データリンク層は、(理解する)に対処する方法については正確に話すことができる:メッセージにエスケープ文字を追加する前EOTが含まれていること。
ESC:エスケープ文字。もしあれば、受信者は、次いで、フレームは尾ではない、最初のEOT ESCの前に存在するかどうかを決定する、EOTと同定されます。
这跟我们编程中的“\”一样,比如要打印“\n”,而“\n”是换行符(规定的控制字符),那么可能需要转义:“\\n”,才打印“\n”。
3. 差错检测
物理层只管传输比特流,无法控制是否出错。所以数据链路层负责“差错检测”的工作。
差错检测有两种:奇偶校验码和循环冗余校验码CRC。
3.1 奇偶校验码
在比特流的尾部添加一位比特位来检测该比特流是否出错。
但是,假设出现如下图的情况,那么在检测的时候就会成功,这就是该方法的缺陷:即在传输的过程可能会出现顺序错误但是计算出的结果还是跟携带的比特位一样,或者丢失了某些数据,最终形成的数据中计算出的结果也跟携带的比特位一样。
所以就有循环冗余校验码CRC。
3.2 循环冗余校验码CRC
一种根据传输或保存的数据而产生固定位数校验码的方法。
学习它的前提知识需要知道模“2”除法:即二进制下的除法。与算术除法类似,但是该除法不借位,实际是 异或操作。
异或有四条公式,用xor表示异或操作:
- 0 xor 0 = 0
- 0 xor 1 = 1
- 1 xor 1 = 1
- 1 xor 1 = 1
即只需要记住常说的一句话:异或操作,相同为0,不同为1。
循环冗余校验码CRC的生成主要有三个步骤:(看不懂没事,了解先,然后直接看例子)
- 选定一个用于校验的多项式G(x),多项式一般题目会给,并在数据尾部添加r个0。
- 将添加r个0后的数据,使用模“2”除法除以多项式的位串。
- 得到的余数填充在原数据r个0的位置得到可校验的位串。
例子1:对于生成多项式G(x)=x^4+x^3+x^2+1,计算报文110的可校验位串。(例子来自360百科)
1.根据用于校验的多项式G(x)来计算,并在数据尾部添加r个0:
可以知道r就是最高阶数。
- 将添加r个0后的数据,使用模“2”除法除以多项式的位串。
- 得到的余数填充在原数据r个0的位置得到可校验的位串。
最终将该可校验的位串发送到接收方,接收方在数据链路层会根据多项式(双方协议所规定好的,我们不用理,了解)计算出位串,然后将发送来的可校验的位串除以多项式的位串,然后根据余数判断出错:
- 假设余数为0,那么说明报文无错。
- 假设余数不为0,那么说明报文有错。
CRC的错误检测能力与位串的阶数r有关,即添加越多的0,那么检测能力越强。当r=1时,会退化为奇偶校验。
多项式不是随便自己想的,实际上多项式是双方约定的,即有协议来规定。根据下面的图:了解就行。
4. MTU
MTU:最大传输单元MTU(Maximum Transmission Unit)
数据链路层的数据帧也不是无限大的,因为数据帧过大或过小都会影响传输的效率。以太网MUT一般为1500字节。
过小影响效率的解释:比如数据帧有1500字节都拆成1个字节分别发送,那么就要发送1500次。虽然发送时延减少了,但是需要重复1500次,那么就会影响传输效率。
路径MTU:
MTU在网络层会涉及到。
问题:在路径MTU中如果当前发送帧为1500字节,可是下一个小型网络只能接受1000字节,会如何处理?
回答:路径MTU指的是发送方到接收方完整路径的最小MTU,这个MTU是可以动态变化的,如果确实发生上面的情况,则可以认为是数据链路层异常,数据会被直接丢弃掉。
5. 以太网协议
5.1 MAC地址
即物理地址、硬件地址。每个设备都拥有一个唯一的MAC地址。像身份证一样。MAC地址共48位(bit),使用十六进制表示。计算机的MAC地址由网卡决定,是不可改变的。集线器、路由器也有MAC地址。
在CMD中输入:ipconfig/all 就可以看到本机所有网络物理设备的MAC地址。
5.2 以太网协议
以太网(Ethernet)是一种使用广泛的局域网技术。是数据链路层中的协议。使用以太网可以完成相邻设备的数据帧传输。
传输过程:
如果是未知的情况:
因为以太网协议只能解决相邻设备的数据传输,下图是需要跨节点传输,这需要网络层的知识来解决:
6. 总结
- データリンク層の三つの重要な機能:パッケージフレーミング、透明伝送、エラー検出。
- データリンク層ヘッダとトレーラは、データの基本単位に送信されるフレーム識別子「フレーム」にするネットワーク層のIPデータグラムを添加します。データはまた、物理層フレームヘッダ除去フレーム識別子および尾部に伝達されます。(送信側の層データ伝送ネットワーク上から下にあり、そして反対側の受信機を思い出してください)。
- データリンク層は、IPデータグラムにMACアドレスを追加します。
- 原因と透明伝送コンセプト。
- データリンク層のみ検出データが正しくありません。エラーのためのデータリンク層のデータを直接破棄します。パリティおよび巡回冗長検査CRC:二つの検出方法があります。私たちは、CRCの計算を知っています。
- MTUおよびイーサネットプロトコル。