高仿网站源码,wordpress 写文章权限,网站手机版怎么做,做的网站上更改内容改怎么回事文章目录 1. 网络层2. ip协议2.1 ip协议格式2.2 网段划分基本概念网段划分的两种方式为什么要网段划分#xff1f;特殊的IP地址IP地址数量不足 2.3 私有IP与公网IP2.4 路由 3. IP的分片与组装为什么要分片与组装#xff1f;如何分片#xff1f;如何组装#xff1f; 1. 网络… 文章目录 1. 网络层2. ip协议2.1 ip协议格式2.2 网段划分基本概念网段划分的两种方式为什么要网段划分特殊的IP地址IP地址数量不足 2.3 私有IP与公网IP2.4 路由 3. IP的分片与组装为什么要分片与组装如何分片如何组装 1. 网络层
IP地址是一个32位的整数再细致一点它是由若干位网络号 主机号构成IP 网络号 主机号
一台主机发出的报文经过多重路由为什么就能到达指定的主机这是因为报文中填写了目的IP地址有了IP地址报文就能到达目的地址
这表明IP真正的意义在于提供了一种能力将报文跨网络送至另一台主机的能力
所谓具有某种能力指的是有很大概率做成某件事但不一定百分百做成也就是不一定可靠我们需要的是不仅仅具有将报文跨网络送至另一台主机的能力还要可靠的送至谁提供可靠呢---- tcp协议
因此tcp协议提供报文传输的策略ip协议提供报文传输的能力、具体的执行两者合作我们的主机就具有将报文可靠的跨网络送至另一台主机的能力
2. ip协议
2.1 ip协议格式 如何将报头与有效载荷分离 同tcp类似ip协议的报头也有4位首部长度每1bit位代表4字节可表示范围[0, 60]字节减去固定的20字节就是选项剩余的就是数据 如何分用 封装时网络层知道上层是tcp/udp向下交付的在8位协议字段中填入解包时读取就得知应该交给上层哪个协议了
其他字段
4位版本通常是ipv4或者ipv68位服务类型(TOS)从最小延迟、最大吞吐量、最高可靠性、最小成本中选取一个报文传输时会根据要求选择不同的路线一般telnet/ssh选择最小延迟ftp选择最大吞吐量16位总长度ip协议不仅有4位首部长度还有自身的总长度字段8位生存时间(TTL)网络是一个相当复杂的结构难免有时会出现漏洞报文在传输时可以会路由循环每当报文经过一个路由TTL–如果路由器收到TTL为0的报文就直接丢弃
我们通常用源端口、目的端口、源IP、目的IP、协议号这样的五元组来标识一个网络通信
2.2 网段划分
基本概念
IP地址是一种有用且有限的资源不同国家、组织、地区拿到IP地址后就需要对它进行合理的划分因此我们所见的IP地址都是被精心设计过的
IP地址 网络号 主机号处在同一网络的IP主机它们IP地址的网络号一定相同
路由器是一种设备通常跨两个网络也就意味着它最少有两张网卡也就有两个IP地址
它不仅仅能对报文进行路由还能构建子网给每台连接到自身子网中的主机动态分配IP地址(DHCP技术)
网段划分的两种方式
第一种是将IP地址分为5类 不同类别的网段容纳主机数不同A类容纳的主机数过多导致大部分可能没有使用被浪费了
大部分人都申请B类随着互联网的发展IP地址又逐渐够用了因此这种网段划分的方式不常用了
第二种是CIDR方案
引入子网掩码是一个32位的整数通常前面若干bit位全1代表网络号后面全0~全1代表主机号
将IP地址 子网掩码 网络号 为什么要网段划分
在学校中我们的学号也是被划分过的比如前几位代表院号后几位代表学号接下来以一种简化的模型来帮助理解 其中正方形代表每个院的负责人它们之间一定处在一个群且互相知道对方的院号
此时你走在路上捡到一张学生证上面的学号是0100 0011你非常热心想要归还这张卡给本人无奈整个学校人太多总不可能找人一一匹对
于是你将学号与你们的院号进行按位与得到0100 0000由此你能知道该学生一定不是你们院的具体是哪个院的你也不知道你只能把学生证给你们院的负责人
负责人一定知道每个院的负责人是谁也知道每个院的院号根据按位与的结果判断学生一定是计院的于是就交给计院的负责人计院的负责人在它们的计院群通知于是学生证也就物归原主了
在整个过程中每个院就是一台路由器学生证就是要发送的报文
如果没有对每个院进行合理的划分我就需要找遍学校里的所有人才能将学生证物归原主有了划分之后只要进行一次按位与操作就能排除其他所有院只剩一个院大大提高了查找的效率
因此网段划分的真正意义网段划分后未来就能提高报文查找到目标主机的效率
特殊的IP地址
主机地址全为0表示网络号代表整个局域网主机地址全为1表示广播地址用于向同一局域网内的所有主机发送报文
IP地址数量不足
随着互联网的发展目前IP地址的数量早已严重不够用了虽然使用子网掩码的划分方案(CIDR)缓解了IP地址不足的现状但并没有提高IP地址的数量上限不过也出现了解决方案
动态IP地址分配(DHCP)路由器能为接入到自身构建子网的主机动态分配IP地址也就是说不同时间段接入同一局域网的主机IP地址可能相同NAT技术ipv6
2.3 私有IP与公网IP
想要上网得先有网也就是得先组建网络而组建网络离不开各种网络基础设施的建设将光纤入户、站台建设等等所有的这些我们貌似不需要做我们好像只需要买台路由器就有网络了这是因为这些工作已经有人帮我们做了
早在几十年前我们国家政府就开始网络基础设施的建设了也就有了三大运营商它们帮我们做好了建好了基础设施基础设施做好了家家户户才能上网各种互联网公司才有了生存的土壤
根据RFC 1918的规定组建局域网的IP地址只能是这3种
10.*前8位是网络号172.16.* ~ 172.31.*前12位是网络号192.168.*前16位是网络号
其余的IP地址都是公网IP地址
私有IP地址不能出现在公网中不同私网子网/局域网/内网中私有IP地址可以重复虽然存在公网但我们都必须先接入到指定的私网中我们每个人都处于私网中
网络世界 私网 公网 每台路由器能构建子网路由器本身通常是该子网中第一个主机因此它有一个LAN口IP地址同时路由器又在其他路由器构建的子网中在该子网中它是一台主机因此它也有一个WAN口IP地址
假设报文由私网上的一台主机发出主机一定知道自身的网络号发现目的地址不是自己处在的网络将报文交给家用路由器由于私有IP地址不能出现在公网中因此会将源IP地址替换为家用路由器的WAN口IP地址
家用路由器查自身路由表发现没有与之对应的网络号交给运营商路由器同时将源IP地址替换为运营商路由器的WAN口IP地址
运营商路由器处于公网中能直接发送报文到目标主机 上述过程中源IP地址的替换称为NAT转换只在进出私网时才会做转换
直接与公网相连的路由器也称为出入口路由器
可以看到报文都是交给运营商进行转发的这也是为什么我们手机欠费就没网络的原因运营商能直接将你的报文丢弃不做NAT转换和转发
私网我们很好理解但对于公网上面只是简单带过究竟什么是公网呢下面以一种简化的模型举例 在上述模型中国家之间的网络、省份之间的网络、市之间的网络、市内各种公司之间的网络就是公网
2.4 路由 每个工作在网络层的设备都有一张路由表每台主机也不例外这是云服务器上的路由表
当报文转交给路由器时路由器会根据路由表来查询报文应该往哪走
上述例子中一共有3个条目从下往上看将报文中的目的IP地址与条目中的genmask做运算如果与destination相同则交给gateway地址的主机
其中flags如果有G则表示下一跳的地址是某个路由器的地址(gateway)如果没有G则表示目的地址与本机接口相连直接向Iface的接口发送报文即可
如果都匹对完了还是没有则进行缺省路由将报文送至上层路由器
3. IP的分片与组装
ip协议的报头字段中我们还剩三个字段没讲它们主要用来进行IP的分片和组装 为什么要分片与组装 对于传输层它将数据交给网络层要求网络层将数据送至对方主机网络层的确有这个能力但数据链路层具有MTU的限制那只好由网络层自己将报文进行分片到达对方主机再进行组装
需要注意的是报文被分片后如果在传输过程中丢失了任意一个分片则认为整个报文丢失对方的网络层收到分片后不会将剩余的向上交付而是等待tcp超时重传IP再进行分片
那么问题来了一个报文分成多片发送丢包概率高还是作为一个整体发送丢包概率高答案肯定是前者也就是说分片后报文的丢包概率更高因此IP分片不应该称为主流做法应当避免分片
这时网络层就对传输层说了如果你给我交付的数据过大我必须得进行分片这样会导致丢包概率变大从而你就要超时重传对双方都是不利的传输层听完后细想好像确实如此于是制定了策略控制一个报文的大小
该策略是什么呢滑动窗口在很多场景下我们看到tcp滑动窗口内的数据都是被分成一块一块的为什么不合并起来一并发送呢原因就是为了减少IP的分片
上面解释了三个问题为什么要分片为什么不想分片如何做到不分片
如何分片 16位标识标识IP报文的唯一性如果报文被分片了则该报文的每片16位标识都相同 3位标志 第一位保留保留的意思是当前不用但不代表之后不会用 第二位为1表示禁止分片此时如果报文超过MTUIP层就会直接丢弃该报文、 第三位表示更多分片如果报文进行了分片则最后一片该位为0其他片该位为1 13位偏移量 如果每分片为0 如果分片了则为当前分片的有效载荷在整个报文有效载荷中的偏移量必须为8的倍数
IP报文的总长度可能16位的最大可能2^16字节此时用13位偏移量来表示后面分片的偏移量是存不下的因此13位偏移量真实存的值是偏移量 3这也是为什么偏移量必须是8的倍数
如果报文长度超过MTUIP进行分片每个分片最多1500字节这里拿总的报文长度为3000字节举例 如何组装 如何判断收到的报文是否分片 假设报文时分片的则 于是如果 更多分片为0 片偏移量为0 ---- 没有分片的报文 更多分片为1 || 片偏移量不为0 ---- 分片报文的其中一片 如何判断分片的报文收全了 将报文按片偏移量升序排序下个分片中的片偏移量 当前报文的片偏移量 有效载荷的长度逐次检查直到确认有更多分片为0的分片 确认收全后将每个分片中的报头去掉只留下一个报头逐次组装起来交付给上层