网络基础与进阶
计算机网络入门与进阶
学习OSI网络模型相关概念(重点掌握)
学习TCP三次握手与四次挥手过程(重点掌握)
学习TCP的11种状态集转化(重点掌握)
学习DNS相关知识概念与原理 linux网关配置(添加网关 网段 以及网络主机路由)
修改网卡配置文件
用户访问www.baidu.com 整个过程.
网络状态信息查询命令
抓包命令(wireshark,tpcdump)(BurpSuite)、工具。
ip地址分类.子网掩码(简介)
1.网络简介
- 网络:
- 简单说通过网络介质把各种设备连接起来形成的结构.
- 网络介质:
- 网线: cat5,cat5e 六类网线,七类网线(速度)
- 光纤:
- wifi: 无线路由器,ap节点.
- FC接口
全名叫Ferrule Connector,最早应用于存储局域网络。外壳材质为金属,接口处有螺纹,和光模块连接时可以固定的很好
- ST接口
材质为金属,接口处为卡扣式,常用于光纤配线架
- SC接口

材质为塑料,推拉式连接,接口可以卡在光模块上,常用于交换机
- LC接口
材质为塑料,用于连接SFP光模块,接口可以卡在光模块上
- 核心:网速/传输速度:
- 网络带宽的速度: 1000Mb/s 1000/8 = 125MB/s
- bit位: 1字节=8bit
- 网络中单位是位,我们要把它转换为字节.一般:b小写就是位 ,B大写字节
2.网络设备与架构
- 主要掌握:路由器与交换机区别
- 主要掌握:常用网站(公司)网络架构
2.1.交换机
- switch (开关,交换机)
交换机特点:
- 在一个交换机的端口上所连接的所有终端设备,均在一个网段(局域网 LAN)上(称为一个广播域)
- 产生广播消耗设备CPU资源
- 终端用户的设备接入,连接交换机. 一般情况下交换机24口,48口,96口.
- 一个网段会有一个统一的网络标识,网段192.168.15.xxx
- 企业级交换机会有一些基本的安全功能,这种交换机叫网管功能的交换机
- 一般来说交换机工作在OSI模型的第2层,也叫二层交换.(等我们说了OSI7层模型就理解.)
- 了解:广播域的隔离(创建VLAN 虚拟局域网)
- 了解:交换机可以隔离冲突域,每一个端口就是一个冲突域
2.2.路由器
- 连接不同的网络.
- 核心功能:路由功能(指路),ip(分配IP).
路由器特点:
-
路由协议的转发(路由选路,指路)
- 路由类似于现实生活中从A地去往B地可能需要先步行,在坐车,在做飞机才能到达B地,这样的整个过程在网络中对应数据的传递过程就称 为路由。因此一个数据信息跨越不同的网段传递到目的地址,就可以把传递数据的过程称为路由,也可以看做每条传递数据的路径。
-
数据转发,会维护一个路由表(相当于一个地图)
-
路由器会作为网关(数据的出入口,类似于大楼的大门),一般会在网络出口的位置摆放一台路由器
-
路由器用于连接广域网(公网)
2.3.通用网站网络架构
- 核心: 交换机与路由器特点
- 了解:一般网站网络部分的架构图
3. OSI7层模型
3.1.概述
- 用于规定数据在发送,传输,阅读流程.
目标:
- 核心: 熟练掌握7层模型包含了什么.
- 核心: 逐渐掌握7层模型每一层特点
- 逐渐掌握7层模型与数据发送(封包,打包),数据接收过程(解包,拆包)
3.2. OSI7层模型
- open system interconnect开放系统互连参考模型,是由ISO(国际标准化组织)定义的。
OSI7层 | 每一层概述 |
---|---|
7️⃣应用层 | 大部分软件运行在这一层. 协议: http,https |
6️⃣表示层 | 负责数据加密,解密,压缩....(了解) |
5️⃣会话层 | 主要负责会话管理,维护....(了解) |
4️⃣传输层 | 主要负责数据传输方式.(可靠传输或不可靠) |
3️⃣网络层 | 主要负责路由与寻址. |
2️⃣数据链路层 | 将分组数据封装成帧. |
1️⃣物理层 | 物理链路,网卡 :本质: 把数据转换为2进制形式,通过线缆传输 |
- 记忆口诀: 物数网传会表应.
4.OSI7层模型详解
4.1.7️⃣应用层
-
大部分软件,服务运行在应用层中.
-
详细含义: 暴露很多接口,提供给其他服务软件使用.主要就是提供应用程序可以接入网络的接口,并根据程序的不同对应不同的接口协议
-
接口: 别人定义好的规范.usb接口一样,这里的接口指的是软件的接口,用于软件之间,服务之间相互使用.
-
核心:应用层中常见的服务/协议:
协议 | 含义 | 端口 |
---|---|---|
http | 超文本传输协议: 网站基础协议之一 | 80 |
https | 多了个secure: 对数据加密了 | 443 |
smtp | 简单邮件传输协议 发邮件. smtp未加密 smtps加密 | 25,465 |
dns | 域名解析服务 | 53 |
- 对于应用层掌握常用协议即可.注意服务/协议对应的端口,端口的概念不是7层的,是传输层概念4层.
4.2.6️⃣表示层
4.3.5️⃣会话层
- 会话连接.
4.4.4️⃣传输层-重点
-
传输层用于管理或控制连接(端到端连接)
-
传输层控制了,连接或数据传输是否可靠.指定端口号
-
如何指定数据传输是否可靠?根据代码书写的时候指定
- 可靠的连接. tcp
- 不可靠的连接. udp
-
通过端口与对方连接.(访问百度连接百度80或443端口)
- 核心:传输层用于控制数据传输是否可靠,这里还指定了端口
- 可靠:tcp,不可靠是udp (这两个的详细信息在后面3次握手,4次挥手的时候讲解)
4.5.3️⃣网络层
-
负责将数据从源地址传输到目的地址
-
主要负责: 主要作用就是路由(指路)和寻址(根据ip地址找人)
- 提供ip地址(DHCP).
- 进行路由(问路,指路)(路由表).
-
设备: 3层路由器,3层交换
4.6.2️⃣数据链路层
-
数据链路层:把上层数据进行转换转换为帧(对数据进行处理与加工).
-
这一层加工数据的时候,增加了MAC地址. 网卡物理地址,网卡生产的时候设置.
-
数据可以在局域网传输(精确传输). 局域网传输的时候使用的是mac地址.
mac地址: 网卡物理地址,世界上独一无二的地址.
4.7.1️⃣物理层
-
通过设备的网卡把上面的数据转换为网络介质中可以传输的信号.
-
把数据转换为0101010内容,通过传输介质传递给对方
5.抓包查看OSI7层模型
- 使用wireshark抓包.
yum install -y nginx
systemctl enable nginx
systemctl start nginx
systemctl status nginx
数据传输与OSI7层模型
- 给对方发送:"天凉了,多喝热水?"发生了什么
1.1.封包过程
-
把"天凉了,多喝热水" 从应用层开始一层层层增加内容(封包).
-
最后通过网络介质传输出去
2.网络设备处理包的过程
3.对方解包的过程
4.抓包查看
- 过滤http协议的数据包,过滤出icmp(ping)数据包即可.
5.TCP/IP 协议(OSI7层精简模型)-了 解
6.TCP 3次握手-重点
- tcp之所以称为稳定,可靠的.因为建立连接的时候要经过3次握手.
- tcp三次握手目标: 与端口建立连接.
- udp没有3次握手建立连接的过程,直接连接
6.1.三次握手-概述
https://www.processon.com/view/link/6243d5151efad40756d2add7
文字描述3次握手流程
- 1️⃣客户端发出建立连接请求: SYN建立连接请求 . 发出seq的随机数(seq=100).
- 2️⃣服务端收到客户端请求: ACK(确认),SYN(与客户端建立连接) , 发出ack=seq+1(101),seq=随 机(666)
- 3️⃣客户端收到服务端请求与确认: 发出ACK确认建立连接 , 发出 ack=seq+1(667) seq=ack(101)
- 4️⃣到此,连接建立,开始传输数据.
7. TCP 4次挥手-重点
- 4次挥手目的是断开连接.
7.1.四次挥手-概述
https://www.processon.com/view/link/6243d5151efad40756d2add7
7.2.四次挥手-详细内容
文字描述4次挥手流程:
-
1️⃣ 客户端: 发出断开连接请求: (FIN) 断开连接请求,seq=1000 ack=668
-
2️⃣服务端: 收到客户端请求,确认: (ACK) ,确认断开, seq=668 ack=seq+1(1001)
-
3️⃣ 服务端: 向客户端发出断开连接请求,(FIN)断开连接请求, seq=668 ack=seq+1(1001)
-
4️⃣客户端: 确认收到请求,断开连接, (ACK)确认收到请求, seq=1001 ack=seq+1(669)
-
5️⃣ 连接断开
8. 抓包分析-3次握手与4次挥手
8.1.准备
工具
-
wireshark(win)
-
linux 安装nc软件
知识点
seq, ack
8.2.三次握手 - 熟悉(能够抓取三次握手数据包即可)
#linux 下面通过nc命令创建一个端口.
yum install -y nc
nc -kl 12306 #创建12306端口
ss -lntup #检查端口
#windows通过本地shell 连接12306端口
telnet 10.0.0.200 12306
如果要断开,请按ctrl+alt+]
⚠ 注意需要关闭防火墙和selinux.
#关闭防火墙
systemctl stop firewalld
systemctl disable firewalld
#检查防火墙
systemctl status firewalld
#关闭selinux
setenforce 0
sed -i 's#SELINUX=enforcing#SELINUX=disabled#g' /etc/selinux/config
#检查selinux
getenforce #结果为 disable 或 permissive 即可.
开始抓包: 过滤器中输入: tcp.port 12306 抓取端口是12306的数据包
客户端:请求建立连接:SYN
服务端:确认请求(ACK),并且请求建立连接(SYN)
服务端:确认请求(ACK),并且请求建立连接(SYN)
9.TCP/UDP 区别
9.1概述与总结 ⭐⭐⭐⭐⭐
4层协议 | |
---|---|
TCP | 传输控制协议: 基于3次握手四次挥手,可靠连接. |
UDP | 用户数据报协议: 不可靠连接. |
TCP 与 UDP区别 ⭐ ⭐ ⭐ ⭐ ⭐
9.2.TCP数据包结构
9.3.UDP数据包结构
9.4.UDP演示-了解
#2台 linux
都要安装nc命令.
#1台: 创建 udp 12306端口
nc -lu 12306
[root@oldboy81-golden-lnb ~]# ss -lntup |grep 12306
udp UNCONN 0 0 *:12306
*:* users:
(("nc",pid=93562,fd=4))
udp UNCONN 0 0 []:12306
[]:* users:
(("nc",pid=93562,fd=3))
#另一台: 连接 udp 12306端口
nc -u 10.0.0.200 12306
wireshark 过滤规则 udp.port 12306
10. TCP 11种状态
- 掌握tcp 三次握手,四次挥手 的时候客户端,服务端常见状态.
10.1.三次握手的状态
- TCP三次握手状态转换简单说明:
01.首先,建立连接之前服务器和客户端的状态都为CLOSED。
02.服务器创建socket后开始监听((服务端启动后)启动服务),变为LISTEN状态。
03.客户端请求建立连接,向服务器发送SYN报文,客户端的状态变为SYN_SENT。
04.服务器收到客户端的报文后向客户端发送ACK和SYN报文,此时服务器的状态变为SYN_RCVD(收到了客户端发送的SYN请求)。
05.然后,客户端收到ACK、SYN,就向服务器发送ACK,客户端状态变为ESTABLISHED 06.服务器收到客户端的ACK后也变为ESTABLISHED。
此时3次握手完成,连接建立!
10.2.四次挥手的状态
01.客户端先向服务器发送FIN报文,请求断开连接,其状态变为FIN_WAIT1。
02.服务器收到FIN后向客户端发送ACK,服务器状态变为CLOSE_WAIT。
03.客户端收到ACK后就进入FIN_WAIT2状态。此时连接已经断开了一半了。如果服务器还有数据要发送给客户端,就会继续发送。
04.直到发完了,就发送FIN报文,此时服务器进入LAST_ACK状态。
05.客户端收到服务器的FIN后,马上发送ACK给服务器,此时客户端进入TIME_WAIT状态,再过了2MSL长的时间后进入CLOSED状态。
06.服务器收到客户端的ACK就进入CLOSED状态。
10.3.第11种状态补充
CLOSING状态表示:
客户端发了FIN,但客户端在FIN_WAIT1状态时没有收到服务器的ACK确认字段,却收到了服务器的FIN字段,这种情况发生在服务器发送的ACK丢包的时候,因为网络传输有时会有意外。
核心必会:
CLOSED , ESTABLISHED , LISTEN , TIME_WAIT . CLOSE_WAIT
逐渐掌握: FIN_WAIT1,FIN_WAIT2,CLOSING,SYN_SENT,LAST_ACK
11.常见网络协议
DNS 域名解析服务/协议: 域名---->ip地址 ⭐ ⭐ ⭐ ⭐ ⭐
11.1.DNS
DNS 域名解析服务/协议: 域名--->ip地址 ⭐ ⭐ ⭐ ⭐ ⭐
- 域名结构
- DNS解析详细流程⭐⭐⭐⭐⭐
域名解析流程: 域名---->ip地址
11.2.DNS解析的命令
通过命令查看DNS解析详细流程
#缓存 windows
系统级别
ipconfig /displaydns #显示
ipconfig /flushdns #清空DNS缓存
浏览器也有DNS缓存
#hosts文件
#详细解析过程 ※※※※※ linux命令
dig www.baidu.com #查询百度对应的ip dns解析的命令
dig +trace nbre.oldboylinux.cn
11.3.DNS故障
通过域名访问: ping域名 dig解析域名报错. yum安装软件失败
ping 公网ip可以问的.
- 此时需要检测与配置下DNS(网卡配置文件中.)
#排查 是否DNS有问题
1. ping 域名
2. ping 公网ip
ping baidu.com # ping: baidu.com: Name or service not known
ping 223.5.5.5
PING 223.5.5.5 (223.5.5.5) 56(84) bytes of data.
64 bytes from 223.5.5.5: icmp_seq=1 ttl=128 time=6.41 ms
64 bytes from 223.5.5.5: icmp_seq=2 ttl=128 time=6.69 ms
# systemctl restart network 是 Linux 系统下用于重启网络服务的命令
11.4.ARP协议
DNS 域名---->ip
ARP IP -----> MAC地址
ARP地址解析协议: ip地址转换为网卡物理地址(MAC地址)
⚠ ARP协议是3层协议,工作在2层
解析流程简单:
10.0.0.200 -----> 10.0.0.2
1️⃣发出arp请求,发送广播找人 谁知道10.0.0.2的mac地址,请告诉10.0.0.200
2️⃣单播:所有局域网的设备都收到广播,只有10.0.0.2这个机器进行响应(回复): 我是10.0.0.2 我的mac地址xx:xx:xxxxxxxx
3️⃣缓存mac地址.
抓包查看过程:
# 10.0.0.200(都在这台机器操作)
arp -n #查看当前系统arp缓存表
ping 10.0.0.201
arp -d 10.0.0.201 #删除arp缓存
# 10.0.0.201
11.5. ICMP协议 Internet控制报文协议
ping 使用的就是icmp协议
小结
12. 网卡配置(ip,DNS)
12.1网卡命名
网卡命名规则:
ens33
eth0
修改网卡名字为eth0
方法01:安装系统的时候修改 net.ifnames=0 biosdevname=0
方法02:安装完成系统
12.1.1方法02:安装完成系统
# 方法02:安装完成系统
第1步: 修改/boot/grub2/grub.cfg配置
搜索linux16的行,在这行结尾加上
net.ifnames=0 biosdevname=0
#修改之后检查内容
[root@myvps ~]# grep -n linux16 /boot/grub2/grub.cfg
# 第2步: 修改网卡配置文件
修改网卡配置文件中NAME和DEVICE两个部分
vim修改
网卡配置文件名字改为eth0
mv 修改
修改后结果:
重启Linux
12.1.2.方法01: 安装系统的时候修改
安装系统的时候选择第1个然后按tab键. 在最后写入 net.ifnames=0 biosdevname=0
net.ifnames=0 biosdevname=0
12.2.网卡配置文件⭐⭐⭐⭐⭐
/etc/sysconfig/network-scripts/ifcfg-eth0
TYPE=Ethernet #基本固定,网络类型: 以太网
BOOTPROTO=none #网卡固定ip还是自动获取ip(DHCP 自动分配ip) ※※※※※※
#BOOTPROTO=dhcp
#自动获取 (公有云DHCP) (物理机)
#BOOTPROTO=none或static #手动设置Ip (物理机)
NAME=eth0 #网卡名字 ※※※※※※
DEVICE=eth0 #设备名字 ※※※※※※
UUID=8e987179-762e-466e-aa40-fe38ebb012d0 #统一设别符
#HWADDR=网卡的mac地址
ONBOOT=yes #网卡是否自动运行(开机,重启网卡) ※※※※※※
IPADDR=10.0.0.200 #ip地址
PREFIX=24 #子网掩码,设置这个局域网中最多有多少台机器. ※※※※※※
#NETMASK=255.255.255.0
GATEWAY=10.0.0.2 #网关, 类似于大楼的出入口. 网络环境中的流量出入口. 一般是3层路由. ※※※※※※
DNS1=223.5.5.5 #主配置dns地址. ※※※※※※
DNS2=223.6.6.6 #备DNS ※※※※※※
阿里云 DNS
223.5.5.5
223.6.6.6
114
114.114.114.114
114.114.115.115
谷歌DNS
8.8.8.8
8.8.4.4
- ⚠ DNS地址的选择:授权默认的;如果没有默认的,选择当前网络环境的(找运营商);最后再使用公共DNS
DNS配置文件
网卡配置文件DNS1 DNS2 优先.
/etc/resolv.conf 实时生效.
子网掩码计算器:
13. 用户访问www.baidu.com 整个过 程 ⭐⭐⭐⭐⭐
13.1.过程概述
过程概述:
1️⃣DNS解析过程:域名>ip
2️⃣ 与对应服务器的端口(80或443)建立连接: 3次握手
3️⃣ 数据的请求与响应(http协议,传输数据)(第2个阶段展开)
4️⃣断开连接:4次挥手.
13.2.过程详解
13.3.抓包详情
14.局域网上网原理与虚拟机上网原理 了解
14.1.局域网上网原理
14.2.虚拟机上网原理
15.网络管理命令 ⭐⭐⭐⭐⭐
检查端口
查看连接情况
网络速度与程序
占用情况
DNS解析
追踪命令
yum install -y net-tools lsof nethogs iftop telnet nc nmap
15.1.检查端口
端口是否开启.
端口是否能访问(连接).
15.1.1.案例01 检查是否存在22端口
我们可以连接这台服务器。
方法01 推荐
ss -lntup |grep 22
ss -lntu
-p表示显示端口对应的进程的信息。
#grep -w 精确过滤. grep -w oldboy #oldboya oldboyb aceoldboy 被排除.
方法02
netstat -lntup |grep -w 22
方法03
lsof -i :22
lsof -ni :22
lsof -nPi :22
lsof -n 不要把ip反向解析为主机名、域名。
lsof -P 不要把端口解析为对应的服务
15.1.2.案例02 检查是否可以访问22端口
不在对应的服务器上。
#方法01
telnet 10.0.0.200 22 #命令行中推荐使用,检查是否有connected 标记。
#方法02 nc netcat ncat
nc -v 10.0.0.200 22 #这个一般用于shell脚本中检查端口是否开启。
#方法03
nmap 网络扫描工具。
nmap -p22 10.0.0.200
PORT STATE SERVICE
22/tcp open ssh #nmap结果中只要有 端口 open就是开启 。
#nmap进阶使用
nmap -p1-1024 10.0.0.200
nmap -p22 10.0.0.0/24 jd.com taobao.com
15.1.3.企业面试题: 如何检查端口是否存在
ss -lntup
netstat -lntup
lsof -i:22
telnet 10.0.0.200 22
nc 10.0.0.200 22
nmap -p22 10.0.0.200
15.2.检查tcp连接状态
ss -ant
netstat -ant
[root@myvps ~]# ss -ant
State Recv-Q Send-Q Local Address:Port Peer Address:Port
LISTEN 0 128 *:80 *:*
LISTEN 0 128 *:22 *:*
LISTEN 0 100 127.0.0.1:25 *:*
LISTEN 0 128 127.0.0.1:9000 *:*
LISTEN 0 50 *:3306 *:*
ESTAB 0 0 10.0.0.200:22 10.0.0.1:57717
LISTEN 0 128 [::]:80 [::]:*
LISTEN 0 128 [::]:22 [::]:*
LISTEN 0 100 [::1]:25 [::]:* 未来统计:
企业案例: 每种状态的次数. sort+uniq
企业案例: 网站并发情况
并发: 同一时间内,用户连接数量.
方法:统计estab状态的连接数量(一般是80/443)端口.
ss -ant |awk 'NR>1 && $4~/:80$/ {print $1}'|sort|uniq -c
ab压力测试网站
ab -n 90000000 -c 3 http:10.0.0.200/
15.3.网络速度
15.3.1总体速度
iftop 2s 10s 40s数据传输平均速度
iftop -n #ip反向解析为域名/主机名
iftop -i 指定网卡. 默认eth0 第1个网卡.
iftop -P 显示端口
iftop -N 不要把端口解析为服务名字
最终使用.
iftop -nNP -i eth0 #显示端口号,不要把ip解析为域名,不要把端口解析为服务, 监视指定网卡eth0
15.3.2.进程流量
精确到进程的网络速度.
查看进程的流量情况.
方法01: iftop,ss,ps 一起使用
iftop找出端口.
ss找出端口对应的进程号(pid)
ps根据pid过滤进程名字.
方法02: nethogs
nethogs
15.4.DNS解析
dig dns解析查询
host
nslookup
#方法01 dig
;; QUESTION SECTION:
;;baidu.com. IN A
;;ANSWER SECTION:
baidu.com. 106 IN A 220.181.38.148
baidu.com. 106 IN A 220.181.38.251
#方法02
[root@myvps ~]# host re.oldboylinux.cn
re.oldboylinux.cn has address 121.199.49.168
[root@myvps ~]# host jd.com
jd.com has address 106.39.171.134
jd.com has address 211.144.27.126
jd.com has address 211.144.24.218
jd.com has address 111.13.149.108
jd.com mail is handled by 5 mx.jd.com.
jd.com mail is handled by 30 mx1.jd.com.
#方法03
[root@myvps ~]# nslookup www.baidu.com
Server: 223.5.5.5
Address: 223.5.5.5#53
Non-authoritative answer:
www.baidu.com canonical name = www.a.shifen.com.
Name: www.a.shifen.com
Address: 153.3.238.28
Name: www.a.shifen.com
Address: 153.3.238.127
Name: www.a.shifen.com
Address: 2408:873d:22:18cb:0:ff:b037:e6d8
Name: www.a.shifen.com
Address: 2408:873d:22:1a91:0:ff:b013:cf81
[root@myvps ~]# nslookup re.oldboylinux.cn
Server: 223.5.5.5
Address: 223.5.5.5#53
Non-authoritative answer:
Name: re.oldboylinux.cn
Address: 121.199.49.168
15.5.追踪命令
检查线路是否通畅.
ping
tracert(windows) traceroute (linux ) 路径追踪
#01 两点之间.
ping baidu.com
#02
tracert(windows) traceroute (linux yum install -y traceroute)
traceroute -nI www.baidu.com #默认使用udp协议,-I使用icmp协议
[D:\~]$ tracert -d www.baidu.com
通过最多 30 个跃点跟踪
到 www.a.shifen.com [2408:873d:22:18cb:0:ff:b037:e6d8] 的路由:
1 3 ms 2 ms 2 ms 2408:8462:5c20:52fb::ef
2 * * * 请求超时。
3 * * * 请求超时。
4 82 ms * * 2408:8142:c0f2:5900::
5 * * * 请求超时。
6 89 ms 65 ms 26 ms 2408:8001:6666::2:0
7 * * * 请求超时。
8 * * * 请求超时。
9 72 ms 72 ms 88 ms 2408:8000:a016:1::1b
10 88 ms 99 ms 71 ms 2408:873d:1:1::d
11 65 ms 89 ms 109 ms 240c:4001:2130::ec1:eb2:2
12 79 ms 51 ms 62 ms 240c:4001:2130::eb1:eb2:2
13 47 ms 53 ms 75 ms 240c:4051:1229:1eb:1eaf:3:eb01:6
14 44 ms 54 ms 100 ms 240c:4051:1229:109:1eaf:1:1b09:3
15 64 ms 62 ms 59 ms 2408:873d:22:18cb:0:ff:b037:e6d8
[root@myvps ~]# Address: 121.199.49.168
[root@myvps ~]# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 10.0.0.2 0.0.0.0 UG 100 0 0 eth0
10.0.0.0 0.0.0.0 255.255.255.0 U 100 0 0 eth0
192.168.10.0 0.0.0.0 255.255.255.0 U 101 0 0 eth1
小结
16. 抓包
未来一些网络的问题,数据传输的问题,很难直观的看出来,需要使用抓包软件查看数据传输背后发生了什么. 运维必会技能.
16.1.概述
目标:
抓出指定 协议 的数据包.
抓出指定 端口 .
抓出指定 ip
16.2. wireshark过滤器规则
16.2.1.抓出指定协议
icmp #ping 数据包
tcp
udp
http
arp
过滤https数据包: tls
16.2.2.抓住指定端口
tcp.port 80 #过滤出源端口或目标端口是80的数据包.
如果是udp数据包
udp.port 53
tcp.srcport 80 #过滤出源端口80
tcp.dstport 80 #过滤目标端口80
udp.srcport 53
udp.dstport 53
16.2.3.抓出指定ip的数据包
ip.addr 10.0.0.200 #过滤出源ip或目标ip是 10.0.0.200数据包
ip.src 10.0.0.200 #过滤出源ip10.0.0.200 数据包
ip.dst 10.0.0.200 #过滤出目标ip10.0.0.200 数据包
16.2.4.不固定内容的过滤-比较大小
过滤出端口小于等于1024的数据包.
tcp.dstport <= 1024
等于 ==
小于等于 <=
小于 <
大于等于 >=
大于 >
不等于 !=
16.2.5.grep过滤,包含,正则
# wire中不是所有的指标都支持正则,过滤.需要字段的内容是字符串,才能使用正则过滤
过滤出http协议中包含baidu.com数据包
http ~ "baidu.com"
http.host ~ "[0-9]+(.com|.cn)"
http.host用户请求的域名中包含xxxx
matches 或 ~
16.2.6.与或非-
#过滤端口号大于等于20 小于等于1024
tcp.port >=20 tcp.port <=1024
tcp.port >=20 and tcp.port <=1024
#组合 过滤出 端口是80 并且 ip地址是10.0.0.200
and #并且
or #或者
! #取反
tcp.port 80 && ip.addr 10.0.0.200 #并且
tcp.port 80 || ip.addr 10.0.0.200 #或者
16.3.tcpdump 过滤
yum install -y tcpdump
- 抓包案例
#过滤协议
tcpdump icmp
tcpdump -vvv -nnn icmp
#过滤指定端口号 80端口
tcpdump -nnn port 80
tcpdump -nnn src port 80
tcpdump -nnn dst port 80
#抓住指定主机
tcpdump -nnn host 10.0.0.200
#抓取指定ip和端口的数据包
tcpdump -nnn src host 10.0.0.200 and port 80
tcpdump -nnn dst host 10.0.0.200 and port 80
#
tcpdump -i ens33
#组合 过滤出 端口是80 并且 ip地址是10.0.0.200
and #并且
or #或者
! #取反
tcpdump无法过滤出7层的数据包 http 需要指定端口号过滤并保存,然后通过wireshark查看
16.4. 案例tcpdump + wireshark抓包流程. ⭐⭐
tcpdump linux抓包 并保存
下载
wireshark分析.
tcpdump 抓包的时候 通过-w保存
下载windows,通过wireshark分析即可
[root@myvps ~]# tcpdump -vvv -nn -i eth0 port 80 or port 53 -w http-dns.pcap
小结
16.5.IP-了解
16.5.1.格式与分类
点分十进制ip(ipv4) 32位
ipv6,128位
ip地址组成:网络位(居住的校区),主机位(楼房间)
根据网络位不同划分ip地址分类
16.5.2.子网掩码
子网掩码: 用来绝对局域网(网段中)最多有多少台机器.
PREFIX=24
NETMASK=255.255.255.0