0
点赞
收藏
分享

微信扫一扫

网络基础(三)

网络层与数据链路层

1.网络层

2.IP

2.1 基本概念

2.2 协议头格式

在这里插入图片描述

2.3 网段划分

在这里插入图片描述

在这里插入图片描述
公网也是转发集群,每个不同的子网通过路由器连接,路由器能够认识其他子网的入口路由器。当我们进行数据传输时,先找到子网再找到目标主机,这一切都是由我们的运营商设计的。
我们世界上有许多的电子设备,都需要用到IP地址,国际上会按照地区人口等来划分32个比特位
通过合理设置主机号和网络号, 就可以保证在相互连接的网络中, 每台主机的IP地址都不相同.
手动管理子网内的IP, 是一个相当麻烦的事情.有一种技术叫做DHCP, 能够自动的给子网内新增主机节点分配IP地址, 避免了手动管理IP的不便.一般的路由器都带有DHCP功能. 因此路由器也可以看做一个DHCP服务器.

过去曾经提出一种划分网络号和主机号的方案, 把所有IP地址分为五类

在这里插入图片描述

随着Internet的飞速发展,这种划分方案的局限性很快显现出来,大多数组织都申请B类网络地址, 导致B类地址很快就分配完了, 而A类却浪费了大量地址;例如, 申请了一个B类地址, 理论上一个子网内能允许6万5千多个主机. A类地址的子网内的主机数更多. 然而实际网络架设中, 不会存在一个子网内有这么多的情况. 因此大量的IP地址都被浪费掉了.

2.4 特殊的IP地址

2.5IP地址的数量限制

我们知道, IP地址(IPv4)是一个4字节32位的正整数. 那么一共只有 2的32次方个IP地址, 大概是43亿左右. 而TCP/IP协议规定, 每个主机都需要有一个IP地址.这意味着, 一共只有43亿台主机能接入网络么?
实际上, 由于一些特殊的IP地址的存在, 数量远不足43亿; 另外IP地址并非是按照主机台数来配置的, 而是每一个网卡都需要配置一个或多个IP地址.

2.6 私有IP地址和公网IP地址

如果一个组织内部组建局域网,IP地址只用于局域网内的通信,而不直接连到Internet上,理论上使用任意的IP地址都可以,但是RFC1918规定了用于组建局域网的私有IP地址

在这里插入图片描述

2.7 路由

在这里插入图片描述
路由的过程, 就是这样一跳一跳(Hop by Hop) “问路” 的过程.
所谓 “一跳” 就是数据链路层中的一个区间. 具体在以太网中指从源MAC地址到目的MAC地址之间的帧传输区间.
当IP数据包, 到达路由器时, 路由器会先查看目的IP;路由器决定这个数据包是能直接发送给目标主机, 还是需要发送给下一个路由器;依次反复, 一直到达目标IP地址;
那么如何判定当前这个数据包该发送到哪里呢? 这个就依靠每个节点内部维护一个路由表;
如果目的IP命中了路由表, 就直接转发即可;
在这里插入图片描述

在这里插入图片描述

路由表可以使用route命令查看
路由表中的最后一行,主要由下一跳地址和发送接口两部分组成,当目的地址与路由表中其它行都不匹配时,就按缺省路由条目规定的接口发送到下一跳地址。
在这里插入图片描述
这台主机有两个网络接口,一个网络接口连到192.168.10.0/24网络,另一个网络接口连到
192.168.56.0/24网络;
路由表的Destination是目的网络地址(链接的子网),Genmask是子网掩码,Gateway是下一跳地址(路由器),Iface是发送接口,Flags中的U标志表示此条目有效(可以禁用某些条目),G标志表示此条目的下一跳地址是某个路由器的地址,没有G标志的条目表示目的网络地址是与本机接口直接相连的网络,不必经路由器转发;

3.数据链路层

在这里插入图片描述
网络层IP负责回答为什么F—>G
数据链路层负责回答怎么把数据从B—>F

4.以太网(MAC帧协议)

4.1 认识以太网

4.2 以太网帧格式

在这里插入图片描述

4.3 认识MAC地址

4.4 对比理解MAC地址和IP地址

4.5 认识MTU

MTU相当于发快递时对包裹尺寸的限制. 这个限制是不同的数据链路对应的物理层, 产生的限制.

4.6 MTU对IP协议的影响

①我们可以通过不同的数据包中的IP地址区分不同客户
②知道分片:
a.只要片偏移不是0||更多分片是否是1
b.片偏移是0,更多分片是1
③通过分片偏移还能够知道:
开始报文:更多分片1,偏移0
中间报文:更多分片1,偏移>0
结束报文:更多分片0,偏移>0
独立报文:更多分片0,偏移0
④因此我们可以通过上面的信息,可以保证分片收全:
a.保证头尾丢失,我们能够知道
b.中间报文通过偏移量排序,通过片偏移+16位总长度就能知道下一个数据包的片偏移,通过这个就能检测有没有丢失
⑤通过偏移量排序就能把数据组装在一起
⑥通过16位首部校验和能够保证IP报头没问题,把数据上交到TCP时,TCP的16位校验和能够保证组合在一起的数据是对的
在这里插入图片描述

4.7 MTU对UDP协议的影响

4.8 MTU对于TCP协议的影响

在这里插入图片描述
分片尽量让它成为少数情况,过多的分片会增加丢包率,让TCP协议尽量发送的数据不要过大(1460).

4.9 查看硬件地址和MTU

在这里插入图片描述

4.10 局域网通信原理

在这里插入图片描述

当主机A把数据发送到网络中时,每一台主机都能收到,每一台主机会进行解包,当发现目的地址不是自己时就丢弃,图示中为D收到。在我们的网卡中,可以被设置为混杂模式,不对报文的目标MAC地址进行认证,直接向自己上层交付,这也是大部分局域网抓包软件的原理。
在以太局域网中,任何时刻,只能有一台主机在给另一台发送数据帧,否则可能会发生数据碰撞的问题。我们可以通过CRC来解决,当我们把数据发送出去后,自己也能收到,这个时候把旧的CRS和新的CRS做对比,要是一样就没问题,要是不一样那就重发。况且我们局域网中,主机越多,碰撞的概率就越高,此时我们可以通过交换机来解决。
在这里插入图片描述
我们的交换机可以起到划分碰撞域的作用,当A主机给F主机发数据时,交换机能够垄断左边的数据不会影响到右边。

5. ARP协议

5.1 ARP协议的作用

5.2 ARP数据报的格式

在这里插入图片描述

5.3 工作流程

![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/4a3d51de920b452c9a151571d18d1ec4.png
)
为了获取F的mac地址,因此使用了ARP,当A主机发送到网络后,每个主机都收到了,当他们解包时发现报头中的目标mac是广播地址,因为,协议类型写的是ARP类型,所以继续把数据帧交给对应的ARP,ARP解包后先查看op,发现是别人的请求,此时再去看对应的目的IP地址,发现是找的是ipA,因此丢弃。而F发现是找自己的,也就构建对应的应答。
在这里插入图片描述
然后主机F发送对应的应答到网络中,各个主机又都收到了,此时当每个主机解包时发现对应的以太网目的地址是macA不是自己,所以说丢弃了,和上面的不一样,这次是在MAC帧协议就丢弃了,而上面的是在ARP协议。当A收到时,进行解包,发现是自己的,通过帧类型识别到继续交给ARP层,ARP先看op是2应答,再看发送端以太网地址,就知道了F的mac地址
局域网通信总结来说就两步:
a.获取F的mac地址
b.根据对方的mac地址封装mac帧,发送数据给F
在这里插入图片描述

a.想一想,为什么要有缓存表? 为什么表项要有过期时间而不是一直有效?
①防止重复的索要MAC地址从而导致过多的发生数据碰撞②因为我们的主机有可能一会就下线了,那么它的IP地址就会让别人用到,此时就会改变对应的MAC地址和IP地址的映射
b.并且数据链路层发送的数据帧不能过多,因为过多的话在网络中会存在时间太长,从而发送数据碰撞,如果切分成几个数据,即使发生碰撞也仅仅只需要重传少量的数据帧。这也是让TCP的MSS和IP分片的原因
c.通过不断的发送(冲刷掉主机A与路由器R之间的交互)虚假的ARP应答,可以造成ARP欺骗
在这里插入图片描述

6.DNS(Domain Name System)

6.1 DNS背景

TCP/IP中使用IP地址和端口号来确定网络上的一台主机的一个程序. 但是IP地址不方便记忆.
于是人们发明了一种叫主机名的东西, 是一个字符串, 并且使用hosts文件来描述主机名和IP地址的关系.最初, 通过互连网信息中心(SRI-NIC)来管理这个hosts文件的.如果一个新计算机要接入网络, 或者某个计算机IP变更, 都需要到信息中心申请变更hosts文件.其他计算机也需要定期下载更新新版本的hosts文件才能正确上网.
这样就太麻烦了, 于是产生了DNS系统(应用层).
一个组织的系统管理机构, 维护系统内的每个主机的IP和主机名的对应关系. 如果新计算机接入网络, 将这个信息注册到数据库中;用户输入域名的时候, 会自动查询DNS服务器, 由DNS服务器检索数据库, 得到对应的IP地址.
至今, 我们的计算机上仍然保留了hosts文件. 在域名解析的过程中仍然会优先查找hosts文件的内容.
在这里插入图片描述
它本质类似于一棵树一样
在这里插入图片描述

6.2 域名简介

主域名是用来识别主机名称和主机所属的组织机构的一种分层结构的名称.

7.ICMP协议

7.1 ICMP功能

ICMP正是提供这种功能的协议; ICMP主要功能包括:确认IP包是否成功到达目标地址.通知在发送过程中IP包被丢弃的原因.
ICMP也是基于IP协议工作的. 但是它并不是传输层的功能, 因此人们仍然把它归结为网络层协议;
ICMP只能搭配IPv4使用. 如果是IPv6的情况下, 需要是用ICMPv6;
测试一般用ICMP时,通常跳过传输层来进行应用层和网络层传输.ICMP控制IP来操作
在这里插入图片描述
在这里插入图片描述

7.2 ICMP的报文格式

在这里插入图片描述
ICMP大概分为两类报文:一类是通知出错原因;一类是用于诊断查询
在这里插入图片描述

7.3 ping命令

在这里插入图片描述

在这里插入图片描述
注意, 此处 ping 的是域名, 而不是url! 一个域名可以通过DNS解析成IP地址.
ping命令不光能验证网络的连通性, 同时也会统计响应时间和TTL(IP包中的Time To Live, 生存周期).
ping命令会先发送一个 ICMP Echo Request给对端;
对端接收到之后, 会返回一个ICMP Echo Reply;
在这里插入图片描述
ping命令基于ICMP, 是在网络层. 而端口号, 是传输层的内容. 在ICMP中根本就不关注端口号这样的信息.

7.4 traceroute命令

也是基于ICMP协议实现, 能够打印出可执行程序主机, 一直到目标主机之前经历多少路由器.
在这里插入图片描述

8.NAT技术

8.1 NAT技术背景

之前我们讨论了, IPv4协议中, IP地址数量不充足的问题
NAT技术当前解决IP地址不够用的主要手段, 是路由器的一个重要功能;
NAT能够将私有IP对外通信时转为全局IP. 也就是就是一种将私有IP和全局IP相互转化的技术方法:
很多学校, 家庭, 公司内部采用每个终端设置私有IP, 而在路由器或必要的服务器上设置全局IP;
全局IP要求唯一, 但是私有IP不需要; 在不同的局域网中出现相同的私有IP是完全不影响的;

8.2 NAT IP转换过程

在这里插入图片描述

8.3 NAPT

那么问题来了, 如果局域网内, 有多个主机都访问同一个外网服务器, 那么对于服务器返回的数据中, 目的IP都是相同的. 那么NAT路由器如何判定将这个数据包转发给哪个局域网的主机?
这时候NAPT来解决这个问题了. 使用IP+port来建立这个关联关系
在这里插入图片描述
多个网络客户端进程,ip+port给每一个进程起了一个ID
这种关联关系也是由NAT路由器自动维护的. 例如在TCP的情况下, 建立连接时, 就会生成这个表项; 在断开连接后, 就会删除这个表项

8.4 NAT技术的缺陷

由于NAT依赖这个转换表, 所以有诸多限制:

8.5 NAT和代理服务器

路由器往往都具备NAT设备的功能, 通过NAT设备进行中转, 完成子网设备和其他子网设备的通信过程.
代理服务器看起来和NAT设备有一点像. 客户端像代理服务器发送请求, 代理服务器将请求转发给真正要请求的服务器; 服务器返回结果后, 代理服务器又把结果回传给客户端.
在这里插入图片描述

8.6 NAT和代理服务器的区别

代理服务器又分为正向代理和反向代理.
在这里插入图片描述
在这里插入图片描述

举报

相关推荐

0 条评论