计算机网络——25Internet-Protocol

Internet Protocol

互联网中的网络层

主机、路由器中的网络层功能

在这里插入图片描述

IP数据报格式

在这里插入图片描述

项目说明
ver版本号,如Ipv4就是0100
head len头部的长度,一般头部是20个字节(也就是上图中的5行),但是也有可选项,也就是头部是变长的,因此可以使用head len来计算可选项
type of service数据段的类型,本来为输出队列的调度机制提供参考的,但后来废弃了
length数据报总厂
16-bit的id,flags fragment offset后面的分片/重组
time to live(TTL)可用以ICMP协议
upper layer将负载交给的上层协议,比如说TCP,还是UDP,还是ICMP,实际上是根据端口号区分的
Internet checksum校验头部的

IP分片和重组

  • 网络链路有MTU (最大传输单元) –链路层帧所携带的最大数据长度
    • 不同的链路类型
    • 不同的MTU
  • 大的IP数据报在网络上被分片 (“fragmented”)
    • 一个数据报被分割成若干个小 的数据报
      • 相同的ID
      • 不同的偏移量
      • 最后一个分片标记为0
    • “重组”只在最终的目标主机进行:减少路由器的负担,要是每个路由器都重组再分片压力太大
    • IP头部的信息被用于标识,排序相关分片

在这里插入图片描述

例子:

在这里插入图片描述

  • (接受到了)4000 字节数据报:
    • 20字节头部
    • 3980字节数据
  • MTU = 1500 bytes
    • 第一片:20字节头部+1480字节数据;偏移量:0
    • 第二片:20字节头部+1480字节数据(1480字节应用数据);偏移量:1480/8=185
    • 第三片:20字节头部+1020字节数据(应用数据);偏移量:2960/8=370

IP编址:引论

  • IP地址: 32位标示,对主机或者路由器的接口编址
  • 接口: 主机/路由器和物 理链路的连接处
    • 路由器通常拥有多个接口
    • 主机也有可能有多个接口
    • IP地址和每一个接口关联
  • 一个IP地址和一个接口相关联

在这里插入图片描述

在这里插入图片描述

子网

  • IP地址:
    • 子网部分(高位bits)
    • 主机部分(低位bits)
  • 什么是子网?
    • 一个子网内的节点(主 机或者路由器)它们的IP地址的高位部分相同 ,这些节点构成的网络的一部分叫做子网
    • 子网内节点的分组的收发无需路由器介入(借助交换机即可),子网内各主机可以在物理上相互直接到达 ——只需要交换机即可,一跳可达

在这里插入图片描述

划分子网方法

  • 要判断一个子网, 将每一个接口从主机或者路由 器上分开,构成了一个个网络的孤岛
  • 每一个孤岛(网络)都 是一个都可以被称之为 subnet.

在这里插入图片描述

IP地址类型

IP地址分类

在这里插入图片描述

特殊IP地址

  • 一些约定:
    • 子网(网络)部分全为0,表示本网络
    • 主机部分全为0,表示本主机
    • 主机部分全为1表示,广播地址,这个网络的所有主机
    • 除了前面的类号 全为1——在本地网络广播

在这里插入图片描述

内网(专用)IP地址

  • 专用地址:地址空间的一部份供专用地址使用
  • 永远不会被当做公用地址来分配, 不会与公用地址重复
  • 只在局部网络中有意义,区分不同的设备
  • 路由器不对目标地址是专用地址的分组进行转发
  • 专用地址范围
IP类型专用地址范围MASK
A类10.0.0.0-10.255.255.255255.0.0.0
B类172.16.0.0-172.31.255.255255.255.0.0
C类192.168.0.0-192.168.255.255255.255.255.0

CIDR(无类域间路由)

  • 子网部分可以在任意的位置(而不必是固定的位置)
  • 地址格式: a.b.c.d/x, 其中 x 是 地址中子网号的长度

实例:

在这里插入图片描述

转发表和转发算法

Destination Subnet NumMaskNext hopInterface
202.38.73.0255.255.255.192IPxLan1
202.38.64.0255.255.255.192IPyLan2
DefaultIPzLan0
  • 获得IP数据报的目标地址IP Des addr
  • 遍历转发表中的每一个表项
    • 如 (IP Des addr) & (mask) == destination, 则按照表项 对应的接口转发该数据报
    • 如果都没有找到,则使用默认表项转发数据报,一般是整个网络的出口 default Gateway

如何获得一个IP地址

  • 系统管理员将地址配置在一个文件中
    • Wintel: control-panel->network- >configuration->tcp/ip->properties
    • UNIX: /etc/rc.config
  • DHCP:从服务器中动态获取一个IP地址
    • “plug-and-play”

DHCP: Dynamic Host Configuration Protocol

目标:

  • 允许主机在加入网络的时候,动态地从服务器那里获得IP地址
    • 可以更新对主机在用IP地址的租用期-租期快到了
    • 重新启动时,允许重新使用以前用过的IP地址
    • 支持移动用户加入到该网络(短期在网)

在这里插入图片描述

DHCP工作概况:

阶段含义源地址目标地址
主机上限时广播“DHCP discover”报文问一下有活着的DHCP服务器吗0.0.0.0,32全0的本机地址,因为此时还没有分配ip地址255.255.255.255,(32位全1的广播地址,因为不知道DHCP服务在哪)
DHCP服务器用“DHCP offer”单播提供报文响应DHCP服务器表明自己的存在;并且包含分配给主机的关于ip的配套信息(包括那四项)DHCP服务器的地址255.255.255.255,也是全局广播,根据事务号来区分
主机单播请求IP地址:发送“DHCP request”报文主机向DHCP服务器确定ip配置信息0.0.0.0,也是表示自己的地址255.255.255.255,也是广播
DHCP服务器发送地址:“DHCP ack”报文DHCP把配置信息给主机DHCP服务器的地址255.255.255.255,广播

在这里插入图片描述

示例:

在这里插入图片描述

机构获取ip子网部分

假设某个学校,有八个校区,要获取ip子网

  • 首先从ISP获取大的网络,ISP’s block 11001000 00010111 00010000 00000000 200.23.16.0/20
  • 然后再划分,由于有8个校区,也就是要划分成8个部分,用原有的20位后面的3位来表示子网,从而进行划分

ISP获取地址块

Q:一个ISP如何获得一个地址块?

A:向ICANN申请

  • 分配地址
  • 管理DNS
  • 分配域名,解决冲突

IP层次编址/路由聚集

路由聚集

在这里插入图片描述

最长精确匹配

在这里插入图片描述

NAT: 网络地址转换

原理

在这里插入图片描述

特点:本地网络只有一个有效IP地址

NAT 路由器必须:

  • 外出数据包:替换源地址:端口号为 NAT的IP地址:新的端口号,目标IP和端口不变;远端的C/S将会用NAP IP地址,新端口号作为目标地址
  • 记住每个转换替换对(映射)(在NAT转换表中)源IP:端口 vs NAP IP:新端口
  • 进入数据包:替换目标IP地址和端口号,采用存储在NAT表中的mapping表项,用(源IP,端口)

流程

在这里插入图片描述

优点

省钱:不需要从ISP分配一块地址,可用一个IP地址用于所有的(局域网)设备
可以在局域网改变设备的地址情况下而无须通知外界
可以改变ISP(地址变化)而不需要改变内部的设备地址
安全:局域网内部的设备没有明确的地址,对外是不可见的

NAT的争议和问题

NAT能够篡改接受的分组的端口信息

  • 路由器只应该对第3层做信息处理,而这里对端口号(4层)作了处理
  • 违反了end-to-end 原则
    • 端到端原则:复杂性放到网络边缘
      • 无需借助中转和变换,就可以直接传送到目标主机
    • NAT可能要被一些应用设计者考虑, eg, P2P applications
    • 外网的机器无法主动连接到内网的机器上
  • 问题,NAT穿越: 如果客户端需要连接在NAT后面的服务器,如何操作

地址短缺问题可以被IPv6 解决(因为NAT一开始解决的就是地址短缺的问题)

NAT 穿越问题

在这里插入图片描述

客户端需要连接地址为 10.0.0.1的服务器

  • 服务器地址10.0.0.1 LAN本地地址 (客户端不能够使用其作为目标地址)
  • 整网只有一个外部可见地址: 138.76.29.7

静态配置NAT
方案1: 静态配置NAT:转发 进来的对服务器特定端口连接 请求

  • (123.76.29.7, port 2500) 总是转发到10.0.0.1 port 25000

IGD/UPnP
方案2: Universal Plug and Play (UPnP) Internet Gateway Device (IGD) 协议. 允许 NATted主机可以: 动态分配端口

  • 获知网络的公共 IP地址 (138.76.29.7)
  • 列举存在的端口映射
  • 增/删端口映射 (在租用时间内)

在这里插入图片描述

中继
方案3:中继(used in Skype)

在这里插入图片描述

IPV6协议

目的

  • 初始动机: 32-bit地址空间将会被很快用完,为了增加地址数量
  • 另外的动机:
    • 改变头部格式,帮助加速处理和转发
      • TTL-1(之前的ICPM协议每次都要TTL-2)
      • 头部checksum (之前都会校验头部)
      • 分片 (当MTU小于分组的时候,要分片)
    • 头部格式改变帮助QoS

IPV6数据报

IPv6 数据报格式:

  • 固定的40字节头部
  • IP地址由原先的32位改成了128位(16个字节)
  • 数据报传输过程中,不允许分片

IPV6头部

在这里插入图片描述

  • Priority: 标示流中数据报的优先级(优先级是与非技术方面结合的,比如收费等)
  • Flow Label: 标示多个数据报在一个“flow” ( “flow”的概念没有被严格的定义)
  • Next header: 标示上层协议(就是网络层以上传给哪个协议,TCP/UDP)

和IPv4的其它变化

  • Checksum: 被移除掉,降低在每一段中的处理 速度
  • Options: 允许,但是在头部之外, 被 “Next Header” 字段标示 (Next Header的格式是TLV type-length-value)
  • ICMPv6: ICMP的新版本
    • 附加了报文类型, e.g. “Packet Too Big”
    • 多播组管理功能

从IPv4到IPv6的过渡:隧道

在这里插入图片描述

隧道: 在IPv4路由器之间传输的IPv4数据报中携带IPv6数据报

在这里插入图片描述

在这里插入图片描述

IPv6的应用

  • Google: 8% 的客户通过IPv6访问谷歌服务(当然现在还在增加)
  • NIST: 全美国1/3的政府域支持IPv6
  • 估计还需要很长时间进行部署 (20年)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/768128.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【C语言】指针基础知识(二)

一,指针变量类型的意义 1,指针的类型决定了,对指针解引⽤的时候有多⼤的权限(⼀次能操作⼏个字节)。 例如:char* 的指针解引⽤访问⼀个字节,int* 的指针解引⽤访问四个字节,short*…

[SAP MM] 名词专业术语解释

采购凭证 采购凭证通常是一种证明文件,用于记录和跟踪特定时间点的采购活动 采购凭证是指企业在采购物品或服务时所开立的一种凭证,用于记录采购的信息和流程 采购凭证通常包括采购申请、采购订单、采购合同等,其中采购订单是最常用的采购…

Rust并发编程thread多线程和channel消息传递

安全高效的处理并发是 Rust 诞生的目的之一,主要解决的是服务器高负载承受能力。 并发(concurrent)的概念是指程序不同的部分独立执行,这与并行(parallel)的概念容易混淆,并行强调的是"同…

人工智能之Tensorflow批标准化

批标准化(Batch Normalization,BN)是为了克服神经网络层数加深导致难以训练而诞生的。 随着神经网络的深度加深,训练会越来越困难,收敛速度会很慢,常常会导致梯度消失问题。梯度消失问题是在神经网络中,当前…

chatgpt和 github copilot chat哪个更强

chatgpt大家应该都不陌生 ChatGPT 是由 OpenAI 开发的一种基于 GPT(生成式预训练模型)的聊天机器人。它可以生成语言上下文相关的响应,从而进行自然语言对话。ChatGPT 利用大规模的语言数据进行预训练,并通过微调或在线学习来适应…

微服务(基础篇-002-Ribbon)

目录 Ribbon负载均衡(1) 负载均衡的原理(1.1) 负载均衡策略(1.2) Ribbon-IRule(1.2.1) 修改负载均衡的方法(1.2.2) 懒加载(1.3) 饥饿加载(1…

力扣74---搜索二维矩阵

目录 题目描述: 思路: 代码: 题目描述: 给你一个满足下述两条属性的 m x n 整数矩阵: 每行中的整数从左到右按非严格递增顺序排列。 每行的第一个整数大于前一行的最后一个整数。 给你一个整数 targ…

mac 解决随机出现的蓝色框

macbookair为什么打字的时候按空格键会出现蓝色框? - 知乎

求任意数任何可能的乘方的个位数

形如该题:用到了循环节 1 2 4 8 6 3 9 7 1 4 6 5 6 7 9 3 1 8 4 2 6 9 1 如图为一到十的数字乘方的个位数的循环,可以看出有的数1个数一循环,有的是2个数一循环,有的是4个一循环。 例题: 则4肯定是所有所有个位数n次方…

前端学习笔记 | JS进阶

一、作用域 1、局部作用域 (1)函数作用域 (2)块作用域 let和const会产生块作用域 ,而var不会产生块作用域 2、全局作用域 script标签和js文件的【最外层】变量 3、作用域链 本质:底层的变量查找机制 4、JS…

Docker(二):Docker常用命令

docker 查看docker支持的所有命令和参数。 ➜ ~ docker Management Commands:config Manage Docker configscontainer Manage containersimage Manage imagesnetwork Manage networksnode Manage Swarm nodesplugin Manage pluginssecret …

《手把手教你》系列技巧篇(四十九)-java+ selenium自动化测试-隐藏元素定位与操作(详解教程)

1.简介 对于前端隐藏元素,一直是selenium自动化定位元素的隐形杀手,脚本跑到隐藏元素时位置时报各种各样的错误,可是这种隐藏的下拉菜单又没有办法避免,所以非常头痛,这一篇只为交流隐藏元素自动化定位处理方法以及宏哥…

Docker进阶:Docker-cpmpose 实现服务弹性伸缩

Docker进阶:Docker-cpmpose 实现服务弹性伸缩 一、Docker Compose基础概念1.1 Docker Compose简介1.2 Docker Compose文件结构 二、弹性伸缩的原理和实现步骤2.1 弹性伸缩原理2.2 实现步骤 三、技术实践案例3.1 场景描述3.2 配置Docker Compose文件3.3 使用 docker-…

微软开源Garnet高性能缓存服务安装

Garnet介绍 Garnet是一款微软研究院基于C#开发而开源的高性能缓存服务,支持Windows、Linux多平台部署,Garnet兼容Redis服务API,在性能和使用架构上较Redis有很大提升(官方说法),并提供与Redis一样的命令操…

Rust egui(3) 增加多个tab

话说不知道咋写,要不直接上git patch吧。代码都是移植的官方demo,核心改动就是把原来的line_demo换成了plot_demo,里面实现多个ui,然后点击tab标题会切换不同的ui。 如下图,Lines和Markers两个不同的标签对应不同的ui。…

力扣HOT100 - 11. 盛最多水的容器

解题思路&#xff1a; 双指针&#xff0c;从左右两边往内侧夹逼&#xff0c;遍历后得到最大值 class Solution {public int maxArea(int[] height) {int i 0, j height.length - 1, res 0;while(i < j) {res height[i] < height[j] ? Math.max(res, (j - i) * heig…

【C++】关联式容器——map和set

1 关联式容器 STL中我们常用的部分容器&#xff0c;比如&#xff1a;vector、list、deque、forward_list(C11)等&#xff0c;这些容器统称为序列式容器&#xff0c;因为其底层为线性序列的数据结构&#xff0c;里面存储的是元素本身。 那什么是关联式容器呢&#xff1f;它与序…

qt Qt Remote Object(QtRO)实现进程间通信

简介 Qt Remote Object简称QtRO&#xff0c;这是Qt5.9以后官方推出来的新模块&#xff0c;专门用于进程间通信&#xff08;IPC&#xff09;。是基于Socket来封装的&#xff0c;兼容LPC和RPC。LPC即Local Process Communication&#xff0c;而RPC是指Remote Process Communicat…

Camera入门基础知识

一、camera介绍 1.1 camera硬件组成 camera一般由Lens、VCM音圈马达、底座支架、Sensor、Driver IC、output interface组成。如下图: 这里面要注意的是有些摄像头模组有VCM,有些则没有,有些output interface输出的是CSI信号,有的输出的是串行信号,需要接解串器。…

全新的分布式锁,功能简单且强大

分布式锁是分布式系统中一个极为重要的工具。 目前有多种分布式锁的设计方案&#xff0c;比如借助 redis&#xff0c;mq&#xff0c;数据库&#xff0c;zookeeper 等第三方服务系统来设计分布式锁。 tldb 提供的分布式锁&#xff0c;主要是要简化这个设计的过程&#xff0c;提…