《性能之巅》网络

第十章 网络

随着系统变得越加分布化,网络在性能中扮演着越来越重要的角色。改进网络延时、吞吐量和消除丢包引起的延时异常是十分重要的工作。

网络的分析是跨硬件和软件的。其中,硬件包括:

  • 网络接口卡
  • 交换机
  • 路由器和网关(通常含有软件)

软件则指的是内核协议栈,通常是TCP/IP,以及每个所社的协议行为。

背景

术语

  • 接口

    网络物理连接器。

  • 报文

    位于应用层的信息分组称为报文。报文是网络中交换与传输的数据单元,报文包含了应用层的完整的数据信息。报文在传输过程中会不断地封装成分组、包、帧来传输,封装的方式就是添加一些控制信息组成的首部,那些就是报文头。

  • 数据包

TCP/IP通信协议传输中的数据单位,处于网络层,是通过网络传输的数据基本单元。为了提供通信性能和可靠性,每个用户发送的数据会被分成多个更小的部分。在每个部分的前面加上一些必要的控制信息组成的首部,有时也会加上尾部,就构成了一个分组。它的起始和目的地是网络层

  • 数据链路层的协议数据单元,为了保证数据的可靠传输,它将上层传入的数据添加一个头部和尾部,组成了帧,帧根据MAC地址寻址。

  • 带宽

    对应网络类型的最大数据传输速率。

  • 吞吐量

    两个网络端点间的数据传输率。

  • 延时

    一个报文往返端点所需的时间,或指建立连接所需要的时间。

协议栈

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-4pRJXeip-1636095548341)(%E3%80%8A%E6%80%A7%E8%83%BD%E4%B9%8B%E5%B7%85%E3%80%8B%E7%BD%91%E7%BB%9C.assets/1078885-20191201115455891-10715953.png)]

数据进入TCP/IP协议栈时的封装过程如下:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-q6IfrIxr-1636095548343)(%E3%80%8A%E6%80%A7%E8%83%BD%E4%B9%8B%E5%B7%85%E3%80%8B%E7%BD%91%E7%BB%9C.assets/1078885-20191201115544012-332700971.png)]

数据进入TCP/IP协议栈时的解封装过程如下:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-L5Md6OHl-1636095548344)(%E3%80%8A%E6%80%A7%E8%83%BD%E4%B9%8B%E5%B7%85%E3%80%8B%E7%BD%91%E7%BB%9C.assets/1078885-20191201115625795-2136763138.png)]

网络协议栈基本知识

概念

  • 路由

    以太网交换机工作在第二层即数据链路层,用于在同一网络内部转发以太网帧。但是,当源和目的IP地址位于不同网络时,以太网帧必须发送给路由器。路由器负责在不同网络间传输报文,通过路由表来决定最佳转发路径。当主机将报文发送至不同IP地址时,由于主机无法直接与本地网络以外的设备通信,报文被转发至默认网关。默认网关就是数据流从本地网络路由至远端设备的目的地。它通常用来连接本地网与公共网。

网络基本功系列

  • 封装

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-7uMd7zCZ-1636095548346)(%E3%80%8A%E6%80%A7%E8%83%BD%E4%B9%8B%E5%B7%85%E3%80%8B%E7%BD%91%E7%BB%9C.assets/image-20211101201457598.png)]

  • 包长度

    通常受限于网络接口的最大传输单元(MTU)长度,一般是1500B。但以太网支持9000B的特大包(帧),这提高了网络吞吐性能,因为传输减少了包。

  • 延时

    • 主机名解析延时

      与远程主机建立连接时,主机名需要解析为IP地址,例如用DNS解析。

    • ping延时

      用ping命令测量ICMP echo请求到echo响应所需的时间。该时间用来衡量主机之间包括网络跳跃的网络延时。它测量的是包往返的总时间,简单、随时可用。

    ICMP : Internet Control Message Protocol,指互联网控制报文协议

    关于ping: 在接收端,ICMP echo 请求通常做中断处理并立即返回,这尽可能地减少了内核代码运行
    的时间。在发送端,由于时间戳由用户层测量,并且包括内核上下文切换和内核代码路径时间,可能会包括少量附加的时间。

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-EJQnV53N-1636095548347)(%E3%80%8A%E6%80%A7%E8%83%BD%E4%B9%8B%E5%B7%85%E3%80%8B%E7%BD%91%E7%BB%9C.assets/image-20211101203244370.png)]

  • 缓冲

    较大的缓冲可以通过在阻塞和等待确认前持续传输数据环节高往返延时带来的影响。

  • 接收协商

    通过与对端自动协商,网络接口能够工作在不同的模式。

    例如:

    • 带宽:10、100、1000MB/s
    • 双工模式:半双工或者全双工

    全双工:允许双向同时传输,利用分离的通道传输和接收能利用全部的带宽。

  • 本地连接

    网络连接可以发生在同一系统的两个应用程序之间。

架构介绍

本节介绍网络架构:协议、硬件和软件。

协议

UDP

用户数据报协议(UDP)是一个常用于发送网络数据报文RFC 768]的互联网标准。就性能而言,UDP 提供如下特性:

  • 简单:简单而短小的协议头降低了计算与长度带来的系统开销。
  • 无状态:降低连接与传输控制带来的系统开销.
  • 无重新传输

尽管UDP简单并且通常能提供高性能,但 UDP 并不可靠,而且数据可能会丢失或者被乱序发送。因此它不适合许多类型的连接。UDP 也缺乏阻塞避免因而会引起网络阻塞。

TCP

传输控制协议(TCP)是一个常用的用于建立可靠网络连接的互联网标准。TCP 由(RFC 793]以及之后的增补定义。
就性能而言,即使在高延时的网络中,利用缓冲和可变窗口,TCP也能够提供高吞吐量。TCP 还会利用阻塞控制以及由发送方设置的阻塞窗口,因而不仅能保持高速而且在跨越不同并变化的网络中保持合适的传输速率。阻塞控制能避免会导致网络阻塞进而损害性能的过度发送。

关于TCP 性能的重要内容包括三次握手、重复确认检测、阻塞控制算法、Nagle 算法、延时确认、SACK 和 FACK。

#####三次握手

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-EbntHJXl-1636095548347)(%E3%80%8A%E6%80%A7%E8%83%BD%E4%B9%8B%E5%B7%85%E3%80%8B%E7%BD%91%E7%BB%9C.assets/format,png.png)]

最开始的时候客户端和服务器都是处于CLOSED状态。主动打开连接的为客户端,被动打开连接的是服务器。

  1. TCP服务器进程先创建传输控制块TCB,时刻准备接受客户进程的连接请求,此时服务器就进入了LISTEN(监听)状态;
    TCP客户进程也是先创建传输控制块TCB,然后向服务器发出连接请求报文,这是报文首部中的同部位SYN=1,同时选择一个初始序列号 seq=x ,此时,TCP客户端进程进入了 SYN-SENT(同步已发送状态)状态。TCP规定,SYN报文段(SYN=1的报文段)不能携带数据,但需要消耗掉一个序号。
  2. TCP服务器收到请求报文后,如果同意连接,则发出确认报文。确认报文中应该 ACK=1,SYN=1,确认号是ack=x+1,同时也要为自己初始化一个序列号 seq=y,此时,TCP服务器进程进入了SYN-RCVD(同步收到)状态。这个报文也不能携带数据,但是同样要消耗一个序号。
  3. TCP客户进程收到确认后,还要向服务器给出确认。确认报文的ACK=1,ack=y+1,自己的序列号seq=x+1,此时,TCP连接建立,客户端进入ESTABLISHED(已建立连接)状态。TCP规定,ACK报文段可以携带数据,但是如果不携带数据则不消耗序号。
  4. 当服务器收到客户端的确认后也进入ESTABLISHED状态,此后双方就可以开始通信了。

LISTEN - 侦听来自远方TCP端口的连接请求;
SYN-SENT -在发送连接请求后等待匹配的连接请求;
SYN-RECEIVED - 在收到和发送一个连接请求后等待对连接请求的确认;
ESTABLISHED- 代表一个打开的连接,数据可以传送给用户;
FIN-WAIT-1 - 等待远程TCP的连接中断请求,或先前的连接中断请求的确认;
FIN-WAIT-2 - 从远程TCP等待连接中断请求;
CLOSE-WAIT - 等待从本地用户发来的连接中断请求;
CLOSING -等待远程TCP对连接中断的确认;
LAST-ACK - 等待原来发向远程TCP的连接中断请求的确认;
TIME-WAIT -等待足够的时间以确保远程TCP接收到连接中断请求的确认;
CLOSED - 没有任何连接状态;

硬件

接口、控制器、交换机、路由器及其他设备(集线器、网桥、调制解调器)

###软件

网络栈、TCP、设备驱动程序

方法(P480)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-MRmbp6hV-1636095548348)(%E3%80%8A%E6%80%A7%E8%83%BD%E4%B9%8B%E5%B7%85%E3%80%8B%E7%BD%91%E7%BB%9C.assets/image-20211101205852250.png)]

工具法

检查以下内容:

netstat -s 按照各个协议分别显示其统计数据

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-EkBCsWKf-1636095548348)(%E3%80%8A%E6%80%A7%E8%83%BD%E4%B9%8B%E5%B7%85%E3%80%8B%E7%BD%91%E7%BB%9C.assets/image-20211102220846321.png)]

netstat -i 打印网络接口信息

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-19PMInjf-1636095548349)(%E3%80%8A%E6%80%A7%E8%83%BD%E4%B9%8B%E5%B7%85%E3%80%8B%E7%BD%91%E7%BB%9C.assets/image-20211102221034624.png)]

ifconfig 获取网络接口配置信息并对此进行修改

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-w8OeiyW7-1636095548349)(%E3%80%8A%E6%80%A7%E8%83%BD%E4%B9%8B%E5%B7%85%E3%80%8B%E7%BD%91%E7%BB%9C.assets/image-20211102221323538.png)]

tcpdump 监视第一个网络接口上所有流过的数据包。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-1zYn0VUj-1636095548350)(%E3%80%8A%E6%80%A7%E8%83%BD%E4%B9%8B%E5%B7%85%E3%80%8B%E7%BD%91%E7%BB%9C.assets/image-20211102221602631.png)]

USE方法

对每个网络接口及方向进行:

  • 使用率
  • 饱和度
  • 错误

的检查。

工作负载特征归纳

  • 网络吞吐量
  • 网络接口IOPS
  • TCP连接率

延时分析

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-zUzyASQh-1636095548350)(%E3%80%8A%E6%80%A7%E8%83%BD%E4%B9%8B%E5%B7%85%E3%80%8B%E7%BD%91%E7%BB%9C.assets/image-20211102222136617.png)]

性能监测

  • 吞吐量
  • 连接数
  • 错误
  • TCP重传输
  • TCP乱序数据包

数据包嗅探

数据包嗅探从网络捕捉数据包,所以能检查每一个数据包的方式检查协议报文头和数据。

数据包捕捉的日志会包括如下信息:

  • 时间戳
  • 整个数据包
    • 所有协议头
    • 部分或全部负载数据
  • 元数据:数据包数量,丢包数量
TCP分析

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-o1cDiwxK-1636095548351)(%E3%80%8A%E6%80%A7%E8%83%BD%E4%B9%8B%E5%B7%85%E3%80%8B%E7%BD%91%E7%BB%9C.assets/image-20211102222718094.png)]

挖掘分析

通过挖掘每个数据包至网络接口驱动。其运行往往非常复杂,是一项非常耗时的操作。

静态性能分析

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-YIrrK6nh-1636095548351)(%E3%80%8A%E6%80%A7%E8%83%BD%E4%B9%8B%E5%B7%85%E3%80%8B%E7%BD%91%E7%BB%9C.assets/image-20211102222919038.png)]

资源控制

设置控制以显示网络资源,包括:

  • 网络带宽限制
  • IP服务品质:由网络组件应用的网络流量优先顺序
微基准测试

许多基准测试工具可以用于网络,调查分布式应用程序环境的吞吐量问题,确认网络能否达到预期的网络吞吐。如果达不到,能用微基准测试工具调查网络性能。

典型要素如下:

  • 方向
  • 协议
  • 线程数
  • 缓冲长度
  • 接口MTU长度

分析

这节介绍网络性能分析工具。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-WgGXrswz-1636095548351)(%E3%80%8A%E6%80%A7%E8%83%BD%E4%B9%8B%E5%B7%85%E3%80%8B%E7%BD%91%E7%BB%9C.assets/image-20211102223915611.png)]

实战吧…

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 《性能 第2版 pdf》是一本关于计算机系统性能优化的经典书籍。本书详细介绍了计算机硬件与软件如何影响系统性能,并提供了许多实用的技术,帮助读者优化计算机系统性能。 本书的第二版增加了很多新内容,更加全面地介绍了现代计算机体系结构的最新发展。新版书中加入了对新一代处理器和存储技术的讲解,涵盖了多核处理器、并发编程、能量管理、网络性能、虚拟化等热门话题。 阅读这本书,读者能够学到如何评估系统瓶颈,优化代码性能,利用大规模并行化和分布式计算等技术,来提高计算机系统的性能。本书包含了大量的实际案例和代码示例,读者能够通过实践来巩固所学的知识。 总的来说,这本书是一本非常实用的关于计算机系统性能优化的指南,作者在书中总结了多年的实践经验和研究成果,为读者提供了许多宝贵的建议和技术,对于从事计算机系统开发和运维的人员都是一本不可多得的参考书。 ### 回答2: 《性能 第2版 pdf》是一本面向软件开发领域的经典书籍,该书主要讲解了如何通过性能调优来优化软件的性能。本书第2版是在第1版的基础上进行了更新和扩展,更加适应了当下软件开发领域的需求。 本书的主要亮点在于它详尽而深入地讲解了性能调优的各个方面,从理论到实践全面覆盖。作者不仅阐述了性能调优的目的和意义,还详细介绍了通过掌握性能分析工具和技术来定位性能瓶颈的方法,以及利用各种技术手段优化软件性能的实践技巧。 此外,本书也对现代软件开发领域的一些新兴技术进行了介绍和应用,比如多核处理器、大数据处理和云计算等,这些都是当下软件开发领域的热点和难点问题,精通这些新技术对于软件开发者来说将会是一种巨大的优势。 总之,作为一本经典的性能调优书籍,《性能 第2版 pdf》既适用于新手学习性能调优的基础知识,也适用于有相当经验的专业人士深入掌握性能优化的最新技术和实践技巧。同时,该书作者用通俗易懂的语言和生动的案例,让读者对性能调优的概念、方法和技术有了清晰、深刻的认识,是一本非常值得推荐的经典书籍。 ### 回答3: 《性能》第2版是一本关于计算机系统性能优化的经典著作,由Google的两位资深工程师写成。这本书详细地介绍了现代计算机系统的基本原理和优化方法,旨在帮助读者理解性能优化的核心思想和方法。 本书分为两部分,第一部分主要介绍计算机系统的基础知识,包括指令集架构、内存系统、磁盘IO和网络通信等方面。第二部分则深入讨论性能优化的各种技术和方法,主要包括程序优化、多核并行编程、内存管理、IO优化、网络优化等。整本书内容丰富、深入浅出,非常适合计算机科学相关专业学生和从事系统开发、性能优化工作的专业人士阅读。 此外,《性能》第2版还涵盖了最新的技术发展趋势,包括人工智能应用、云计算、分布式系统等。读者可以通过这本书更好地了解计算机系统的最新发展和前沿技术,为自己的工作和学习提供重要的参考和指导。 总之,如果你对计算机系统性能优化感兴趣或者需要进行相关工作,那么《性能》第2版绝对是一本不可错过的好书。它将帮助你全面掌握性能优化的核心思想和方法,提高自己的专业技能水平,从而在自己的领域中更加突出。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值