企业运维训练营之云上网络原理与实践课程
第一讲 云网络总览与概述(下)
视频地址:https://developer.aliyun.com/learning/course/991/detail/14971
1. OSI模型与TCP/IP协议栈
OSI七层模型与TCP/IP四层模型
OSI是比较理想化的模型,将网络通信拆分为7层,每层都严格执行自己份内的任务。随着业务发展需求,OSI模型发展到了TCP/IP协议模型,由上到下依次是应用层、传输层、网络层、数据链路层,每一层为上一层服务,每层对应典型协议。
2. 云网络运维技术大图
云网络运维技术大图
在云网络运维技术大图中,底层是物理网络,之上通过技术抽象出虚拟网络(阿里云内部称之为“洛神”),向用户交付机器或者云服务,用户可进行各种操作来实现自己的需求。
- 绿色部分:阿里云用户可控制的内容;
- 中间透明层:阿里云负责的内容;
- 底层:由交换机、路由器等传统基础设施提供的物理网络;
1. 常见的工具:ping & trace
a. 排查工具-ping
- ping是确定两点之间通讯是否正常的工具;
- 基于ICMP协议(网络控制信息协议 internet control message protocol)Type==8&Code==0的Request和Type= =0&Code==0的Reply,即响应请求(Type=8)和应答(Type=0),一台主机向一个节点发送一个Type=8的ICMP报文,如果目标返回Type=0的ICMP报文,说明这台主机存在。
- 典型的排查场景:探测连通性、探测链路MTU;
icmp数据报文格式:
- 类型(type):占用了8 bit位,是ICMP报文类型,用于标识错误类型的差错报文或者查询类型的报告报文;
- 代码(code):占用了8 bit位,根据ICMP差错报文的类型,进一步分析错误的原因,代码值不同对应的错误也不同,例如:类型为11且代码为0,表示数据传输过程中超时了,超时的具体原因是TTL值为0,数据报文被丢弃;
- 校验和(checksum):占用了16 bit位,数据发送到目的地后需要对ICMP数据报文做一个校验,用于检查数据报文是否有错误;
- 标识符(Identifier):占用了16 bit位,对于每一个发送的数据报文进行标识;
- 序列号(Sequence number):占用了16 bit位,对于发送的每一个数据报文进行编号。
b. 排查工具:mtr/traceroute/winmtr/tracert
在请求网络资源获取缓慢或者有丢包过程中,经常会使用到网络路径探测工具。
linux 下最常用的有mtr、traceroute等;windows下最常用的有winmtr、tracert等。
- mtr:支持Unix-like平台,ICMP、TCP、UDP协议,支持持续探测、多种输出格式;
- traceroute:支持Unix-like平台,ICMP、TCP、UDP协议,历史悠久,代码稳健;
- winmtr:支持windows平台,ICMP协议,支持持续探测;
- tracert:支持windows平台,ICMP协议,windows原生程序;
2. 抓包工具:wireshark
wireshark是基于命令行的图形化数据包抓包、查看、分析软件。
a. wireshark包含的工具:
- tshark:命令行工具,wireshark图形化界面可替代;
- mergecap:在wireshark目录下,可以将若子干个包合并成一个包;
- editcap:在wireshark目录下,可以将一个包拆封成若干个子包;
- dumpcap:命令行工具,wireshark图形化界面可替代;
- capinfo:在wireshark目录下,可以快速进行摘要分析,例如开始结束时间点以及所抓取的数量;
注:使用命令行工具,可避免因使用图形化界面过度耗费资源。
b. 建议掌握的功能:
- 统计会话信息:Statistics-> Conversation
- 个性化Packet List,添加必要的列名(右击Packet Details- > Apply as Column)
- 捕获过滤器:与tcpdump类似,可以从man pcap-filter命令中查看详情
- 显示过滤器:tcp.port/ip.addr/icmp/dns/http...
wireshark操作示例:
- 抓包过滤器:以抓https流为例,在wireshark首页界面输入tcp,选择相应流量网卡;因为https跑在tcp协议上,所以可以先抓http流;
- 显示过滤器:wireshark开始抓包,但wireshark只提供了http的协议的流量,如果要查询https,可以在抓到的包页面输入tls或tcp.port == 443;
- 五元组:将所抓包分解成不同的tcp会话,当我们要查询某一条流量时,右键选择“对话过滤器” - “TCP”,则过滤器会自动显示一条包含5个信息的内容(又称“五元组”),包括源IP、源端口、目标IP、目标端口、协议;
- 定制界面参数:可以将关注的参数通过右键“应用为列”,即可在列表页显示;
注:建议只抓自己感兴趣的流,因为全部都抓容易漏包,另外抓下来的包会特别大。
c. 进阶功能
- TCP图形分析:Statistics-> TCP Stream Graphs
- 包染色:右击Packet List- > Colorize Conversation
- 过滤器按钮:Preferences-> Filter Buttons
3. 一般排查案例步骤
如果无法访问某个目标网址,如何进行排查?
a. ping一下该目标网址;
b. 如果ping不同,可以使用mtr查看是哪一跳出了问题;如第一跳是路由器网关,第二跳是运营商网关,等等,在不同的设备上延迟和丢包是否正常,来判断哪一步出了问题;
c. 如果可以ping通,但无法访问某个网址,通过轻量的排查方法都无法找到原因,则可以使用wireshark,通常抓包是比较重且耗时的排查方法。
4. 更多排查工具资料
- 《云网络二三事:GNU类工具》
文章地址:https://developer.aliyun.com/article/876645?groupCode=supportservice
- 《云网络二三事:老朋友,Wireshark家族》
文章地址:https://developeraliyun.com/article/876646?groupCode=supportservice