6)小结
本节所涉及的概念有文件储结构(包括索引节点和目录项)、虚拟文件系统VFS、Linux I/O分类和磁盘的性能指标。涉及到的命令有stat、 df、iostat、 cat /proc/slabinfo、slabtop、pidstat和iotop。
4. 网络
1)网络协议栈
在大学的时候,都学过网络的协议栈。OSI为7层,TCP/IP模型为4层,其对应关系如图3-32所示。
图3-32 OSI 7层协议与TCP/IP模型4层协议对照表
OSI模型仅为教学提供,在日常工作中使用TCP/IP协议。在Linux中TCP网络包如图3-33所示。
图3-33 Linux中的TCP网络包
在应用层仅为具体要用到的应用数据;到了传输层在头部加上TCP头信息;向下进入网络层,在TCP头信息头部再加上IP头信息;最后到达网络接口层,在数据包的头尾部各加上帧头和帧尾两部分。
在TCP/IP的传输过程中,发送方从上而下一层一层地在应用数据前后加上头信息与尾信息,接受方从下而上一层一层地把头信息与尾信息去除,直到在应用层只剩下应用信息为止,如图3-34所示。
图3-34 TCP/IP数据包的发送与接受
2)Linux 网络栈
Linux的网络栈如图3-35所示。
图3-35 Linux的网络栈
3)网络性能指标
同磁盘一样,网络也有对应的性能指标。
•带宽。
表示链路的最大传输速率。单位通常为b/s(比特/秒)。
•吞吐量。
表示没丢包时的最大数据传输速率。单位通常为b/s(比特/秒)或者 B/s(字节/秒),吞吐量受带宽限制,而吞吐量/带宽,也就是该网络的使用率。
•延时。
表示从网络请求发出后,一直到收到远端响应,所需要的时间延迟。在不同场景中,这一指标可能会有不同的含义。比如,它可以表示,建立连接需要的时间(比如 TCP 握手延时)或一个数据包往返所需的时间(比如 RTT)。
•PPS。
是 Packet PerSecond(包/秒)的缩写,表示以网络包为单位的传输速率。PPS 通常用来评估网络的转发能力,比如硬件交换机,通常可以达到线性转发(即PPS 可以达到或者接近理论最大值)。而基于Linux服务器的转发,则容易受网络包大小的影响。
•网络的可用性。
网络能否正常通信。
•并发连接数。
TCP 的并发连接数量。
•丢包率。
传输过程中丢包的数量与总包的数量的百分比。
•重传率。
重新传输的网络数据包占所有包的百分比。
4)常用命令
① ifconfig
# ifconfig ens33 ens33:flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 inet 192.168.0.108 netmask 255.255.255.0 broadcast192.168.0.255 inet6 fe80::dacc:9183:6dd2:2c6e prefixlen 64 scopeid 0x20<link> ether 00:0c:29:55:10:1f txqueuelen 1000 (Ethernet) RX packets 23667 bytes 34981398 (34.9 MB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 18467 bytes 1668920 (1.6 MB) TX errors 0 dropped 0 overruns 0 carrier0 collisions 0
ifconfig是linux中用于显示或配置网络设备(网络接口卡)的命令,英文全称是network interfaces configuring。在这里。
•RUNNING。
表示这个网卡是连通的。
•mtu 1500。
表示MTU的当前值为1500。MTU为最大传输单元,其默认值为1500,MTU越大,需要的分包也就越少,自然网络吞吐能力就越好。
•inet 192.168.0.108 netmask255.255.255.0 broadcast 192.168.0.255。
表示当前的IPv4地址,子网掩码和广播地址。
•inet6 fe80::dacc:9183:6dd2:2c6e prefixlen 64 scopeid0x20。
表示IPv6地址和子网掩码。
② ip
# ip -s addr show dev ens33 2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP>mtu 1500 qdisc fq_codel state UP group default qlen 1000 link/ether 00:0c:29:55:10:1f brd ff:ff:ff:ff:ff:ff inet192.168.0.114/24 brd 192.168.0.255 scope global dynamic noprefixroute ens33 valid_lft 6024sec preferred_lft 6024sec inet6fe80::dacc:9183:6dd2:2c6e/64 scope link noprefixroute valid_lft forever preferred_lft forever RX:bytes packets errors dropped overrun mcast 1066174744 1153443 0 0 0 0 TX: bytes packets errors dropped carrier collsns 313697585 701189 0 0 0 0 root@ubuntu:/home/ebusiness#
linux的ip命令和ifconfig类似,但ip功能更为强大,并旨在取代ipconfig之意。
•LOWER_UP。
表示这个网卡是连通的。
•mtu 1500。
表示MTU为1500。
•inet 192.168.0.108/24 brd 192.168.0.255。
表示当前的IPv4地址,子网掩码和广播地址。
•inet6 fe80::dacc:9183:6dd2:2c6e/64 scope link noprefixroute。
表示IPv6地址和子网掩码。
在ifconfig、ip中其他参数如表3-14所示。
表3-14 ifconfig、ip中其他参数
参数 |
解释 |
errors |
发生错误的数据包的数量,比如校验错误、帧同步错误等 |
dropped |
丢弃的数据包数,即数据包已经收到了 Ring Buffer,但因为内存不足等原因丢包 |
overruns |
超限数据包的数量,即网络 I/O 速度过快,导致 Ring Buffer 中的数据包来不及处理(队列满)而导致的丢包 |
carrier |
发生 carrirer 错误的数据包数,比如双工模式不匹配、物理电缆出现问题等 |
collisions |
碰撞数据包数 |
③ sar
# sar -n DEV 1 Linux 4.15.0-66-generic (ubuntu) 12/11/2019_x86_64_(4 CPU) 12:45:31 AM IFACE rxpck/s txpck/s rxkB/stxkB/s rxcmp/s txcmp/s rxmcst/s %ifutil 12:45:32 AM ens33 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 12:45:32 AM lo 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
sar命令配合-n参数可以查看网络的相关信息,有6个不同的开关:DEV、EDEV、 NFS、NFSD、SOCK和ALL 。DEV显示网络接口信息,EDEV显示关于网络错误的统计数据,NFS统计活动的NFS客户端的信息,NFSD统计NFS服务器的信息,SOCK显示套接字信息,ALL显示所有5个开关。它们可以单独或者一起使用。这里的参数如表3-15所示。
表3-15 sar -nDEV参数
参数 |
含义 |
单位 |
rxpck/s 和 txpck/s |
接收和发送的 PPS |
包 / 秒 |
rxkB/s 和 txkB/s |
接收和发送的吞吐量 |
KB/ 秒 |
rxcmp/s 和 txcmp/s |
接收和发送的压缩数据包数 |
包 / 秒 |
%ifutil |
网络接口的使用率 |
(rxkB/s+txkB/s)/Bandwidth(半双工模式下) |
max(rxkB/s, txkB/s)/Bandwidth(全双工模式下) |
||
Bandwidth 可以用 ethtool 来查询,它的单位通常是 Gb/s 或者 Mb/s,不过注意这里小写字母 b ,表示比特而不是字节。 |
④ping
ping命令通过ICMP协议查看网络的连通性和延时。
# ping 192.168.0.106 -c3 PING 192.168.0.106 (192.168.0.106) 56(84) bytes ofdata. 64 bytes from 192.168.0.106: icmp_seq=1 ttl=128time=0.280 ms 64 bytes from 192.168.0.106: icmp_seq=2 ttl=128time=0.208 ms 64 bytes from 192.168.0.106: icmp_seq=3 ttl=128time=0.351 ms --- 192.168.0.106 ping statistics --- 3 packets transmitted, 3 received, 0% packet loss,time 2007ms rtt min/avg/max/mdev = 0.208/0.279/0.351/0.061 ms
•ttl。
表示生存时间,或者跳数。
•time。
表示往返延时。
•icmp_seq。
表示ICMP 序列号。
•rtt min/avg/max/mdev = 0.208/0.279/0.351/0.061 ms。
表示ttl的最小值为208ms、平均值为279ms、最大值为351ms以及平均偏差0.061 ms (mdev = SQRT(SUM(RTT×RTT) / N – (SUM(RTT)/N) 2,RTT(Round-Trip Time)。往返时延。是指数据从网络一端传到另一端所需的时间。时延由发送时延、传播时延、排队时延、处理时延四个部分组成)。
顾翔老师与云测学院联合推出:软件测试分析与设计,请点击https://v.youku.com/v_show/id_XNDQ3MzkyNjk3Ng==.html?spm=a2hzp.8244740.0.0,收看。有不同观念欢迎与顾翔老师交流!
投票已过期
1.以下你用过哪些集中配置管理系统?(多选)
- puppet
- Chef
- ansible
- saltstack
- Cfengine
- Capistrano
- Resque
- Rundeck
- Rundeck
- 其他
2.以下你用哪些过虚拟机或容器?(多选)
- VMware
- Vagrant
- Amazon EC2
- AMI(亚马逊云机器镜像)
- Vagrant
- Docker
- Rkt
- 裸金属服务器
- 其他
3.以下你用哪些操作系统自动化配置工具?(多选)
- Solaris10 JumpStart
- Kickstart
- Debian-Preseed
- 其他
4.以下你用哪些云平台?(多选)
- Amazon Web Services
- Google App Engine
- Windows Azure
- OpenShift
- Cloud Foundry
- AWS CloudFormation
- Microsoft Azure Stack
- OpenStack Heat
- 百度云
- 阿里云
- 腾讯云
- 其他
5.以下你用哪些CI/CD工具?(多选)
- Jenkins
- ThoughtWorks GoCD
- Atlassian Bamboo
- Microsoft Team Foundation Server
- TeamCity
- GitLab CI
- Travis CI
- SNAP CI
- Pivotal的Concourse
- Etsy的Morgue
- 其他
6.以下你用哪些管理工具?(多选)
- JIRA
- LeanKit
- Mingle
- 禅道
- 其他
7.以下你用哪些安全工具?(多选)
- Vault
- Keywhiz
- credstash
- Red October
- Metasploit
- OSSEC
- Tripwire
- Unhide
- OWASP ZAP Zed Attack Proxy Project
- Lynis
- The Browser Exploitation Framework
- OWASP Xenotix XSS Exploit Framework
- OWASP Offensive Testing Framework
- Brakeman
- WPScan
- nmap
- Burp Suite
- AWVS
- AppScan
- CSRFTester
- SQL Map
- Pangolin
- DirBuster
- 其他
8.以下你用哪些静态扫描工具?(多选)
- Sonar
- Brakeman
- Codeclimate
- CheckStyle
- 其他