目录
- 0.对比理解"数据链路层"和网络层
- 1.以太网
- 1.认识以太网
- 2.以太网帧格式
- 3.认识MAC地址
- 4.以太网帧格式如何封装/解包?
- 5.以太网帧格式如何分用?
- 2.重谈局域网通信原理
- 0.如何形象的理解?
- 1.理解局域网通信
- 2.在发送数据的时候,别人也想发数据,会发生什么?
- 3.碰撞了发送方主机知道吗?
- 4.融会贯通理解
- 5.局域网中主机越多越好,还是越少越好?
- 6.如果非得在局域网中连接很多主机怎么办?
- 7.局域网数据帧发送的时候,数据帧越长越好,还是越短越好?
- 8.补充
0.对比理解"数据链路层"和网络层
- 决定将数据交付给下一跳路由器的时候,下一跳路由器一定和我在同一个局域网
- 本质上的两个节点间的一跳都叫做:局域网转发(子网转发)
- 宏观上,网络的本质就是一个一个子网构成的。只不过子网和子网之间用对应的路由器进行了连接,路由器的工作就是在这么一个个子网当中不断进行转发、进行决策。所以查找的目标主机的时候必须得先找到目标主机所在的子网
- 所以网络的最后一层要解决的就是,如何做到将主机A的数据转发到同一个局域网下的路由器A,如此便可以做到后续在各自局域网中的一跳(都是局域网子网问题)
1.以太网
1.认识以太网
- "以太网"不是一种具体的网络,而是一种技术标准,既包含了数据链路层的内容,也包含了一些物理层的内容
- 例如:规定了网络拓扑结构,访问控制方式,传输速率等
- 例如:以太网中的网线必须使用双绞线,传输速率有10M,100M,1000M等
- 以太网是当前应用最广泛的局域网技术,和以太网并列的还有令牌环网,无线LAN等
2.以太网帧格式
- **源地址和目的地址:**网卡的硬件地址(也叫MAC地址),长度是48位,是在网卡出厂时固化的
- 帧协议类型字段有三种值,分别对应IP、ARP、RARP
- 帧末尾是CRC校验码
3.认识MAC地址
- 在局域网当中,想进行转发的时候,首先必须保证每一台主机的唯一性
- 因为IP地址实际上是网络层的概念,所以在数据链路层当中无法去标定唯一一台主机
- 所以对于数据数据链路层,需要一个标识主机的唯一方案:MAC地址(物理地址/网卡地址)
- 个人理解:
- 虽然使用IP也是可以的,毕竟在局域网内,私有IP照样是具有唯一性的
- 但是此处数据链路层采取的是MAC地址(另一套地址方案),主要是不想让数据链路层,有任何使用IP的方式在里面,以达到在软件上进行一定程度上的解耦
- MAC****地址用来识别数据链路层中相连的节点
- 长度为48位,即6个字节,一般用16进制数字加上冒号的形式来表示
- 例如:08:00:27:03:fb:19
- 在网卡出厂时就确定了,不能修改
- MAC地址通常是唯一的(虚拟机中的MAC地址不是真实的MAC地址,可能会冲突
- 也有些网卡支持用户配置mac地址)
- 长度为48位,即6个字节,一般用16进制数字加上冒号的形式来表示
4.以太网帧格式如何封装/解包?
- 以太网的帧格式采用的是定长报头,帧末尾CRC校验码同样也是定长
- 当数据链路层向上层网络层进行交付的时候,只需要将数据帧中的报头和有效载荷进行固定长度的分离就行了
- 头、尾定长去掉就是有效载荷
- 解包之后每一个字段该怎么拿,字段的位置与大小也都是固定的,很方便获取信息
5.以太网帧格式如何分用?
- 类型字段填的如果是0800,代表的就是有效载荷放的是IP报文,进而向上交付给IP层就可以了
- 同样的还有0806、8035,以代表有效载荷的不同,从而交付给不同的软件层
- 同样的还有0806、8035,以代表有效载荷的不同,从而交付给不同的软件层
2.重谈局域网通信原理
0.如何形象的理解?
- 一个班级在进行点名,老师A进行点名,当点同学F的时候,老师A点名的这个行为,学生B、C、D、E是都听到了的(在坐的所有人都是听到的),但是只有学生F答了一声到。而学生F向老师A答到的时候,同样的学生B、C、D、E也是都听到了的(在坐的所有人都是听到的)
- 所以,可以说A和B是在进行众目睽睽之下进行定向的通讯
- 而之所以学生B、C、D、E未做出反应,是因为老师A并未喊到他们,而他们之所以能知道喊的不是他们就是因为他们也听到了的(接收到了的)
1.理解局域网通信
- 我们先做出如下约定:
- MAC:Ma、Mb、Mc…
- IP:IPa、IPb、IPc…
- 收到的每一个主机拿着其中的目的地址进行对比,看是否是自己,不是就直接丢弃,是就保留,做报头和有效载荷的分离,然后将有效载荷向上进行交付
- 局域网通讯原理:直接把数据扔到局域网当中,其他目标主机自动会去识别该数据,是自己的就留下,不是自己的就丢弃
- 通过路由器转发同理,路由器本就是局域网中的主机,其检测到是发送给其的报文就会保留并作后续转发
- 通过路由器转发同理,路由器本就是局域网中的主机,其检测到是发送给其的报文就会保留并作后续转发
2.在发送数据的时候,别人也想发数据,会发生什么?
- 换句话说向网路中扔进一个数据帧,也就是扔了一个光电信号。在一个公共的介质当中,你说你的我说我的,彼此信息必定就会发送干扰
- 也就是说:如果局域网中,同时有多台主机都在发送数据,数据之间就发送了碰撞
3.碰撞了发送方主机知道吗?
- 是知道的
- 与日常的公共场合说话的一样,所有人都听的到,包括我们自身
- 碰撞的时候发送方的主机也是可以知道的(通过CRC校验码),而一旦碰撞了数据也就无法使用了,所以尽量不能发生碰撞问题
- 只有发了才知道会不会碰撞,如果碰撞了就会触发避免碰撞算法 – 发送主机会休息随机时间,然后再重新发送
- 所以数据链路层也需要可靠性
4.融会贯通理解
- **结论:**主机A向主机F发送消息,这两台主机是在做进程间通讯
- 进程间通讯的本质是,先得让主机A和主机F看见同一份资源,而这的典型的同一份资源就是局域网,所以在读写局域网的时候,因为该局域网被所有主机共享,所以该局域网可以称为临界资源
- 而通过碰撞检测的方式(检测到碰撞,则立马根据相关算法进行重传),一定要保证在己方发数据的时候,没有别人的干扰,这就叫做对资源进行独占
- 本质上:局域网资源是一个临界资源
- 当进行多个主机通讯的时候,本质上要保证临界资源的数据一致性,就是任何时刻保证一个数据在发
- 在之前的进程间通讯的学习中是采用的加锁,而在局域网中是先试试,碰撞了就根据一定算法再试试,直到成功即可
5.局域网中主机越多越好,还是越少越好?
- 主机越少越好
- 这也就是为什么局域网不能太大,如果局域网太大就会出现一发数据就碰撞的问题,导致数据发送不出去
6.如果非得在局域网中连接很多主机怎么办?
- 正因为有这种场景需要,存在一种设备 – 交换机
- 作用:划分碰撞域
- **特性:**利用交换机将局域网划分成很多很多的子区域,这些子区域依旧属于局域网
- 工作场景:
- 如果A想给F发送报文,可以经过交换机直接将报文给F没有任何问题。但是如果B、D、E也有类似的操作,导致发生碰撞,然后交换机识别到碰撞了,交换机就不会将数据往后转发,此时就减少了碰撞的垃圾数据填充的问题
- 如果A向B发送消息,交换机就甄别到在其包括的局域网一侧,交换机就不会将数据转发到另一侧了
- 这样大大减小了压力,在另一侧得数据,交换机以同样的方式进行处理
7.局域网数据帧发送的时候,数据帧越长越好,还是越短越好?
- 既不能太长,也不能太短
- 越长代表着其要花费更多的时间在局域网中进行传输,更容易发送碰撞
- 而太短也不好,太短涵盖的有效数据量又太少了
8.补充
- 在网络转发的过程中,目的IP是不变的
- MAC帧报头会发生变化
- 因为每一个主机都有不同的MAC地址,所以当报文跳一个路由器之后,下一跳的MAC源地址与MAC目的地址就变化了
- 所以有效数据没有变化,但是MAC帧报头是发生变化的
- 此时可重新理解体会MAC地址和IP地址
- IP地址在整个转发过程中,尤其是目的IP是一直不变的
- IP地址的目标一直不变带来的好处是:IP地址描述的是路途总体的起点和终点
- MAC****地址描述的是路途上的每一个区间的起点和终点
- IP地址在整个转发过程中,尤其是目的IP是一直不变的