文章目录
- TCP与 IP之间的关系
- IP地址的认识
- 协议报头格式
- 1. 报头和有效载荷如何分离?
- 2. 8位协议
- 3. 4位版本
- 4. 8位服务类型
- 5. 16位总长度
- 6. 8位生存时间 TTL
- 网段划分
- IP地址的划分
- 子网划分
- CIDR的提出
- 如何理解CIDR
TCP与 IP之间的关系
如:假设 你上高中时,班里有个同学叫张三,他的老爹是学校的校长
你感觉每次考试都有考100分的能力
有能力并不意味着百分百一定能做到
有能力指的是有较大概率
若想让张三每次考试 都是 百分百 满分
考了几次,其中有一次考了99,不是满分,张三就去找他老爹,他老爹不满意张三没有考满分
所以跟张三说,单独给你考,直到考到满分
因为他老爹认为张三有很大概率考到满分,所以每次就要保证百分百考到满分
张三与校长父亲组合起来,就能保证每次考试都能考满分
真正参与考试的是张三
校长父亲进行了考试控制,为张三考试提供了策略
IP协议提供一种能力,将数据从主机A 跨网络 送到主机B的能力
IP协议提供的是有较大概率
但是 用户要的百分百能够做到
所以就需要 TCP 和 IP 组合
TCP可以看作是 校长父亲 ,提供传输策略
IP可以看作是 张三,提供真正进行转发报文时的执行
TCP将报文将给IP,IP若出现丢包的情况,则TCP就会重新向上交付
TCP 和 IP 组合 表示 将数据 从主机A 可靠的跨网络 送到主机B
IP地址的认识
如:你要去北京玩,但实际上是去北京的天安门广场 去玩
当你在长春,你可以说去北京玩,但当你到达北京后,就要确认去天安门广场
所以一般要说去哪里玩时,应该先到景点所在的城市,然后再到达景点
IP地址 等于 目标网络 加 目标主机
协议报头格式
1. 报头和有效载荷如何分离?
IP中存在 20位的标准长度
存在 4位首部长度, 表示 整个报头的长度
4位首部长度 的基本单位是4字节
提取报文的前20个字节(前20个字节一定是标准报头)
在提取首部长度字段
根据首部长度字段* 4 减去20字节
若为0,说明没有选项,报文就是标准报头,直接读取有效载荷即可
若不为0,剩下几个字节,就说明有几个字节的选项,整个报文长度 减去 标准报头以及 选项长度
即可获得 有效载荷
2. 8位协议
8位协议 表示 有效载荷是什么报文 即有效载荷向哪一个协议交付
3. 4位版本
IP协议报头中存在4位版本,一般表示为IPV4(以4字节 32个比特位 表示 IP地址用来标识全球唯一的互联网主机)
4. 8位服务类型
如:张三要去考试, 校长父亲要求考满分,同时张三向他父亲询问 这次考试是想卷面最整齐,还是第一个交卷
IP是给TCP提供服务的,当TCP要IP把数据发送时,IP询问TCP 是向尽快把数据交付,还是发送数据时,挑一条不会丢包的路径
提供什么样的服务类型
8位服务类型 对应不同种类的IP的传送策略
其中3位优先权字段被弃用,4位服务类型(TOS)字段 和 1位保留字段(必须置为0)
4位服务类型 分别表示: 最小延时、最大吞吐量、最高可靠性、最小成本
5. 16位总长度
表示 整个报文(报头+有效载荷)的长度
4位首部长度 和 标准20字节长度 可以将一个保文的标准报头和选项分离出
再使用 16位总长度,就可以将报头和有效载荷分离
6. 8位生存时间 TTL
若将数据从主机B送到主机C,当路由器D发生故障时,导致路由器D并没有把数据交给主机C
使路由器D交给路由器I
路由器I 将数据交给 路由器J,路由器J 将数据交给 路由器H,路由器H 将数据交给 路由器C,
最后路由器C 又将数据交给 路由器D,从而造成环路问题
TTL: 该报文,在转发过程中,最多经历的路由器的次数
每经历一次 路由器 ,TTL就减一
当TTL减到0时,表示报文不能再被转发了,若此时没有到达,则该报文直接被丢弃
网段划分
有一天,张三在散步,结果捡到一个钱包,里面有一个学生证,但是上面只能看见一串学号
所以张三只知道钱包上面有学号,只能通过学号来寻找丢失钱包的主人
但是一个人一个人去找效率太低了
钱包上的学号具有唯一标识,一个人一人去问学号,就是在遍历学校的所有人
但一次排除一个人,所以导致效率低下
张三就可以看作报文 ,钱包为目的IP地址,丢失钱包的人可以看作 目标主机
若报文将数据交给目标主机,若在全网中根据目的IP地址一个一个去问,效率也会非常低下
每一个学院都有自己的群,而每一个学院都有自己的院学生会主席,这些院学生会主席之间也有一个群
张三属于计算机学院的学生,计算机学院的编号为10,他属于该学院的210,他的学号为10210
全校没有任何一个同学的学号是一样的
假设捡到的钱包的学号为 12003
张三不打算自己找了,就拍了张照片,并发到计算机学院的群里
计算机院的学生会主席了解每个学号前的数字表示那个学院的,所以就发现丢失钱包的人为化工学院
就把照片 转发到 学生会主席群里,通知对应的化工的学生会主席
此时化工的学生会主席发现就是他们院的同学丢的,就把照片转发到了化工院的群里,通知003号同学
在这个过程中,归还的效率提高了,因为这次不是以个人来寻找的,而是以群为单位来寻找的
查找的本质是排除的过程,选择一个群,就是排除了其他的所有群,查找效率大大提高了
学号 可以看作 IP地址
群 可以看作 子网,院学生会主席 可以看作 路由器
学生会主席群 可以看作公网,丢失钱包的人 可以看作 目标主机
先找到目标子网(群),再找到目标主机
为了 跨网络 更高效的把数据从一台主机送到另一台主机,所以要进行 子网划分 (每个学院都有自己的群)
IP地址 等于 目标网络 加 目标主机
IP地址的构成是子网划分的结果,是为了提高一台主机查找到另一台主机的效率
(因为要在学校里快速的能够进行消息的通知,就需要把每个院都有自己的群,为了更好管理,就要带上学号)
IP地址的划分
IP地址被分为两部分
网络号:保证相互连接的两个网段具有不同的标识
(每一个学院,院号之间彼此之间不能一样,用院号区分不同的学院)
主机号:同一网段内,主机之间具有相同的网络号,但是必须有不同的主机号
(张三、王五是同学,大家都在计算机学院内,但是学号是不同的)
子网划分
根据IP地址,把整个IP地址划分成了五类
由于只有A类的第一个比特位为0,证明是A类
A类网络 最多有 2 ^ 7个网络,每个网络中会有2 ^ 24个主机
B类网络的第一个比特位为1,证明不是A类,第二个比特位为0,证明是B类
B类网络最多有 2 ^ 14个网络,每一个网络中有2 ^ 16个主机
C类网络的第一个比特位为1,证明不是A类,第二个比特位为1,证明不是B类,第三个比特位为0,证明是C类
C类网络最多有 2 ^ 21个网络,每一个网络中有2 ^ 8个主机
若将B类网络申请完了,很难将B类网络中的2 ^ 16个主机用完,并且别人也用不了,就会浪费掉
CIDR的提出
所以就在原有方案的基础上,提出了新的改良方案,称为 CIDR
引入一个额外的子网掩码用于区分网络号和主机号
子网掩码是一个32位的正整数,通常用一串"0"来结尾(左边都是1,右边都是0)
将IP地址与子网掩码 进行 按位与 操作,得到的结果就是网络号
网络号和主机号的划分与这个IP地址是A类、B类还是C类无关
如何理解CIDR
IP地址只有2^32个,所以IP地址是有限的
为了更好理解,所以使用国家为单位划分IP
各个国家的前8位IP地址是不同的
每一个国家都有自己的国际路由器
每个国际路由器会有配置自己直连的国家网络对应的网络号
如:中国 的国际路由器会有配置自己直连的中国网络对应的网络号
为了能够称为全球互联网,所以将大家的国际路由器接入到同一个网络里,称为公网,由全球运营商共同搭建起来的
中国有很多省,其中以吉林省、辽宁省、黑龙江省为例
IP地址前8位表示国家 ,再取6位表示主机,共有32位,后面以 . 代表0
每个省之间都有跨省路由器,搭建公网,由国内运营商构建起来的
以吉林省举例,包含 长春市 吉林市,两者分别有自己的IP地址,并搭建公网
假设长春市有一家互联网公司,对外提供了一个网络服务,美国人想要访问
所以长春的这家公司就要有自己对外的IP地址
将16进制的2位看作1位,就是1字节 即 2.4.4.0/18 (长春市的网络号)
假设长春的这家公司的IP地址 为 2.4.4.23 (属于长春市其中的一家公司,所以有对应的主机号23)
若有个美国人想要访问长春这家公司对应的服务,美国人认为他们国家对应的网络开头为1…
由于2.4.4.23并不是美国的IP,所以就将该IP通过美国的路由器 交付给公网上
通过公网,转发到中国的路由器处
将2.4.4.23与 中国的子网掩码 0000 0010 按位与 得到网络号 2.0.0.0,证明是中国的
将2.4.4.23与吉林省的子网掩码 按位与 得到网络号是 2.4.0.0 ,而吉林省是2.4开头的, 证明是吉林省的
将2.4.4.23与长春市的子网掩码 按位与 得到网络号是 2.4.4.0 ,而长春市是2.4.4开头的,证明是长春市的