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

news/发布时间2024/6/15 19:09:43

在这里插入图片描述

.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.shwantai.cn/a/80773041.html

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

相关文章

ctf_show笔记篇(web入门---php特性)

目录 php特性 89&#xff1a;直接数组绕过preg_match当遇到数组时会直接报错输出0 90&#xff1a;这里利用了intval的特性 91&#xff1a;这里需要细节一点 92-93&#xff1a;这两题的方法很多可以发散思维 94&#xff1a;还是利用小数绕过例如4476.0 95&#xff1a;这里…

Git 掌握

目录 一、前言 二、centos安装Git 三、Git基本操作 (1) 创建Git本地仓库 (2) 配置Git (3) 认识工作区&#xff0c;暂存区&#xff0c;版本库 四、添加文件 五、查看.git文件 六、修改文件 七、版本回退 八、撤销修改 (1) 场景一 对于还没有add的代码 (2) 场景二 已…

【unity实战】事件(Event)的基本实战使用

文章目录 最终效果前言一、素材二、角色金币交互1. 拾取金币2. 显示金币数UI 完结 最终效果 前言 之前我们介绍过委托的用法&#xff0c;具体可以跳转&#xff1a;【unity小技巧】委托&#xff08;Delegate&#xff09;的基础使用和介绍 这期来讲讲事件&#xff0c;使用你会发…

【随笔记】小程序轮播图,一屏显示三个swiper-item

常见的轮播是一屏显示一个swiper-item,有的时候需要一屏显示三个swiper-item,左右两边都显示出一点 【目前小程序基础库2.12.3 效果正常,3.几的效果会有点不正常】 效果图 wxml <!-- 轮播begin --> <swiper wx:if="{{up_down}}" class="card-swipe…

MySQL 事务

特性 事务四大特性&#xff1a; 原子性&#xff08;Atomicity&#xff09;&#xff1a;事务是最小的操作单元&#xff0c;要么全部成功&#xff0c;要么全部失败。一致性&#xff08;Consistency&#xff09;&#xff1a;事务执行前后&#xff0c;数据都保持一致状态。隔离性…

神经网络(neural network)

在这一章中我们将进入深度学习算法&#xff0c;学习一些神经网络相关的知识&#xff0c;这些是有更加强大的作用&#xff0c;更加广泛的用途。 神经元和大脑(neurons and the brain): 我们对于我们的编程的进步主要来自我们对于大脑的研究&#xff0c;根据我们对于大脑的研究…