网站开发过程模型,注册域名免费永久,衡阳网站优化外包价格,青岛市网站建设目录 前言#xff1a;
1.IP协议
1.1.IP协议格式
1.2.网段划分
1.2.1.知识引入 1.2.2.IP地址划分和子网掩码
1.3.IP地址分类
1.3.1.特殊IP地址
编辑
1.3.2.私有IP和公网IP
1.3.3.浅谈NAT技术
1.4.路由
1.4.1.什么是路由
1.4.2.路由表 1.5.网络层数据切片和组装…目录 前言
1.IP协议
1.1.IP协议格式
1.2.网段划分
1.2.1.知识引入 1.2.2.IP地址划分和子网掩码
1.3.IP地址分类
1.3.1.特殊IP地址
编辑
1.3.2.私有IP和公网IP
1.3.3.浅谈NAT技术
1.4.路由
1.4.1.什么是路由
1.4.2.路由表 1.5.网络层数据切片和组装
2.NAT和NAPT技术
2.1.NAT
2.2.NAPT
2.3.存在的缺陷
3.代理服务器
3.1.正向代理
3.2.反向代理
3.3.NAT技术和代理服务器技术 前言
网络层协议解决什么问题
当我们在上层实现了应用层协议将字符流数据转化为结构体数据在传输层完成了通信的实现数据的传输但是数据最终还是得从本主机输出从网络中进入到远端的另外一台主机。 网络层协议IP解决的就是两台主机间数据的转移也就是提供了一种将数据包从一台主机送到一台主机的能力。 传输层协议TCP/UDP解决的是网络传输的可靠性将数据传输到相应的应用程序应用层协议HTTP/HTTPS解决的是将字节流数据转化为结构体数据 如图主机B发送数据包经由若干个路由器最终到达主机C 基本概念 主机: 配有IP地址, 但是不进行路由控制的设备;路由器: 即配有IP地址, 又能进行路由控制;节点: 主机和路由器的统称路由控制是路由器根据路由控制表转发数据包的过程。 1.IP协议
1.1.IP协议格式 32位源IP和目的IP 表示发送端的ip地址和数据报文的目的主机地址。 4位版本
对应着IP协议版本 IPV4表示4个字节表示IP地址IPV616个字节表示地址 4位首部长度
和TCP协议的4位首部长度一致单位也是4字节大小最大为40字节 8位协议
用来识别数据报文是TCP协议还是UDP协议防止不同类型的协议之间进行通信 16位总长度
表示整个报文的长度并且已知报头长度固定为20字节那么通过报文长度 报头长度 有效载荷长度即可分离报文和报头 8位服务类型
用于数据包发送质量、效果优先级的选择。 3位优先权字段(已经弃用)4位TOS字段和1位保留字段(必须置为0)。4位TOS分别表示最小延时最大吞吐量最高可靠性最小成本。这四者相互冲突只能选择一个。对于ssh/telnet这样的应用程序最小延时比较重要 对于ftp这样的程序, 最大吞吐量比较重要。 8位生存时间TTL
报文在路径转发过程中经由路由器的跳数上限不允许报文在路径节点进行无意义的节点转换造成资源的浪费 16位标识、3位标志、13位片偏移
因为在网络层的下一层数据链路层最大允许发出报文长度为MTU1500也就是网络层形成报文之后可能大小会大于MTU这时候就需要进行分片、多次发送。 16位标识(id)唯一的标识主机发送的报文。如果IP报文在数据链路层被分片了那么每一个片里面的这个id都是相同的用来区分不同的报文3位标志字段第一位保留(默认填0暂时没有意义)。第二位置为1表示禁止分片这时候如果报文长度超过MTUIP模块就会丢弃报文。 第三位表示更多分片 如果分片了的话最后一个分片置为1其他是0。类似于一个结束标记.13位分片偏移是分片相对于原始IP报文开始处的偏移。其实就是在表示当前分片在原报文中处在哪个位置。实际偏移的字节数是这个值 * 8 得到的。因此除了最后一个报文之外其他报文的长度必须是8的整数倍(否则报文就不连续了) 1.2.网段划分
1.2.1.知识引入
IP地址分为两个部分, 网络号和主机号 网络号: 保证相互连接的两个网段具有不同的标识;主机号: 同一网段内主机之间具有相同的网络号但是必须有不同的主机号; 例如本机ip地址为127.0.0.1其中127.0.0.为网络号1为主机号 如图 路由器连接了两个局域网而在同一个局域网我们发现网络号是相同的不同的是主机号所以我们就能够通过IP地址定位到网络号和主机号进而找到唯一的主机 路由器的作用 连接不同的网络构建子网进行数据包的路由和转发 1.2.2.IP地址划分和子网掩码
IP地址划分
在1.2.1.中我们知道IP地址划分成了网络号和主机号保证在互相连接的网络中每一台主机的ip地址都不同那么这时就会出现一个问题网络号和主机号怎么设计IP地址如何进行划分 如图所示为过去的一种IP地址划分的方案为了应对不同的场景下对应局域网的主机数量的网络方案。 随着Internet的飞速发展这种划分方案的局限性很快显现出来大多数组织都申请B类网络地址导致B类地址很快就分配完了而A类却浪费了大量地址 例如申请了一个B类地址理论上一个子网内能允许6万5千多个主机。A类地址的子网内的主机数更多。然而实际网络架设中不会存在一个子网内有这么多主句的情况。因此大量的IP地址都被浪费掉了。 我们也可以从网络的拓扑结构两层看出来上述方案的IP地址利用率较低。 因此这样的固定长度划分方案漏洞过大并且当前国际上主流的IP地址版本为IPV4即用4个字节32位来表示全球上的所有主机理论上最多表示42亿台主机所以IP地址也是一种资源那么我们就需要采取其他方案在实现IP划分的同时又保证IP地址利用率。 子网掩码 针对这种情况提出了新的划分方案称为CIDR(Classless Interdomain Routing) 引入一个额外的子网掩码(subnet mask)来区分网络号和主机号子网掩码也是一个32位的正整数。通常用一串 0 来结尾将IP地址和子网掩码进行 按位与 操作得到的结果就是网络号网络号和主机号的划分与这个IP地址是A类、B类还是C类无关 值得一提的是子网掩码以一串“1”开头以一串“0”结尾。 如图添加了子网掩码这个模块后我们发现同一个IP地址转化后表示的子网内的地址范围存在不同那为什么会导致这种不同呢接下来我们通过下图来理解一下 看到这里大家可能理解了子网掩码的作用但是应该没有理解到它的魅力那我们通过A类方案的子网掩码化来体会一下实际上A类方案不进行子网构建一般为B为方案 对比原先的IP地址划分方案我们发现网络拓扑
原先的IP地址划分结构为大网络-主机添加子网掩码后大网络-小网络-主机
所以我们实现了将没有利用到的主机号转化成了“子网的网络号”进而提升了IP地址的利用率。
1.3.IP地址分类
1.3.1.特殊IP地址 将IP地址中的主机地址全部设为0就成为了网络号代表这个局域网将IP地址中的主机地址全部设为1就成为了广播地址用于给同一个链路中相互连接的所有主机发送数据包127.*的IP地址用于本机环回(loop back)测试通常是127.0.0.1 1.3.2.私有IP和公网IP
如果一个组织内部组建局域网IP地址只用于局域网内的通信而不直接连到Internet上理论上使用任意的IP地址都可以但是RFC 1918规定了用于组建局域网的私有IP地址的规则 10.*,前8位是网络号共16,777,216个地址172.16.到172.31.,前12位是网络号共1,048,576个地址192.168.*前16位是网络号共65,536个地址 包含在这个范围中的都称为私有IP内网ip其余的则称为全局IP(或公网IP) 我们的计算机是接入到运营商供给的私有网络的而我们平时使用的云服务器就是公网IP。 如图我们分层将广域网分为若干子网然后子网接着划分为下一级子网最终在连接上使用私有IP的主机最终实现从广域网到局域网从公有ip到私有ip。将子网划分提高了定位和查找主机的效率。 一个路由器可以配置两个IP地址一个是WAN口IP一个是LAN口IP(子网IP)路由器LAN口连接的主机都从属于当前这个路由器的子网中不同的路由器子网IP其实都是一样的(通常都是192.168.1.1)子网内的主机IP地址不能重复。但是子网之间的IP地址就可以重复了只要WAN口IP不同即可区分每一个家用路由器其实又作为运营商路由器的子网中的一个节点。这样的运营商路由器可能会有很多级最外层的运营商路由器WAN口IP就是一个公网IP了。 1.3.3.浅谈NAT技术 子网内的主机需要和外网进行通信时路由器将IP首部中的IP地址进行替换(替换成WAN口IP)这样逐级替换最终数据包中的IP地址成为一个公网IP。这种技术称为NAT (Network Address Translation网络地址转换). 那么我们实际上进行网络通信时数据报文在网络中是如何传送到服务器的呢
首先内网IP不会出现在公网通信中所以内网如果需要实现通信就得一层一层通过路由器向上转发到运营商路由器中公网ip发送。并且向上转发时需要将源IP替换成路由器的WAN口IP这又是为什么呢 因为路由器对应的子网IP不是表示当前路由器的标识而是当前路由器的下一层子网的标识而WAN口IP才是路由器网络中区分唯一路由器的标识 这时我们就可以理解了NAT技术逐级将当前的IP地址替换为当前对应的WAN口IP直到转换为公网IP也就是最上层的运营商路由器的WAN口IP。
1.4.路由
1.4.1.什么是路由
我们知道数据报文离开发送端后并不是直接发送到接收端主机的需要不断的通过中间节点路由器转发不断路由直到到达接收端 路由的过程就是这样一跳一跳 “问路” 的过程。“一跳”就是数据链路层中的一个区间。具体在以太网中指从源MAC地址到目的MAC地址之间的帧传输区间 在智能手机未普及的时代人们去一个很远的地方是需要进行不断的问路一步一步的从一个终点走到一个新的起点再继续问路直到最后走到目的地。 IP数据包的传输过程也和问路一样 当IP数据包到达路由器时路由器会先查看目的IP路由器决定这个数据包是能直接发送给目标主机还是需要发送给下一个路由器依次反复一直到达目标IP地址 1.4.2.路由表
既然在网络中数据报文是通过路由器在主机之间进行转发的那么就会出现一个问题数据报文怎么知道自己要去往哪一个路由器进行路由转发呢这时IP协议就规定了每一个路由器节点中必须维护一张路由表当数据报文到达一个节点时通过查询路由表来获取下一个路由器的IP地址。 如图为某一个路由器主机的路由表。 Destination目的地址Gateway下一条地址Genmask子网掩码Use Iface发送接口 数据报文在路由器转发的过程 数据报文在网络中转发的过程本质是通过不同主机的路由表和子网掩码按位与接着从相应地址的接口传到下一个主机再继续这个循环 我们可以借助route命令来查看当前主机的路由表 1.5.网络层数据切片和组装
我们在1.1.中提及16位标识、3位标志、13位片偏移这三个字段并且我们提及了MTU即Maximum Transmission Unit最大传输单元它是计算机网络中用于描述数据帧的最大长度的一个参数。所以数据切片是为了解决数据帧过大的问题
那么网络通信的过程中是如何实现数据的切片和组装的呢 切片规则 IP数据报文总大小为1500字节包括20字节的固定报头当数据报文超过1500字节时切片的第一片3位标志为001并且13位片偏移量为0切片的最后一片的3位标志为0并且13位偏移量等于其他 如图我们首先进行切片因为MTU1500所以我们需要切成三片接着将这三片数据传入数据链路层最终发送到对端主机 而当我们在对端主机接收到许多数据帧然后将帧头去掉后传到网络层后我们如何找到这些切片后的数据报文并把他们组装到一起 组装规则 必须按照顺序、并且组装完整成分片前的完整的IP数据报文第一个切片的3位标志位001并且13位偏移量为0根据相同的16位标识来对分片的报文进行组装 通过图上这种方式我们就可以分别找到若干个段切片后的IP报文接着我们保留第一个切片的报头把其他切片报头除去按照顺序将切片的所有IP报文恢复成切片前的完整的IP报文传到传输层中。这就是数据的组装。 从传输层数据大小设置来替代数据切片
然而我们不得不承认切片并不是一个好的传输策略首先切成若干份可能会增加丢包的风险这时就会导致数据的传输需要消耗更加多的资源那么我们如何解决这个问题呢 我们知道IP报文需要进行切片的根本原因就是 数据链路层存在最大传输单元MTU 即IP层向下转发的数据报文过大也可以说是传输层的TCP/UDP报文过大那么我们就认为规定单次向网络层传输的字节数不超过 MSS MTU - IP协议报头大小 - 以太网数据报头大小 这样我们就尽量避免了数据的切片和组装但是实际应用上我们还是运行这种情况的出现…… 2.NAT和NAPT技术
2.1.NAT
我们在1.3.3中提及了NAT技术是将内网IP通过局域网中的路由器在向上转发的过程中一步一步地将内网IP转化为WAN口IP最终以公网IP的形式进行通信。
这个技术的提出是为了解决IPV4协议IP地址数量不充足的问题。 NAT能够将私有IP对外通信时转为全局IP。也就是就是一种将私有IP和全局IP相互转化的技术方法很多学校、家庭、公司内部采用每个终端设置私有IP而在路由器或必要的服务器上设置全局IP全局IP要求唯一但是私有IP不需要在不同的局域网中出现相同的私有IP是完全不影响的 所以当我们将公网不断划分成子网就可以在保证同一个子网不出现相同私有IP的情况下在不同的子网中使用相同的私有IP。 但是我们回顾1.3.3.中是从子网向公网进行发送我们实现NAT的转换但是我们如何从公网来找到这个发送的主机并发回数据报文呢这时我们引入了NAPT技术…… 2.2.NAPT
首先我们要找到这一台主机我们可以反向地通过这个NAT路由器向下查找但是同一时间下NAT路由器所构成的子网中会存在大量的用户在进行通信我们怎么知道发往那个主机呢所以与NAT技术不同的是NAPT通过IP 端口号来解决这个问题
同一子网多主机发送情景 在发送数据报文时我们需要将子网IP通过路由器转为WAN口IP这时我们发现我们可以借助子网主机IP地址端口就可以确定子网中唯一一个确定的进程网络通信本质上是进程间通信并且我们在NAT路由器中维护一张转换表将“子网主机IP地址端口目的主机地址”映射为“NAT路由器IP地址端口目的主机地址”显然这个在公网中也对应着唯一一个进程此时我们就能够在多主机的情况下对应不同的主机的不同进程。 从公网中获取信息 我们已经完成了这个映射表的构建当“进程”在公网间进行通信时就是是再次通过这个映射表反向映射找到子网中的唯一一台主机的唯一一个进程最终实现了通信。 不过值得一提的是这个映射表中是互为KV结构的也就是可以实现互相映射在映射表中都是唯一的。并且如果同一个子网的不同的两台主机都用同一个端口号这样映射到路由器时的端口号会出现不同。
2.3.存在的缺陷 无法从NAT外部向内部服务器建立连接这也保证了在未建立连接之前其他的主机无法对内网的主机发送消息装换表的生成和销毁都需要额外开销通信过程中一旦NAT设备异常即使存在热备所有的TCP连接也都会断开 3.代理服务器
3.1.正向代理 定义 正向代理是一种代理服务器配置方式它作为一个媒介代表客户端与目标服务器进行通信。客户端通过正向代理发送请求并将响应转发给客户端伪装了客户端的真实身份。 特点 隐藏客户端身份正向代理隐藏了客户端的真实IP地址和其他相关信息提供了更高的隐私和安全性。访问限制资源正向代理的典型用途是为在防火墙内的局域网客户端提供访问Internet的途径也可以用于访问原来无法访问的网络资源如某些网站或服务。缓存特性正向代理还可以使用缓冲特性减少网络使用率加速资源访问。 应用场景 网络代理访问原来无法访问的网络资源。局域网代理上网如局域网中电脑A可以上网电脑B不能上网可以将A作为代理上网服务使B也能上网。网关代理对客户端访问授权上网进行认证。 根据我们现实的例子学校的局域网本质上就是使用了正向代理服务器的技术能够缓存一些常被使用的数据实现减少对同一份资源的访问需要不断的从公网中获取。并且可以便于管理用户的网络行为……
3.2.反向代理 定义 反向代理是指用户不需要知道目标服务器的地址也不需要在用户端做任何设定可以直接通过访问反向代理服务器来获得目标服务器的资源。反向代理服务器位于用户与目标服务器之间但对于用户而言反向代理服务器就相当于目标服务器。 特点 提高安全性反向代理隐藏了真实的服务器IP地址提高了系统的安全性和隐私性。加快访问速度反向代理服务器通常可用来作为Web加速即使用反向代理作为Web服务器的前置机来降低网络和服务器的负载提高访问效率。功能丰富反向代理还可以实现负载均衡、安全防护、缓存、压缩、路由和SSL加密等功能。 应用场景 服务器代理保证目标服务器的安全将反向代理服务作为公网访问地址目标服务器是内网其他服务器。负载均衡通过反向代理服务器分发流量到多台服务器上实现负载均衡保证服务的可用性和稳定性。DNS服务DNS可以映射1个或多个目标服务器。 关于反向代理服务器的例子一般来说公司中会有许多的后端服务器来处理用户发出的网络请求那么这时如果我们把所有的IP地址暴露给用户使用第一是不方便使用第二可能会出现某一项服务器得到较高的使用而部分的服务器使用不频繁也就是出现负载不均衡问题。这时我们构建一个承载量大的反向代理服务器并只暴露这个服务器给用户接着接收到用户请求之后均衡分配给后端的其他服务器来处理请求。这时我们就完成了负载均衡与此同时我们也能够较好的保证了服务的安全性。
3.3.NAT技术和代理服务器技术 路由器往往都具备NAT设备的功能通过NAT设备进行中转完成子网设备和其他子网设备的通信过程代理服务器看起来和NAT设备有一点像。客户端像代理服务器发送请求代理服务器将请求转发给真正要请求的服务器。服务器返回结果后代理服务器又把结果回传给客户端