| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 网络协议 -> 哈工大计算机网络第四章——网络层复习 -> 正文阅读 |
|
[网络协议]哈工大计算机网络第四章——网络层复习 |
目录 1. 网络层服务在从发送主机向接收主机传送数据段(segment)的过程中,发送主机的网络层取得传输层的报文段,将报文段封装到数据报(datagram)中,然后向相邻的路由器发送数据报。接收主机的网络层接收来自相邻路由器的数据报,提取传输层报文段,向传输层交付。 ? 每个主机和路由器都运行网络层协议 ? 路由器检验所有穿越它的IP数据报的头部域,问题为决策如何处理IP数据报。路由器不允许应用与传输层协议,只有网络层以下的部分。 路由与转发 转发(forwarding): 将分组从路由器的输入端口转移到合适的输出端口,是路由器本地动作,时间很短。 路由(routing): 确定分组从源到目的经过的路径,需要路由算法 (routing algorithms)。是网络范围的处理过程,时间相对较长。 转发表:路由器检查到达分组的一个或多个字段值,使用这些值在转发表中索引,进而转发分组。 路由算法(协议)确定通过网络的端到端路径,转发表确定在本路由器如何转发分组 网络层核心功能-连接建立 数据分组传输之前两端主机需要首先建立虚拟/逻辑连接,由网络设备(如路由器)参与连接的建立。 传输与网络的对比 网络层连接: 两个主机之间 (?路径上的路由器等网络设备参与其中) 传输层连接: 两个应用进程之间(对中间网络设备透明) 网络层服务模型 ?无连接服务(connection-less service),典型:数据报网络(datagram network ) ? 不事先为系列分组的传输确定传输路径 ? 每个分组独立确定传输路径 ? 不同分组可能传输路径不同 ?连接服务(connection service),典型:虚电路网络(virtual-circuit network ) ? 首先为系列分组的传输确定从源到目的经过的路径 (建立连接) ? 然后沿该路径(连接)传输系列分组 ? 系列分组传输路径相同 ? 传输结束后拆除连接 2. 虚电路网络与数据报网络虚电路网络 虚电路:一条从源主机到目的主机,类似于电路的路径(逻辑连接) ,采用分组交换的方式。每个分组的传输利用链路的全部带宽。源到目的路径经过的网络层设备共同完成虚电路功能 通信过程: 呼叫建立(call setup)→数据传输 →拆除呼叫 每个分组携带虚电路标识(VCID),而不是目的主机地址。虚电路经过的每个网络设备 (如路由器)都维护每条经过它的虚电路连接状态。链路、网络设备资源(如带宽 、缓存等)可以面向VC进行预分配。预分配资源=可预期服务性能,如ATM的电路仿真(CBR) 与电路的区别:1. 不进行电路的资源分配。 2. 都需要建立路径 3. 有时会进行网络资源预留,达到电路级的性能。 虚电路包括: 1. 从源主机到目的主机的一条路径 2. 虚电路号(VCID), 沿路每段链路一个编号 3. 沿路每个网络层设备(如路由器),利用转发表记录经过的每条虚电路 VC实现:沿某条虚电路传输的分组,携带对应虚电路的VCID,而不是目的地址。同一条VC ,在每段链路上的VCID通常不同,路由器转发分组时依据转发表改写/替换虚电路号 虚电路网络在连接建立时也需要解决路由选择问题,同时也需要进行虚电路的维护管理。 ?虚电路信令协议:用于VC的建立、维护与拆除,应用于虚电路网络中。
网络层无连接,每个分组携带目的地址。路由表根据分组的目的地址转发分组。基于路由协议/算法构建转发表,在分组到达时检索转发表。每个分组独立选路。 路由算法(协议)确定通过网络的端到端路径,转发表确定在本路由器如何转发分组 在转发表中,满足最长前缀匹配优先。在检索转发表时,优先选择与分组目的地址匹配前缀最长的入口(entry)。 数据报网络与虚电路网络的区别: Internet (数据报网络) ? 计算机之间的数据交换。是“弹性”服务,没有严格时间需求 ? 链路类型众多。特点、性能各异,但统一服务困难 ? “智能”端系统 (计算机) ,可以自适应、性能控制、差错恢复 ? 简化网络, 复杂“边缘” ATM (VC网络) ? 电话网络演化而来 ? 核心业务是实时对话: ? 严格的时间、可靠性需求 ? 需要有保障的服务 ? “哑(dumb)” 端系统(非智能) ? 电话机 ? 传真机 ? 简化“边缘”, 复杂网络 3. 路由器体系结构两个核心功能:1. 运行路由算法/协议? 2. 将数据报从入口到输出端口 分为: 1. 输入端口: 终结入物理层链路的物理层功能;与位于入链路层远端的数据链路层交互来执行链路层功能。执行查找功能,通过查询转发表决定路由器的输出端口 2. 交换结构:交换结构将路由器的输入端口连接到输出端口。 3. 输出端口:存储交换结构接收的分组,执行必要的链路层和物理成功能在输出链路上出书分组。 4. 路由选择处理器:执行控制平面功能。在传统路由器中执行路由协议,维护路由选择表与关联链路状态。 4. IP协议网络层功能: ?IP数据报格式 ? 版本号:占4位,IP协议的版本号有?4→IPv4,6 → IPv6 ? 首部长度:占4位,以4个字节为单位,如果为5,意味着首部长度为20(5×4)字节 ? 服务类型(TOS):字段占8位,指示期望获得哪种类型的服务。只有在网络提供区分服务(DiffServ)时使用,通常IP分组的该字段(第2字节)的值为00H ? 总长度:占16位,为IP分组的总字节数。最大IP分组的总长度:65535B,最小的IP分组首部:20B。IP分组可以封装的最大数据:65535-20=65515B ? 生存时间(TTL):占8位,是IP分组在网络中可以通过的路由器数。每次转发这个分组,TTL减一,如果TTL为0,丢弃分组。 ? 协议:占8位,指示IP分组封装的数据包的协议。实现复用分用,6为TCP,表示封装的为TCP段;17为UDP,表示封装的是UDP数据报。 ? 首部校验和:占16位,实现IP分组的差错检测。计算时,将此字段置0,计算其他字段之和。采用反码算数运算求和,和的反码作为首部校验和字段。 ? 源IP地址、目的IP地址:占32位,标识发送分组的源主机/路由器(网络接口)和接收分组的目的主机/路由器 (网络接口)的IP地址 ? 选项字段:长度可变,在1-40B之间,携带安全、源选路径、时间戳和路由记录等内容,实际很少使用。 ? 填充:长度可变,范围在0-3B之间,目的在不一起首部,符合32位对其,保障首部长度是4字节的整数倍。 IP分片与重组 MTU(最大传输单元):链路层数据帧可封装数据的上限,不同链路的MTU不同。 大IP分组向较小MTU链路转发时,可以被“分片”,分成多个IP分组,IP分片到达目的主机后进行“重组”。IP首部的相关字段用于标识分片以及确定分片的相对顺序 ? 标识字段:占16位,标识一个IP分组。IP协议利用一个计数器,每产生IP分组计数器加1,作为该IP分组的标识 ? 标志位:占3位,由保留位,DF (Don't Fragment) 和MF (More Fragment) 组成。 DF =1:禁止分片; DF =0:允许分片 MF =1:非最后一片; MF =0:最后一片(或未分片) ? 片偏移:占13位,一个IP分组分片封装原IP分组数据的相对偏移量 ,以8字节为单位进行计算 IP分片过程 假设原IP分组总长度为L,待转发链路的MTU为M。若L>M,且DF=0,则可以分片。分片时每个分片的标识复制原IP分组的标识。通常分片时,除最后一个分片,其他分片均分为MTU允许的最大分片。一个最大分片可封装的数据应该是8的倍数,因此,一个最大分片可封装的数据为: 需要分片数量: 每片的块偏移: 每片的总字段长度: 每片的MF标志位: IP编址 接口(interface): 主机/路由器与物理链路的连接,实现网络层功能。路由器通常有多个接口,主机通常只有一个或两个接口 (e.g.,有线的以太网接口,无线的802.11接口) IP地址为32比特(IPv4)编号标识主机、路由器的接口。IP地址与每个接口关联,编址即为接口分配IP地址。IP地址采用以下形式:网络号(NetID) – 高位比特,主机号(HostID) –CID特 IP子网:IP地址具有相同网络号的设备接口,不跨越路由器(第三及以上层网络设备)可以彼此物理联通的接口。 ?其中每个标蓝的地方都是一个IP子网,路由器之间的链路为特殊的IP子网,一共6个IP子网。 ?“有类”编址 特殊IP地址
IP地址:由以下部分组成:网络号(NetID) – 高位比特,子网号(SubID) – 原网络主机号部分比特,主机号(HostID) – 低位比特? ? 子网掩码:NetID、SubID位全取1,HostID位全取0,由子网地址加子网掩码确认子网大小。 应用:将IP分组的目的IP地址与子网掩码按位与运算,提取子网地址 CIDR 无类域间路由(CIDR: Classless InterDomain Routing) 融合子网地址与子网掩码,方便子网划分。采用无类地址格式:a.b.c.d/x,其中x为前缀长度 路由聚合 采用CIDR可以提高IPv4 地址空间分配效率和高路由效率。将多个子网聚合为一个较大的子网,构造超网(supernetting)。 层次编址可以使得路由信息通告更加高效。采用最长前缀匹配优先原则。 5. DHCP协议——动态主机配置协议主机获得IP地址的方式: 1. 硬编码——静态配置 ?2. 动态主机配置协议——DHCP DHCP允许主机主动获取一个IP地址。主机从服务器动态获取IP地址、子网掩码、默认网关地址 、DNS服务器名称与IP地址。由于DHCP具有将主句连接进入一个网络的网络相关的自动能力,故被称为“即插即用”协议(零配置协议)。DHCP允许地址重用,支持在用地址续租,支持移动用户加入网络。 对于新到达的主机,有4个步骤 1. DHCP服务器发现。新到达的主机需要发现与之交互的DHCP,使用DHCP发现报文。客户生成的IP数据报使用广播地址进行广播,向端口67发送报文。 2. DHCP服务器提供。DHCP服务器收到发现报文后,用DHCP提供报文进行响应。仍然使用广播地址(主机此时还没IP地址),提供的报文包括发现报文的事务ID、推荐的IP地址、网络掩码和IP地址租用期(IP地址有效时间量)。 3. DHCP请求。新的主机从一个或多个服务器的提供中选一个,并向选择的服务器提供DHCP请求报文进行响应,表示选择这个IP地址,将所有参数传回。 4. DHCP ACK。服务器使用DHCP ACK报文,对主机的请求报文进行响应,表示主机被分配上了这个IP地址,并在报文中证实这些参数。 DHCP协议在应用层 实现,请求报文封装到 UDP数据报中。一直采用IP广播的方式,或链路层广播 (e.g. 以太网广播) DHCP服务器构造 ACK报文 ? 包括分配给客户的IP地址、子网掩码、默认网关、DNS服务器地址? 6. NAT——网络地址转换动机 ? 只需/能从ISP申请一个IP地址,可能出现IPv4地址耗尽 ? 本地网络设备IP地址的变更,无需通告外界网络 ? 变更ISP时,无需修改内部网络设备IP地址 ? 内部网络设备对外界网络不可见,即不可直接寻址(安全) NAT的实现 利用(NAT IP地址,新端口号)替换每个外出IP数据报的(源IP地址,源端口号)。将每对(NAT IP地址, 新端口号) 与(源IP地址, 源端口号)的替换信息存储到NAT转换表中。根据NAT转换表,利用(源IP地址, 源端口号)替换每个进入内网IP数据报的(目的IP地址,目的端口号),即(NAT IP地址, 新端口号)。 NAT争议 ? 路由器应该只处理第3层功能 ? 违背端到端通信原则,应用开发者必须考虑到NAT的存在,e.g., P2P应用 ? 地址短缺问题应该由IPv6来解决 NAT穿透 问题:客户期望连接内网地址为 10.0.0.1的服务器,但客户不能直接利用地址 10.0.0.1直接访问服务器。对外唯一可见的地址是NAT 地址: 138.76.29.7 解决方案1: 静态配置NAT ,将特定端口的连接请求转发给服务器,比如?(138.76.29.7, 2500) 总是转发给(10.0.0.1, 25000)。 解决方案2: 利用UPnP (Universal Plug and Play) 互联网网关设备协议 (IGD-Internet Gateway Device ) 自动配置: 学习到NAT公共IP地址 (138.76.29.7) 。在NAT转换表中,增删端口映射 解决方案3: 中继(如Skype) 。NAT内部的客户与中继服务器建立连接,外部客户也与中继服务器建立连接。中继服务器桥接两个连接的分组 7. ICMP协议——互联网控制报文协议ICMP协议被主机和路由器用来彼此沟通网络层的信息。典型用途为差错报告和网络探询。 ICMP通常被认为是IP的一部分,但体系结构中位于IP之上,因为ICMP报文承载在IP分组中。 两类ICMP报文 (1)差错报告报文(5种) ? 目的不可达 ? 源抑制(Source Quench) ? 超时/超期 ? 参数问题 ? 重定向 (Redirect) (2)网络探询报文(2组) ? 回声(Echo)请求与应答报文(Reply) ? 时间戳请求与应答报文 不发送ICMP差错报文的特殊情况 ? 对ICMP差错报告报文不再发送 ICMP差错报告报文 ? 除第1个IP数据报分片外,对所有后续分片均不发送ICMP差错报告报文 ? 对所有多播IP数据报均不发送 ICMP差错报告报文 ? 对具有特殊地址(如127.0.0.0 或 0.0.0.0)的IP数据报不发送 ICMP 差错报告报文 ICMP报文格式与承载方法
类型和编码列表 (感觉不可能考) 应用举例:Traceroute 源主机向目的主机发送一系列UDP 数据报,第1组IP数据报TTL =1,第2组IP数据报TTL=2, 以此类推,但是设置的目的端口号是不可能使用的端口号。当TTL耗尽时,路由器丢弃数据报,向源主机发送ICMP报文 (type=11, code=0) 。ICMP报文携带路由器名称和IP地址信息。当ICMP报文返回到源主机时, 记录RTT。 停止准则:1. UDP数据报最终到达目的主机 2. 目的主机返回“目的端口不可达” ICMP报文 (type=3, code=3) 3. 源主机停止 8. IPv6最初动机: 32位IPv4地址空间已分配殆尽 其他动机: 改进首部格式? 1. 快速处理/转发数据报 2. 支持QoS IPv6数据报格式 固定40字节的基本首部,不允许分片。 优先级(priority): 标识数据报的优先级 流标签(flow Label): 标识同一“流”中的数据报 下一个首部(next header): 标识下一个选项首部或上层协议首部(如TCP首部) 与IPv4相比 彻底移除校验和(checksum),以减少每跳处理时间。允许选项(options)字段,但是从基本首部移出,定义多个选项首部, 通过“下一个首部”字段指示。在ICMPv6这个新版ICMP中,附加报文类型,例如“Packet Too Big”,同时增加多播组管理功能。 表示形式(128位,采用8组4个16进制数的形式表示) ? 一般形式: 1080:0:FF:0:8:800:200C:417A ? 压缩形式: FF01:0:0:0:0:0:0:43 压缩→FF01::43 ? IPv4-嵌入形式: 0:0:0:0:0:FFFF:13.1.68.3 或 ::FFFF:13.1.68.3 ? 地址前缀: 2002:43c:476b::/48 (注: IPv6不再使用掩码!) ? URLs: http://[3FFE::1:800:200C:417A]:8000 IPv6基本地址类型 ? 单播:一对一通信(相当于IPv4的主机与主机通信) ? 多播:一对多通信(相当于IPv4向子网发数据) ? 任意播:一对任意一组之一通信 IPv4向IPv6过渡——隧道 隧道: IPv6数据报作为IPv4数据报的载荷进行封装,穿越IPv4网络
|
|
网络协议 最新文章 |
使用Easyswoole 搭建简单的Websoket服务 |
常见的数据通信方式有哪些? |
Openssl 1024bit RSA算法---公私钥获取和处 |
HTTPS协议的密钥交换流程 |
《小白WEB安全入门》03. 漏洞篇 |
HttpRunner4.x 安装与使用 |
2021-07-04 |
手写RPC学习笔记 |
K8S高可用版本部署 |
mySQL计算IP地址范围 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2025年3日历 | -2025/3/5 6:18:39- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |