tcpip详解卷一第2章
大家可以看到这张图最下面的是链路层,现在先从链路层开始讲起
图2-1网络分层
现在举个例子:大家平时的时候都有买手机,你买的新手机送到你手上的时候,不是一个手机把,是一个快递,你再把这个快递打开,是手机盒把,然后打开手机盒就是对应的手机了。
*
图2-2手机快递
如果把手机当作数据,那么最后发送的数据是经过包装之后发送的,最外层的一层包装是数据链路层的包装,比如京东有京东的包装风格,韵达有韵达的包装风格,(举另外例:也可以认为链路层是一个职位:链路层这个职位上面有以太网这个人,或者叫做ieee802这个人)
现在主要链路层来看主要有2种 , 以太网和IEEE 802封装 。
现在很多的互联网主要用以太网,我们先来看一下以太网是怎样封装的:
图2-3以太网封装格式
可以看到按照以太网封装的话,有目的地址,源地址,类型,数据,CRC,分别讲解一下他们的作用
目的地址:从名字上面看可以认为这个数据包是要发送到哪里对吧(如果不是直连可能只是下一跳mac,先不用理解这个,等讲到ip再来看);
源地址:发送数据包的地址;
类型:对应快递里面可以是电器,也可以是洗衣粉,这就表示这个快递盒里面有不同种类的东西,就好像这个以太网里面存放的是IP数据那么就要对应一个类型,存放的不是IP数据是另外一种数据,那么就对应另外一种类型;是不是发现快递员很聪明,他不用在意快递里面存放的东西,不过以太网需要在意类型
现在抓个数据给大家看看
这个是以太网封装之后用wireshark抓的包,大家可以看到红色表示这个包对应的位置,0000最开始0010对应16进制表示第16个数字,黄色表示对应mac地址可以看到图2-4分析之后对应源地址与目的地址,以及type类型
图2-4数据包
图2-5数据包分析
这里把链路层的源地址叫做源mac,目的地址叫做目的mac,这个mac与苹果mac产品不是一个,只是英文简称相同,type 0800为ip报文,如果type不是0800,那么就可能以太网承载其他类型的数据包,比如arp,这个就不是0800类型。
看了以太网的格式那么怎样知道自己对应mac地址为多少?以及怎样知道对方的mac地址为多少? 看自己电脑的mac地址,windows打开运行,然后输入cmd,再输入ipconfig /all可以看到对应
图2-6电脑的mac地址
这里的物理地址就是mac地址。
那么怎样知道对应的地址,再邮寄快递的时候双方会打电话,发微信告诉对方地址,然后进行快递,那么以太网可以通过arp协议发送,这个后面在讲。
在mac地址里面2类特殊地址,1个是广播地址,一个是组播地址,
图2-7简单以太网布局
大家可以看到中间红色的表示网线,大家通过网线连接,比如a->x发送消息那么对应格式就是 mac x| mac a | type | data | crc(type ,data 表示类型与数据的英文),这个时候其实其他主机也能收到对应消息,不过他们看到目的mac不是自己就不管了(计算机还是比较老实的,对吧),这个时候 计算机x收到消息之后再进行回答,这个是普通mac
现在讲到广播mac,大家对广播映像是不是学校里面一般都会有广播体操,大家跟着广播进行运动?比如a想把自己买了一辆保时捷跑车告诉大家,这个时候有2种方法
1、一个个跑过去告诉他
2、群发一条消息告诉大家买了保时捷
来看看这2个方法怎样发消息:
1、mac b | mac a | type | 买了一辆保时捷| crc a->b
mac x | mac a | type | 买了一辆保时捷| crc a->x
mac y | mac a | type | 买了一辆保时捷| crc a->y
mac z | mac a | type | 买了一辆保时捷| crc a->z
这是不是太嚣张了??
2、
== ff: ff: ff: ff: ff: ff: ff| mac a | type | 买了一辆保时捷| crc
这个消息会传给所有在这条网线上的用户,也就是用户b,x,y,z
大家看到这个mac地址表示都可以进行处理,想一想 之前是对应电脑的mac,如果其他电脑发现不是自己的mac地址那么就不管数据包了,所以全ff的mac地址就表示广播地址
组播mac后续再讲解==
再想想一个问题,整个以太网链路层数据包有没有长度限制?
有,这个就是mtu,一般发送报文不能超过mtu长度,一般的mtu是1500个字节,一个文件超过mtu,那应该怎样发送?比如一个文件1600个字节,那么应该应该怎样发送?
第一次发送1500,第二次再发送100,这样不就可以了?(后续mtu再ip分片与重组里面会再讲)
有了最大长度那有没有最小长度?
也是有的,最小长度为64字节,这个主要是为了效率,就不进行多讲了