计算机网络之传输层 + 应用层

news/2024/5/16 9:41:41

在这里插入图片描述

.1

  • CIDR地址块中还有三个特殊的地址块
    a. 前缀 n = 32 , 即32位IP地址都是前缀, 没有主机号, 这其实就是一个IP地址, 用于主机路由
    b. 前缀 n = 31 , 这个地址块中有两个IP地址, 主机号分别为0/1 , 这个地址块用于点对点链路
    c. 前缀 n = 0 , 用于默认路由
  • 使用二叉线索树查找转发表
    为进行更有效的查找,通常把无分类编址的转发表存放在一种层次的数据结构中,然后自上而下地按层次进行查找,这里最常使用的即为二叉线索(binary trie).

一般用唯一前缀来构造二叉线索 , 每个叶节点代表一个IP地址, 其内包含完整IP地址 , 前缀 , 子网掩码

唯一前缀是指,在表中所有的IP地址中,该前缀是唯一的。
在这里插入图片描述
规则:先检查IP地址的第一位,如为0,则第一层的节点就在根节点的左下方;如为1,则在右下方。然后再检查地址的第二位,构造出第二层的节点。依此类推,直到唯一前缀的最后一位。每个叶节点代表一个唯一前缀。

此外, 即使找到唯一前缀匹配的叶子结点, 还需要将 “目的IP地址” 的 与 “叶子节点” 中的 “子网掩码” 相与, 如果结果等于 “叶子节点” 中的IP地址, 则可以转发. 因为归根到底这个"唯一前缀" 和 CIDR前缀不是一个东西.
在这里插入图片描述

  • 在IPv6中, ICMP + IGMP + ARP的功能集成到ICMPv6中.
  • IPv6首部的几个特点
  • 数据报由基本首部 + 有效载荷组成, 有效载荷中有 0 ~ n 个扩展首部, 例如分片扩展首部
  • 基本首部固定为40B, 所有可选项都放到扩展首部中, 因此基本首部中删去了首部长度字段
  • 基本首部中删去了 检验和 字段, 把差错检测功能交给传输层 , 以加快路由器处理数据报的速度
  • 基本首部中删去了 标识/标志/片偏移字段, 因为这些功能在分片扩展首部中实现
  • TTL 字段改名为 跳数限制, 更加切合实际
  • 基本首部中删去了 总长度 字段, 改用 有效载荷长度 字段
  • 基本首部中删去了 协议 字段 , 改用 下一个首部 字段
    当数据报没有扩展首部时, 下一个首部 字段作用与协议字段一样, 指明数据报应交付上层哪个协议 , 如6/17代表TCP/UDP
    当数据报有扩展首部时, 下一个首部 字段标识第一个扩展首部的类型

  • BGP协议同时运行在AS内部和之间, 运行在内部时是iBGP连接, 运行在AS之间时是eBGP连接.
  • BGP路由可在eBGP/iBGP上双向传输, 但只能由eBGP传向iBGP.

SDN的几个特点

  • 基于流的转发. 分组的转发可以基于网络层/运输层/链路层协议数据单元中的首部字段值, 最终的抓发规则由SDN控制器计算并放置到流表中. 区别与传统仅依靠目的IP地址转发.
  • 数据层面与控制层面解耦(decouple).
  • 控制层面位于路由器之外, 且用软件实现
  • 可编程的网络

SDN控制器从下到上的三个层次

  • 通信层, 大多采用openFlow协议
  • 状态管理层
  • 到网络控制程序层的接口

多协议标签交换MPLS
通过添加短的固定长度标签(MPLS首部)来引导数据包在链路层用硬件进行转发。MPLS使得数据包转发决策可以基于标签而不是基于包内的IP地址进行,从而加快了数据包的处理速度,并支持多种网络协议。

几个特点

.2 ICMP

在这里插入图片描述
其中源抑制报文/地址模请求报文 已经不再使用


Traceroute 是 ICMP 的另一个应用,用来跟踪一个分组从源点到终点的路径。有2种实现方案:基于UDP实现和基于ICMP实现。

基于UDP实现traceroute工作原理:

  1. 源主机向目的主机发送一连串的 IP 数据报(UDP报文)。第一个数据报 P1 的生存时间 TTL 设置为 1,当 P1 到达路径上的第一个路由器 R1 时,R1 收下它并把 TTL 减 1,此时 TTL 等于 0,R1 就把 P1 丢弃,并向源主机发送一个 ICMP 时间超过差错报告报文;
  2. 源主机接着发送第二个数据报 P2,并把 TTL 设置为 2。P2 先到达 R1,R1 收下后把 TTL 减 1 再转发给 R2,R2 收下后也把 TTL 减 1,由于此时 TTL 等于 0,R2 就丢弃 P2,并向源主机发送一个 ICMP 时间超过差错报文。
  3. 不断执行这样的步骤,直到最后一个数据报刚刚到达目的主机,主机不转发数据报,也不把 TTL 值减 1。但是因为数据报封装的是无法交付的 UDP,因此目的主机要向源主机发送 ICMP 终点不可达差错报告报文。
  4. 之后源主机知道了到达目的主机所经过的路由器 IP 地址以及到达每个路由器的往返时间。

.1 UDP与TCP

  • IP中的检验和只检验IP数据报的首部, 但UDP的检验和检验 伪首部 + 首部 + 数据
  • TCP的交互单位是数据块, 但仍说TCP是面向字节流的, 因为TCP仅把应用层传下来的数据看成无结构的字节流, 根据当时的网络环境组装成大小不一的报文段.
  • 10秒内有1秒用于发送端发送数据, 信道利用率就是10%
  • TCP报文段由首部和数据部分组成, 紧急位URG的作用就是将紧急指针所指示的数据放到数据部分的最前面
  • 发送方的发送窗口受接收方的窗口字段 + 拥塞窗口cwnd共同决定, 取二者的更小值.
  • TCP为每个连接设有一个持续计时器(Persistence Timer)用以打破死锁.
    只要有一方收到零窗口通知, 就启动PT, 当PT时间到了以后就发送一个零窗口探测报文, 对方就回复当前的rwnd. 如果窗口仍为0就重设PT时间; 不为0就可以传送了, 这样就打破了死锁
  • TCP的报文段的发送时机
    a. 缓存中的数据达到MSS字节时, 就组装成TCP报文发送出去
    b. 每次计时器期限到了就自动发送(但不能超过MSS字节)
    c. 由发送方的进程指明要发送的报文段, 每次发送采用推push操作
    d. nagle算法: 第一轮中, 先发送缓存中的第一个字节, 然后等待对第一个字节的确认再开始第二轮. 以后的每一轮都 将缓存中的数据一次发完(但不能超过MSS字节), 然后等待确认开始下一轮. 同时, 为了提升效率, 只要缓存中数据达到发送窗口的一半或MSS时 , 就不同等待上一轮的确认, 直接发送.
  • 快重传中, 禁止使用捎带确认, 对每个收到的报文立即确认. 若收到1, 2, 4号报文, 则持续发送2号的确认报文, 连续发送三次后, 发送方就会对3号报文启动快重传
  • 路由器的队列通常采用FIFO, 但由于队列长度有限, 队列满了以后再收到的报文段会全部丢弃, 这就是尾部丢弃策略.尾部 丢弃策略会导致一连串分组的丢失, 应采用主动队列管理AQM, 即当队列长度达到某一警示值时, 便按某种算法丢弃个别报文段.
  • TCP中新增了一个概念RTTS(smoothed).
    第一次测量到RTT 样本时,RTTS值就取为所测量到的RTT样本值。
    以后每测量到一个新的RTT 样本,就按下式重新 计算一次RTTS:
    在这里插入图片描述
    式中,0 <α<1, 当α越接近1, RTTS值受新的RTT样本影响较大, RTTS值更新较快. 推荐值为0.125
  • TCP中新增了一个概念RTTD(Deviation). 是RTT的偏差的加权平均值
    第一次测量到RTT样本时, RTTD值就取为所测量到的RTT样本值的一半
    以后每测量到一个新的RTT 样本,就按下式重新 计算一次RTTD :
    在这里插入图片描述
    推荐值为0.25
  • TCP中新增了一个概念RTO(Retransmission Time-Out) , 超时计时器中设置的就是RTO, RTO应略大于RTTS, 按照下式计算:
    在这里插入图片描述
  • karn算法 : 计算RTTS时, 只要报文段重传了 , 就不采用其RTT样本进行计算, 以避免不准确RTT样本的影响. 但如果网络拥塞, 所有报文段都是重传的, 而依据karn算法RTO竟然不进行更新, 这显然不合理
    改进为 : 每重传一次, 就把RTO设为原来的一倍, 直到不发生重传时, 才采用公式计算RTO.

2.1 DNS系统

  • 域名由点和标号(label)组成, 点分割的即是标号
  • 每个标号不超过63个字符,总计不超过255个字符, 并且不区分大小写
  • 顶级域名TLD(Top Level Domain)分为三类, 国家顶级域名nTLD, 通用顶级域名gTLD, 基础结构域名ID(Infrastructure Domain). 基础结构域名只有一个即 arpa. 用于反向域名解析, 因此被称为反向域名
  • 2011年开始, 顶级域名TLD新增了一类新通用顶级域名(New gTLD)
  • 域名服务器管辖范围(或有权限的)以区 (zone) 为单位, 而非域(domain)。各单位根据具体情况来划分自己管辖范围的区, 但在一个区中的所有节点必须是能够连通的。管辖一个区的服务器就是权限域名服务器, 后有详细叙述
    实际上也很好理解, 例如对于一个com顶级域名, 其下辖的二级域名可能以亿单位, 这时我们当然不可能用一台com顶级域名服务器就全部管辖. 区≤域
    在这里插入图片描述
  • 域名服务器可以划分为四种类型: 根/顶级/权限/本地域名服务器.
    其中根域名服务器知道所有顶级域名服务器的域名和ip, 即根域名服务器可以解析所有com/org等顶级域名.
    根域名服务器一共有13台(A~M), 每台又由许多物理节点组成, 这些物理节点会分布在世界各地.
    每台根域名服务器的IP地址和域名都是不同的, 但同一台内的所有物理节点的IP地址都是相同的, 因此采用了任播(anycast)技术后, 会自动寻找IP地址相同, 但距离最近的物理节点.
  • 每台域名服务器都会有一些分布式备份, 其中只能在主域名服务器中进行数据更改, 辅助域名服务器是备份.
  • 每台域名服务器都启用了高速缓存
  • 主机中也启用了高速缓存, 例如在开机后自动从本地域名服务器下载全部数据

.2 HTTP协议

  • n个文档的传输时间为 : n X (2RTT + 文本传输时间), 因此HTTP1.1版本后使用了持续连接(Persistent Connection). 持续连接又分为非流水线方式(Without Pipelining)和流水线方式(With Pipelining).
    在这里插入图片描述
  • 非流水方式指的是, 客户端必须要收到上一个请求的响应后, 才能发出下一个请求.
    相比非持续连接, n个文档传输能省去 n-1 个建立TCP连接的RTT.
    n个文档的传输时间为 : (RTT +nRTT + n X 文本传输时间),
  • 流水方式中, 由于没有限制请求必须在响应之后发送, 因此文档传输的时间不定.最好的情况下, 客户端一次性发送完所有请求, 传输时间为2RTT+ n X 文本传输时间
  • HTTP1.1 版本的一个缺点是, 即使客户端可以一次性发送多个请求, 但服务器只能按照请求的顺序逐一回复, 如果某一请求耗时特别长, 就会阻塞后面的请求
    HTTP2 版本中, 服务器可以并行发回所有响应, 而不必按序.
  • HTTP2 版本中, 把所有报文划分为二进制编码的帧

.3 文件传送协议

基于TCP的文件传输协议FTP(File Transfer Protocol)和基于UDP的简单文件传输协议TFTP(Trivial)共同的特点是: 任何操作都要先获得一个本地副本文件, 任何修改都要先在副本文件上进行.
举个例子, A想要在B的某个文件最后新增一个字母, 则必须先要将文件传输到A, A完成修改后再回传覆盖.

.3.1 TFTP

TFTP主要有以下特点:

  • 传输数据块大小为512字节。
  • 只支持读取和写入两种操作。
  • 没有用户身份验证、加密和完整性校验功能。
  • 使用UDP作为传输层协议,不保证可靠性
  • 默认使用69号端口。

TFTP的工作过程很像停止等待协议,发送完一个文件块后就等待对方的确认,确认时应指明所确认的块号。
发送完数据后在规定时间内收不到确认就要重发数据PDU,发送确认PDU的一方在规定时间内收不到下一个文件块,也要重发确认PDU。这样保证文件的传送不致因某一个数据报的丢失而告失败。

.4 P2P

  • 在BT中, 使用"最稀有的优先(rarest first)" 技术优先请求最稀有的文件块, 避免之后收集不到
  • 在BT中, 还运用了对等传输的思想. 如果A以最高速率向B发送文件, B 也会将A的优先级设为最高.

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈,一经查实,立即删除!

相关文章

JVM(类加载机制)

类加载就是 .class 文件, 从文件(硬盘) 被加载到内存(元数据区)中的过程 类加载的过程 加载: 找 .class 文件的过程, 打开文件, 读文件, 把文件读到内存中 验证: 检查 .class 文件的格式是否正确 .class 是一个二进制文件, 其格式有严格的说明 准备: 给类对象分配内存空间 (先在…

3分钟开通GPT-4

AI从前年12月份到现在已经伴随我们一年多了&#xff0c;还有很多小伙伴不会开通&#xff0c;其实开通很简单&#xff0c;环境需要自己搞定&#xff0c;升级的话就需要一张visa卡&#xff0c;办理visa卡就可以直接升级chatgptPLSU 一、虚拟卡支付 这种方式的优点是操作简单&…

制作一个简单的HTML个人网页

制作一个简单的HTML个人网页 1.1 硬件1.1.1 一台电脑1.1.2 配置要求 1.2 系统1.3 软件 二、制作一个简单的HTML个人网页1.创建一个HTML网页1.1 新建文本文档1.2 另存文本文档1.3 命名为index.html 2.编写HTML代码2.1 打开HTML2.2 复制HTML代码2.3 粘贴HTML代码2.4 保存HTML 3.预…

MySQL--优化(索引--聚簇和非聚簇索引)

MySQL–优化&#xff08;索引–聚簇和非聚簇索引&#xff09; 定位慢查询SQL执行计划索引 存储引擎索引底层数据结构聚簇和非聚簇索引索引创建原则索引失效场景 SQL优化经验 一、聚簇索引 聚簇索引&#xff1a;将数据存储与索引放到了一块&#xff0c;索引结构的叶子节点保存…

【洛谷 P8682】[蓝桥杯 2019 省 B] 等差数列 题解(数学+排序+辗转相除法)

[蓝桥杯 2019 省 B] 等差数列 题目描述 数学老师给小明出了一道等差数列求和的题目。但是粗心的小明忘记了一部分的数列&#xff0c;只记得其中 N N N 个整数。 现在给出这 N N N 个整数&#xff0c;小明想知道包含这 N N N 个整数的最短的等差数列有几项&#xff1f; 输…

java集合类常用的方法介绍

在 Java 中&#xff0c;集合&#xff08;Collections&#xff09;是用于存储多个元素的容器。Java Collections Framework 提供了丰富的集合类&#xff0c;用于满足不同的数据存储需求。以下是一些常用的 Java 集合类及其常用方法&#xff0c;以及简单的例子来说明它们的用法。…