计算机网络-网络层
------------恢复内容开始------------
网络层的核心内容是IP协议。 ### 网络层向上提供无连接的,简单灵活的,尽最大努力交付的数据报服务 这里要注意的是,网络层是不会考虑可靠运输的,可靠运输是数据链路层的事情。在数据链路层我们要进行差错检测,流量控制等等功能。 上面描述的是数据报服务。还有一种虚电路服务,我们只需要知道他是模拟电话线,即两端要模拟建立一条通路的思路。 下图可以让我们明白他们的思路和不同。 IP协议
重点中的重点
IP协议中有配套的三个重要辅助协议
- 地址映射协议ARP(Address Resolution Protocol)
- 网际控制报文协议ICMP(Internet Control Message Protocol)
- 网际组管理协议IGMP(Internet Group Manage Protocol)
通过上图我们可以了解到这三个辅助协议在网络层中的位置--它们就是IP协议的辅助工具。位于上层的ICMP和IGMP是因为它们要经常使用IP协议;而位于下层的ARP则是IP协议要经常用它。
IP网的形象理解
不同的主机通过路由器连接起来,共同使用IP协议,组成了一个虚拟世界里的网络。在物理层面它们可能会存在许多差异:光纤或者电话线、个人PC或者服务器或者单片机等等。但是在网络层上来看,它们确实是一个统一的网络。
若R1,R2,R3,R4,R5都是路由器(它们只有网际层和网络接口层,它们之间的物理介质可能是不同的--双绞线、光纤、卫星通信。但是H1到H2在IP网上是一个网络。
IP地址
- 分类的IP地址。
这是最基本的IP地址分类方式。其中A,B,C类都是一对一使用的单播地址,D类用于多播,E类留着还没用
IP地址由图片我们可以知道,由网络号和主机号组成。因为ABC类都是单播地址,主机地址是网络内主机的地址,因此每个IP地址都是唯一的(互联网范围内,自建局域网内可不会是)192.168.0.1这是我们常见的一个IP地址。这种描述形式又被称作点分十进制------IP地址32位,看起来太折磨人了。因此,我们可以知道每个区间内的最大值是255(11111111)。
- IP地址的使用范围
从上面我们可以看到两个奇怪的点,为什么所有类地址要“-1”?这是因为所有为0都是不划分的:A类主机127.0.0.0是默认规定代表本机的;B,C类则是根本不使用。同时为什么A类地址要“-2”呢,这是因为网络号127(01111111)是默认设置为本地环回测试使用的,所有以127开头的都是本地环回地址,所有数据服务都在本地进行,不会上传到网络。
这是特殊IP的归总。
在路由器上面,路由器只会通过主机连接的网络号来进行转发,不会根据目的地址精确转发--这能大大减少路由器的存储要求(况且你没连你怎么直接发,不还是要一下一下的转发?)
IP地址实际上就是主机或者路由器以及一条链路的接口的标识
- IP地址和硬件地址。
我们上一个章节了解了MAC帧的概念,知道了MAC帧内包含IP数据报。这里要注意的是IP地址是逻辑地址,即不和现实设备对应,这也是他服务于网络层及以上的特征;而硬件地址,即MAC帧的头部和尾部
有一些点需要强调
1. IP数据报的首部有着完整的IP地址,但是路由器仅仅根据网络号来进行转发。
2. 网络层及向上层次,它们只能够看到IP数据报。
3. 链路层只能看到MAC帧
-
地址解析协议ARP
APR协议是为了将IP地址转换为硬件地址的协议。他的操作方式为下面4步- ARP cache进行广播ARP请求分组,这个请求包含了该 ARP cache所在主机的IP地址,硬件地址,以及需要请求获取硬件地址的目标IP地址
- 局域网内各个主机路由器都接收该消息。
- 目标主机发送一个单播通信给发送广播的ARP cache所在主机,信息内包含其IP地址,硬件地址
- ARP cache将收到的硬件地址和IP地址存入表中。
**ARP协议是解决局域网内IP地址和硬件地址的转换的,跨局域网走的还是链路层上面的方式。
**
-
IP数据报格式
这里先标注一下,各种数据格式常常以4字节(32位)为一个单位,也会以4位来做基本单位。基本上都得能整除4
- 版本:表明是IPV4还是IPV6
- 首部长度:占4位,因为首部固定长度29,所以首部长度内值为5-15
- 区分服务:占据8位,一般不用,只有使用区分服务时才会有数据
- 总长度:16位,值为首部和数据部分的长度
- 标识:16位 ,标识的作用是帮助因为数据报过大导致不得不分片时,各个分片能够重新组合成原本的数据报--同标识的分片就是同数据报
- 标志:3位,但是目前只有两位有意义:标识最短最低位定义为MF,MF=1时,表“还有分片”,MF=0时,表“没有分片”;中间位定义为DF,DF=0时可以分片,其余值(1)不能分片
- 片偏移:13位。片偏移描述的是分片信息在原来数据报中的相对位置。片偏移以8字节为单位,因此这里我们可以知道一个小信息:分片的长度必然是8的倍数。
- 生存时间。8位,又名TTL(Time to Live)。这里存放的是数据可以被转发的次数:每被路由器转发一次TTl就减1。TTL=0时,数据报丢弃。
- 协议:8位,指出使用的是那种协议,方便目标主机IP层将数据部分上交哪个主机处理。
- 首部检验和:16位,只检验首部的数据正确性,且每经过一个路由器都要检验一次。计算方式:
- 发送方将首部划分为多个16位字的序列,并将检验和致0.
- 将首部所有16位字使用反码算数运算进行相加,得到的和取反码写入检验和。
- 接收方将首部所有16位字进行反码运算,若结果为0即正确,保留该数据报;若非0,丢弃该数据报。
- 源地址:32位
12.目的地址:32位
-
IP层分组转发流程
从一个路由器转发到另一个路由器--基于路由表.路由表给出到某一个网络该如何转发,可以大大减少路由表大小
分组转发算法
划分子网
为什么要划分子网
- IP地址不够用
- IP地址不够灵活-急用
胡言胡语
------------恢复内容结束------------
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了