自己提供域名做网站,全球邮企业邮箱登录入口,app开发公司哪里好,做二维码电子档相册 找什么网站博客主页#xff1a;花果山~程序猿-CSDN博客 文章分栏#xff1a;Linux_花果山~程序猿的博客-CSDN博客 关注我一起学习#xff0c;一起进步#xff0c;一起探索编程的无限可能吧#xff01;让我们一起努力#xff0c;一起成长#xff01; 目录
一#xff0c;前提
二花果山~程序猿-CSDN博客 文章分栏Linux_花果山~程序猿的博客-CSDN博客 关注我一起学习一起进步一起探索编程的无限可能吧让我们一起努力一起成长 目录
一前提
二IP协议格式
三IP数据包分片
三网段划分
1.子网掩码
网段的理解
例子
2. NAT技术
私有IP与公有IP
NAT工作原理示例
私有ip访问外部网站内部到外部
外部网站响应外部到内部
3. 路由 嗨收到一张超美的图愿你每天都能顺心 一前提 在学习网络层之前我们可以回顾一下上一层——传输层这里以TCP协议为例TCP业绩叫传输控制协议需要保证报文传递的可靠性将应用层下达的数据进行拆分形成一个个TCP段通过序列号保证可靠传输和有序接收通过确认检测重传等机制然后再向网络层进行交付而在接收机器上传输层等待下层向上交付这个中间的过程传输层则不关心。 传输层保证的是数据的可靠性以及数据丢失重传等策略网络层功能又什么 为了避免误导这里用AI回答 网络层主要职责是负责数据包在网络中的传输和路由选择它是实现不同网络之间互联的基础。 二IP协议格式 属性讲解 4位版本号 (version): 指定 IP 协议的版本 , 对于 IPv4 来说 , 就是 4。 4位头部长度 (header length): IP 头部的长度是多少个 32bit, 也就是 length * 4 的字节数 。4bit 表示最大的数字是15, 因此 IP 头部最大长度是 60 字节。通过这个我们可以获取选项长度 8 位服务类型 (Type Of Service): 3 位优先权字段 ( 已经弃用 ), 4 位 TOS 字段 , 和 1 位保留字段 ( 必须置为 0)。4 位 TOS分别表示 : 最小延时, 最大吞吐量, 最高可靠性, 最小成本 . 这四者相互冲突 , 只能选择一个。 对于ssh/telnet这样的应用程序 , 最小延时比较重要 ; 对于 ftp 这样的程序 , 最大吞吐量比较重要。 16位总长度 (total length): IP 数据报整体占多少个字节。一个IP数据报最大是6.5w字节 8位生存时间 (Time To Live, TTL): 数据报到达目的地的最大报文跳数。 一般是 64. 每次经过一个路由 , TTL 1, 一直减到 0 还没到达 , 那么就丢弃了 . 这个字段主要是用来防止出现路由循环。本质是一个计数器每经过一个路由器则-- 三IP数据包分片
第二层属性比较特殊在了解这些之前我们首先理解一下分片概念。
我们知道一个IP数据包支持6.5w字节这里提前透露数据链路层的知识数据链路层每次传输字节数是有限制的假设只支持1500字节那么IP数据包就需要分片同时需要多次传递。对于分片的策略有这个功能但并不推荐原因可以查查资料 进行分片后就容易出现问题如下面问题
1. 在接收方网络层进行组装时如何保证数据片的是同一份IP报文顺序以及完整性
首先我们先认识一下这三个属性信息 16位标识(id): 标识唯一主机发送的报文。如果IP报文在数据链路层被分片了, 那么每一个片里面的这个id都是相同的。——保证分片为同一份IP数据包13位分片偏移(framegament offset): 是分片相对于原始IP报文开始处的偏移。其实就是在表示当前分片在原报文中处在哪个位置。实际偏移的字节数是这个值 * 8 得到的。因此, 除了最后一个报文之外, 其他报文的长度必须是8的整数倍(否则报文就不连续了)。3位标志字段: 第一位保留(保留的意思是现在不用, 但是还没想好说不定以后要用到)。第二位置为1表示禁止分片, 这时候如果报文长度超过MTU, IP模块就会丢弃报文. 第三位表示更多分片, 如果分片了的话, 最后一个分片置为1, 其他是0。类似于一个结束标记。 三网段划分 我们知道IPv4最大可以容纳42亿台主机同时我们知道IPv4也即将面临地址不够用的情况面对不够用的情况人们想出了子网掩码私有IP公网IP的方式来缓解IP地址的枯竭。 首先我们得有一个全球的视角IP地址有32位每个国家也都需要IP地址资源从左侧开始(255.255.255.255)假设美国拿1开头的IP中国拿2开头的IP资源国家以这样的方式来划分IP资源然后在国内再进行划分以中国为例河北省拿21...开头的ip河南拿22...开头的ip通过这样的方式将IP地址划分知道单个主机这样就会形成两个部分也就是要说的 IP 地址有两个部分网络号 主机号 网络号 : 保证相互连接的两个网段具有不同的标识 ; 主机号 : 同一网段内 , 主机之间具有相同的网络号 , 但是必须有不同的主机号 ; 关于网段定义我们后面聊完私有IP公网IP后说。 通过合理设置主机号和网络号 , 就可以保证在相互连接的网络中 , 每台主机的 IP 地址都不相同。 那么问题来了 , 手动管理子网内的 IP, 是一个相当麻烦的事情 . 有一种技术叫做DHCP, 能够自动的给子网内新增主机节点分配IP地址, 避免了手动管理IP的不便. 一般的路由器都带有DHCP功能. 因此路由器也可以看做一个DHCP服务器. 在曾经也有一些如何设置主机号和网络号方案如下
但这方案的弊端也很明显大部分的企业或者组织更愿意选择B类的方案导致B类方案地址缺乏更重要的是并不是所有企业分配到的IP地址都能被使用因此缺少一种动态分配网络号与主机号的占比的方案称为CIDR(Classless Interdomain Routing)由此子网掩码出现。
1.子网掩码 网段的理解
这些IP地址共享相同的网络部分意味着它们位于同一个逻辑网络或者可以无需通过路由器直接相互通信的网络部分。
更具体地说当一个大的IP地址空间被划分为若干小的、可管理的部分时每一个这样的部分就称为一个网段。这个划分过程通常是通过应用一个子网掩码来实现的子网掩码决定哪些位表示网络部分哪些位表示主机部分。
例子
假设我们有一个IP地址 192.168.1.10 和子网掩码 255.255.255.0。
IP地址 192.168.1.10 转换为二进制是 11000000.10101000.00000001.00001010子网掩码 255.255.255.0 转换为二进制是 11111111.11111111.11111111.00000000
通过与运算我们可以确定网络部分
11000000.10101000.00000001.00000000 即 192.168.1.0
所以网段指的是所有具有相同前三部分网络部分的IP地址集合也就是所有形如 192.168.1.x 的地址其中x代表可能的主机号部分范围通常是1到254。在这个例子中192.168.1.0 到 192.168.1.255 就构成了一个网段所有这些地址都在同一个逻辑网络中理论上可以直接互相通信不需要路由器来进行跨网段的路由。 可IPv4的地址仍旧不够用CIDR在一定程度上缓解了IP地址不够用的问题(提高了利用率, 减少了浪费, 但是IP地址的绝对上限并没有增加), 仍然 不是很够用 . 这时候有三种方式来解决 : 动态分配IP地址: 只给接入网络的设备分配IP地址. 因此同一个MAC地址的设备, 每次接入互联网中, 得到的IP地址不一定是相同的;上限没有提高只是提高了利用率IPv6: IPv6并不是IPv4的简单升级版. 这是互不相干的两个协议, 彼此并不兼容; IPv6用16字节128位来表示一个IP地址; 但是目前IPv6还没有普及有一部分原因是NAT技术大大缓解了IPv4的地址缺失;NAT技术(后面会重点介绍); 2. NAT技术
NATNetwork Address Translation网络地址转换技术通过允许一个私有网络内的多个设备共享一个或少数几个公有IP地址访问互联网从而有效缓解了IPv4地址的紧缺问题。这里通过一个简化例子来说明NAT的工作原理
私有IP与公有IP
首先了解一下概念
私有IP地址局域网这些地址在RFC 1918中定义用于内部网络不能直接在互联网上路由。常见的私有IP地址段包括10.0.0.0/8、172.16.0.0/12、192.168.0.0/16。公有IP地址全球级的广域网全球唯一的IP地址可以直接在互联网上路由但数量有限多为一些大型跨国企业。 NAT工作原理示例
假设有一个小型企业网络内部有三台电脑它们的私有IP地址分别为
电脑A: 192.168.1.10电脑B: 192.168.1.11电脑C: 192.168.1.12
这个企业只有一个公有IP地址例如203.0.113.42由路由器管理并用于外部通信。 私有ip访问外部网站内部到外部
电脑A请求访问互联网电脑A想要访问一个外部网站它发送的数据包源IP是其私有IP192.168.1.10。路由器进行NAT转换路由器接收到这个数据包后使用NAPTNetwork Address Port Translation网络地址端口转换技术将数据包的源IP地址替换为公有IP地址203.0.113.42同时记录下这个转换关系源私有IP、源端口到公有IP、新的端口号。数据包转发修改后的数据包现在拥有公有IP地址和一个新的端口号被路由器转发到互联网上。(这里我们可以联想在学习mysql时云服务器向公网开放时要选择接收任一源IP的请求连接你不会知道那个路由器会为你转发)
外部网站响应外部到内部
外部响应当外部服务器响应时它将数据包发送到公有IP地址203.0.113.42和之前路由器分配的新端口号。路由器转换回私有IP路由器根据之前的转换记录识别出这个数据包是给电脑A的然后将目标IP地址和端口号转换回电脑A的私有IP地址192.168.1.10和原来的端口号再将数据包转发给电脑A。
通过这种方式NAT技术使得企业网络内的多台设备可以共享同一个公有IP地址访问互联网极大地节省了公有IP地址的消耗缓解了IPv4地址的紧缺问题。同时由于私有IP地址对互联网是隐藏的这也增加了网络的安全性。 3. 路由 在复杂的网络结构中 , 找出一条通往终点的路线 ; 路由的过程 , 就是这样一跳一跳 (Hop by Hop) 问路 的过程 . 所谓 一跳 就是数据链路层中的一个区间 . 具体在以太网中指从源 MAC 地址到目的 MAC 地址之间的帧传输区间 本质上是数据结构上图论部分感谢兴趣的可以订阅我的高阶数据结构专栏这里就了解一下。 高阶数据结构_花果山~程序猿的博客-CSDN博客 结语 本小节就到这里了感谢小伙伴的浏览如果有什么建议欢迎在评论区评论如果给小伙伴带来一些收获请动动你发财的小手点个免费的赞你的点赞和关注永远是博主创作的动力源泉。