当前位置:网站首页>网络层解析——IP协议、地址管理、路由选择
网络层解析——IP协议、地址管理、路由选择
2022-08-02 02:22:00 【Diligent_wu】
IP协议格式解析
画图解析IP协议报头成员:
4位版本号: 4 --- ipv6 6 --- ipv6
4位头部长度:ip报头最小20个字节,最大60个字节,用于数据分用
8位服务类型:3位优先权弃用、1位固定位0、4位服务类型
16位数据报长度:限制IP报头包含头部在内最大不超过64k大小
对tcp报文最大数据不超过64k-40(IP报头20字节,tcp报头20字节)
对udp报文最大数据不超过64k-28(IP报头20字节,udp报头8字节)
16位分片标识:表示当前分片属于哪一个报文,用于分片重组
网络层的数据分片:
在网络层要求一个报文最大不能超过64字节,如果报文超过64字节,则直接丢弃,小于64字节才能进行传输。
而在链路层还有一个报文的长度限制MTU,大小可以设置,以太网默认位1500,如果报文超过MTU就需要在网络层进行数据分片。
将大报文分割成小的分片,然后分别封装包头进行传输。在发送端进行数据分片,在接收端就需要进行分片重组。分片标识就是干这个事情的。
3位标志位:
0表示不用,对应位置1表示对应功能
分片保留位:现在还不想用,但不知道以后用不用
分片禁止位:禁止分片,如果报文长度大于64字节,网络层直接丢弃
分片结束标志位
13位分片偏移:标识当前分片在原始报文中的位置,以8字节为单位。
8位TTL:生命周期,最大数字255。
表示一个报文所能经过的路由器跳数,每经过一个路由器跳数减1,减为0就丢弃数据。
避免路由环路导致数据传输传不出来。
8位协议类型:
表示当前数据所使用的协议类型,用于数据分用上层选择
16位校验和:校验数据一致性
每一层都有自己的传输设备,每一层都应该有自己的数据校验
32位源端-对端IP地址:用于描述通信两端主机
0~40字节网络数据:某些情况下使用,比如路由追踪
地址管理
IP地址的管理:
IP地址:在网络中唯一标识一台主机
IPV4:uint32_t类型的整数
管理:根据网络不同进行分配
IP协议地址组成:
网络号:是一个网络的标识,每个网络中所分配的IP地址都包含对应的网络号
主机号:一个主机在一个网络内部的标识
只要使用不同的网络号并且每个网络中的主机号不用就可以实现IP不同。
网段的划分:
32位地址
A类网段:
高1位固定为0,7位网络号,24位主机号
用于组件超大型网络,127是网络号,2^24个主机(一千六百多万个)
A类范围:0.0.0.0 ~ 127.255.255.255
B类网段:
高2位固定为10,14位网络号,16位主机号
用于组建中型网络,191.256是网络号,2^16个主机(65535个)
B类范围:128.0.0.0 ~ 191.255.255.255
C类网段:
高3位固定为110,21位网络号,8位主机号
用于组件小型网络,223.255.255是网络号,2^8个主机(256个主机)
C类范围:192.0.0.0 ~ 223.255.255.255
D/E类网段
但这种网段划分方式导致的情况就是,大量的公司抢占B类网段IP,导致A类网段IP浪费。
所以在早期的基础上使用了新的方案:CIDR使用子网掩码进行网络划分
子网掩码:
uint32_t 类型的数据,由-连续-的二进制1组成
··必须保证1是连续的
1.用于辨别一个IP地址属于哪一个网络
子网掩码与IP地址相与可以得到网络号
192.168.1.2 & 255.255.255.0 ->192.168.1.0
2.用于确定或限制子网中主机号个数
子网掩码取反得到子网中最大主机号个数
~255.255.255.0 ->0.0.0.255 255个
一个公司中申请了一个C类网络,192.154.53.0 /24,公司有4个部门,现在需要将网络平均划分为4个子网,请问每个子网的网络号,子网掩码和IP范围分别是多少?
C类网络可以有256个主机,平均划分为四个子网,每个子网最多有64个主机号,每个子网的主机号范围位0~64.
子网掩码取反得到最大主机号,同理,用最大主机号取反就可以得到子网掩码:~0.0.0.64 ->255.255.255.0
所以得到的IP地址范围为:
子网1:192.154.53.0 ~ 192.154.53.63;
网络号:192.154.53.0 & 255.255.255.0 ->192.154.53.0
子网2:192.154.53.64 ~ 192.154.53.127;
网络号:192.154.53.64 & 255.255.255.0 ->192.154.53.64
子网3:192.154.53.128 ~ 192.154.53.191;
网络号:192.154.53.128 & 255.255.255.0 ->192.154.53.128
子网4:192.154.53.192 ~ 192.154.53.255;
网络号:192.154.53.192 & 255.255.255.0 ->192.154.53.192
特殊IP地址:
0.0.0.0:被识别为当前主机上任意网卡地址,常使用于服务端绑定地址
255.255.255.255:全网广播地址,常用于DHCP请求
DHCP:动态地址分配协议,谁上网给谁分配地址
路由选择时,数据中没有对方路由的IP,怎么将数据发送出去,只能通过广播发送给所有的路由,让相关的进行识别。
127.0.0.1:每个主机上都有的虚拟回环网卡地址,用于本地网络测试
主机号全为0的IP地址:就是网络号,不会分配给主机
主机号全为1的IP地址:udp局域网广播地址,也不会分配给主机
所以说一个C类网络中有256个IP,但是分配给主机的IP只有254个
这和全网广播地址是不一样的,因为网络号不同,位数不同。
一个网络中能够分配给主机的IP地址的个数是主机号个数-2。
公网与私网:
公网/外网:通常所说的互联网
私网/内网:私自组建的私有网络不与外界直接通信
目的:1.只想进行内部通信 比如军政领域
2.节省公网地址的使用
建立一个私网,可以使私网中的主机使用同一个公网进行上网。
RFC1918文档中规定用于组建私网的地址:
10.*.*.* 172.16.*.* 192.168.*.*
我们的虚拟机ip都处于一个小型的私网中
路由选择
路由器为每一条流经路由器的数据选择一条合适的路径进行转发。
首先,路由器进行路由选择之前会判断目标IP处于哪一个网络
路由表: route命令
每一个路由器都有一张路由表,记录了当前路由器所连的网络。
路由器对途径的数据,取出目标IP地址,与自己路由表中的路由表项进行比对,判断目标地址属于哪一个网络,判断完成之后使用连接这个网络的网卡将数据发送到指定网络
怎么比对?
路由表项中有自己支持的目标网络号、网关、子网掩码、连接网络的网卡信息和defult信息。
取出数据目标IP,与每一个支持子网掩码掩码相与得到目标IP的网络号,再与对应的路由表项中的网络号比对,不是则进行下一次比对,
如果网络号相同就使用对应的网关将数据发送出去;
如果都没有找到与对应IP网络号相同的就对应defult信息进行地址替换(子网IP换成局域网IP)在上层网络进行匹配。
有很多路由表的生成算法。
边栏推荐
- LeetCode brush diary: LCP 03. Machine's adventure
- Nanoprobes纳米探针丨Nanogold偶联物的特点和应用
- swift项目,sqlcipher3 -> 4,无法打开旧版数据库有办法解决吗
- PHP live source code to achieve simple barrage effect related code
- Analysis of the status quo of digital transformation of manufacturing enterprises
- 工程师如何对待开源
- PHP uses PHPRedis and Predis
- 拼多多借力消博会推动国内农产品品牌升级 看齐国际精品农货
- Golang分布式应用之Redis
- 2022年NPDP考完多久出成绩?怎么查询?
猜你喜欢
2022-07-30 mysql8 executes slow SQL-Q17 analysis
The first time I wrote a programming interview question for Niu Ke: input a string and return the letter with the most occurrences of the string
Garbage Collector CMS and G1
一次SQL优化,数据库查询速度提升 60 倍
【LeetCode每日一题】——704.二分查找
Reflex WMS Intermediate Series 7: What should I do if I want to cancel the picking of an HD that has finished picking but has not yet been loaded?
NAS和私有云盘的区别?1篇文章说清楚
[ORB_SLAM2] void Frame::ComputeImageBounds(const cv::Mat & imLeft)
BI - SQL 丨 WHILE
Redis Subscription and Redis Stream
随机推荐
NAS和私有云盘的区别?1篇文章说清楚
How to adjust the cross cursor too small, CAD dream drawing calculation skills
What to study after the PMP exam?The soft exam ahead is waiting for you~
AntPathMatcher uses
Moonbeam and Project integration of the Galaxy, bring brand-new user experience for the community
Good News | AR opens a new model for the textile industry, and ALVA Systems wins another award!
[LeetCode Daily Question] - 103. Zigzag Level Order Traversal of Binary Tree
Reflex WMS Intermediate Series 7: What should I do if I want to cancel the picking of an HD that has finished picking but has not yet been loaded?
线程的不同状态
优炫数据库导库导错了能恢复吗?
leetcode / anagram in string - some permutation of s1 string is a substring of s2
EFCore 反向工程
【ORB_SLAM2】void Frame::AssignFeaturesToGrid()
永磁同步电机36问(三)——SVPWM代码实现
NIO‘s Sword(牛客多校赛)
"NetEase Internship" Weekly Diary (3)
Oracle19c安装图文教程
机器人领域期刊会议汇总
四元数、罗德里格斯公式、欧拉角、旋转矩阵推导和资料
[Server data recovery] Data recovery case of server Raid5 array mdisk disk offline