第十五篇:计算机网络

网络基础知识

  网络简介

  • 网络:通过网络传输介质将各种网络设备连接起来的结构,用于数据传输与资源共享
  • 网络传输介质
    • 网线(cat5、cat5e、六类网线、七类网线)
    • WiFi(无线路由器、ap接入点)
    • 光纤(FC接口、ST接口、SC接口、LC接口)

  网络设备

 交换机(switch)⭐⭐

  • 功能
    • 数据帧转发:交换机能过接收、处理并转发数据帧,根据目标MAC地址将数据帧转发到对应的端口
    • MAC地址学习:交换机会记录连接到每个端口的设备的MAC地址,形成一个MAC地址表
  • 特点
    • 在一个交换机的端口上所连接的所有终端设备,均在一个网段(局域网)
    • 交换机工作在数据链路层
    • 广播域的隔离(创建VLAN虚拟局域网)
    • 交换机可以隔离冲突域,每一个端口就是一个冲突域

 路由器(router)⭐⭐

  • 功能
    • 数据包转发:路由器负责在不同的网络之间转发数据包
    • 路由:传输数据的过程(传输数据的路径)
    • 网络地址转换(NAT):将私有IP地址转换成共有IP地址,实现多个设备共享一个共有地址
  • 特点
    • 路由器工作在网络层
    • 由于连接不同的网络
    • 路由器的地址一般会作为网关的地址

  网络架构⭐⭐⭐⭐⭐

  IP地址分类⭐⭐

OSI七层模型⭐⭐⭐⭐⭐

open system interconnect 开放系统互连参考模型

OSI 七层 作用  
应用层 提供用户与网络之间的接口,处理特定的应用程序、服务/协议(HTTP、HTTPS http,https,smtp,dns
⑥ 表示层 负责数据的格式化和表示(编码、解码,加密、解密,压缩、解压缩)  
⑤ 会话层 负责会话的建立、维持、终止  
传输层 负责数据传输方式(可靠传输TCP不可靠传输UDP tcp/udp  端口
 网络层 使用逻辑地址(IP地址),进行数据包的寻址路由 ip地址
② 数据链路层 负责数据帧的传输 mac地址
① 物理层 负责物理媒体上传输比特流信号 网卡,传输介质

 应用层

  • 处理特定的应用程序、服务协议
  • 提供用户与网络之间的接口
应用层中常见的协议
协议 含义 端口
http 超文本传输协议:网站基础协议之一 80
https 基于http进行对数据加密 443
smtp 简单邮件传输协议(smtp:未加密,smtps加秘) 25,465
dns 域名解析服务 53

 表示层

  • 数据的编码和解码
  • 数据的加密和解密
  • 数据的压缩和解压缩

 会话层

  • 建立、维护、管理应用程序之间的会话

 传输层

  • 传输层用于管理或控制连接(端到端连接
  • 指定可靠连接和不可靠连接
    • 可靠连接    tcp
    • 不可靠连接    udp
  • 通过指定端口号与对方连接

 网络层

  • 负责将数据从源地址传输到目的地址
  • 提供IP地址(DHCP)
  • 进行路由(路由表)
  • 设备
    • 三层路由器
    • 三层交换机

 数据链路层

  • 将数据转换为帧
  • 数据链路层加工数据的时候,增加了MAC地址
  • 数据可以通过mac地址在局域网内进行精准传输

 物理层

  • 通过网卡将数据转换成网络介质中可以传输的信号

 OSI七层模型抓包⭐⭐⭐⭐

  • windows抓包

  • linux抓包⭐⭐⭐⭐
复制代码
# 下载安装nginx服务
    yum install -y nginx
    systemctl enable nginx    # 将服务设置为开机自启动
    systemctl start nginx    # 立即启动服务
    systemctl status nginx    # 显示服务的当前状态

# 关闭防火墙
    systemctl stop firewalld    # 停止防火墙
    systemctl disable firewalld    # 禁用开机自启动

# 关闭SELinux
    通过修改/etc/selinux/config,永久关闭SELinux
        SELINUX=disabled
    临时关闭SELinux
        setenforce 0
复制代码

 osi七层模型之数据传输

 TCP/IP协议(OSI7层精简模型)

TCP三次握手四次挥手⭐⭐⭐⭐⭐

  • tcp建立连接的时候要经过3次握手(稳定、可靠)
  • tcp三次握手目标:与端口建立连接
  • udp直接建立连接
TCP中常见的标记  
SYN (Synchronize)客服端向服务端建立连接请求,并同步初始序列号
ACK (Acknowledge)客户端已经收到服务端的请求和相应
SYN/ACK 服务器同意建立连接
FIN (Finish)断开连接请求
PSH (Push)表示传输数据

  TCP三次握手(建立连接)⭐⭐⭐⭐⭐

  • seq序列号
  • ack确认号

  • 客户端发送一个带有SYN标志的报文到服务端,同时随机生成一个序列号seq,进入SYN-SENT状态
  • 服务端接收到SYN报文后,会发送一个带有SYN/ACK标志的报文作为应答,同时将确认号设置为客户端的序列号+1,并随机生成一个序列号,服务端进入SYN-RECEIVED状态
  • 客户端收到服务端的SYN/ACK报文后,会发送一个带有ACK标记的报文作为应答,同时将确认号设置为服务端的序列号+1

  TCP四次挥手(断开连接)⭐⭐⭐⭐⭐

  • 客户端发送一个带有FIN标志的报文到服务端,进入FIN-WAIT-1状态
  • 服务端接收到FIN报文后,会发送一个带有ACK标志的报文作为应答,并进入CLOSE-WAIT状态
  • 服务器完成数据传输后,会发送一个带有FIN标志的报文给客户端,并进入LAST-ACK状态
  • 客户端接收到FIN报文后,会发送一个带有ACK标志的报文作为应答,然后进入TIME-WAIT状态
  • 经过一段时间后(2MSL),双方进入CLOSED状态,连接断开

  TCP三次握手抓包(nc命令)⭐⭐⭐

nc命令是linux系统中的一个强大的网络工具,用于创建TCP/UDP套接字连接

nc 参数 英文名称 描述
-l listen mode 使对应的端口处于监听模式
-p local port 指定本地端口
-u UDP mode 使用udp协议,不指定-u则是tcp协议
-k keep listening 处理完一个连接后继续监听
-s specific address 指定源ip地址
-v verbose mode 显示详细信息

  TCP/UDP区别⭐⭐⭐

传输控制协议(TCP) 数据报协议(UDP)
面向连接 无连接
可靠传输 不可靠传输
控流(检查数据是否丢失,丢失重新发送) 丢包
使用TCP应用:WEB浏览器、电子邮件、文件传输程序 使用UDP应用:域名系统(DNS)、视频流、IP语音

  TCP连接11种状态11种状态11种状态⭐⭐⭐⭐⭐

CLOSING状态 

核心掌握:CLOSEDESTABLISHEDLISTENTIME_WAITCLOSE_WAIT

逐渐掌握:FIN_WAIT1FIN_WAIT2CLOSINGSYN_SENTLAST_ACK

常见网络协议⭐⭐⭐

  • DNS(域名解析服务/协议):将域名转换成IP地址
  • ARP(地址解析协议):将网络层地址(ip地址)转换成数据链路层地址(MAC地址)
  • ICMP(互联网控制报文协议):在网络设备之间传递控制消息和错误消息
  • DHCP(动态主机配置协议):自动为网络中的设备分配IP地址和其他网络配置参数

  DNS(域名解析服务/协议)

将域名转换成IP地址

 域名结构

完整域名:www.blog.example.com

  • 根域名:互联网域名系统的最高级别,通常”.“表示(全球有13台根域名服务器)
  • 顶级域名:.com .cn .org
  • 二级域名:代表特定组织、公司或服务
  • 三级域名:进一步细分特定服务或子站点

 DNS解析详细流程

 DNS解析命令⭐⭐⭐

复制代码
# windows
    ipconfig  # windows中查看计算机网络配置的命令
    ipconfig /displaydns  # 显示DNS解析器缓存中的所有条目
    ipconfig /flushdns  # 清空DNS缓存
    Windows hosts文件
        C:\Windows\System32\drivers\etc\hosts

# Linux
    dig:Linux中查询DNS信息命令
    dig +trace:递归查询域名解析的整个过程 
        dig www.baidu.com
        dig +trace www.baidu.com
复制代码

  ARP(地址解析协议)

将IP地址转换成mac地址(ARP是网络层协议,但工作在数据链路层)

 ARP解析流程

  • 10.0.0.200---->10.0.0.220
  1. 广播发出:发出arp请求,发送广播找10.0.0.220的mac地址
  2. 单播回复:所有局域网设备都接收到广播,只有10.0.0.220机器进行响应
  3. 缓存mac地址

 抓包

# arp -n  # 查看当前系统arp缓存表
# arp -d  # 删除arp缓存
    ping -c 1 10.0.0.220
    arp -d 10.0.0.220

  ICMP(互联网控制报文协议)

ping 使用的就是网络控制报文协议

网卡配置

 

  网卡命名

 安装系统时修改

 系统安装完成后修改

复制代码
# 1.修改/boot/grub2/grub.cfg配置
    搜索linux16的行,在该行结尾加上
    net.ifnames=0 biosdevname=0

# 2.修改网卡配置文件
    修改网卡配置文件中NAME和DEVICE两个部分
    网卡配置问价的名字修改为eth0

修改完成后重启Linux
复制代码

  网卡配置文件⭐⭐⭐

/etc/sysconfig/network-scripts/ifcfg-eth0

复制代码
TYPE=Ethernet    # 网络接口类型,通常为Ethernet(以太网)
PROXY_METHOD=none    # 指定不使用代理方法
BROWSER_ONLY=no    # 指定该接口不是浏览器专用的
BOOTPROTO=none    # 网卡固定ip还是自动获取ip
        (自动获取BOOTPROTO=dhcp,手动获取BOOTPROTO=none或static)
DEFROUTE=yes    # 允许通过次接口设置为默认路由
IPV4_FAILURE_FATAL=no    # 指定如果IPv4失败,系统不会停止网络服务
IPV6INIT=yes    # 启用IPv6地址配置
IPV6_AUTOCONF=yes    # 启用IPv6自动配置(自动生成IPv6地址)
IPV6_DEFROUTE=yes    # 表示IPv6使用该接口作为默认路由
IPV6_FAILURE_FATAL=no    # 如果IPv6失败,系统不会停止网络服务
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=eth0    # 设备名字
UUID=654890b9-0d8c-468a-9914-7e19520ba021    # 唯一标识符
DEVICE=eth0    # 设备名字
ONBOOT=yes    # 网卡是否开机自启动
IPADDR=10.0.0.200
PREFIX=24    # 子网掩码,设置这个局域网中最多能有多少台机器
GATEWAY=10.0.0.2    # 默认网关,系统将使用这个地址来访问其他网络
DNS1=223.5.5.5    # 首选DNS服务器地址
DNS2=223.6.6.6    # 备选DNS服务器地址
IPV6_PRIVACY=no
复制代码

用户访问网络过程

  用户访问www.baidu.com整个过程

  • 过程概述
    • DNS解析:域名-->ip
    • 与对应服务器的端口(80或443)建立连接:3次握手
    • 数据的请求与响应:http协议,传输数据
    • 断开连接:4次挥手

  局域网用户上网流程

  虚拟机上网流程

网络管理命令

yum install -y net-tools lsof nethogs iftop telnet nc nmap

  • 检查端口
  • 查看连接情况
  • 网络速度与程序占用情况
  • DNS解析
  • 追踪名命令

  检查端口

 案例01:检查是否存在22端口

ss/netstat:查看网络连接的命令
-l 仅显示监听状态的套接字
-n 以数字格式显示地址和端口号
-t 仅显示tcp套接字
-u 仅显示udp套接字
-p 显示每个套接字相关的进程信息
lsof:查看当前系统中打开的文件和对应的进程信息
-n 以数字格式显示网络地址(不要将ip反向解析为主机名、域名)
-i 显示打开的网络连接
-P 指定进程ID所打开的文件(不要把端口解析为对应的服务)
# 方法01
    ss -lntup |grep 22

# 方法02
    netstat -lntup |grep -w 22    # grep -w 精确过滤

# 方法03
    lsof -nPi :22

 案例02:检查是否可以访问22端口

复制代码
# 方法01
    telnet 10.0.0.200 22    # 命令行中推荐使用(检查是否有Connected标记)

# 方法02
    nc -v 10.0.0.200 22    # 一般用于shell脚本中检查端口是否开启

# 方法03(nmap 网路扫描工具)
    nmap -p 22 10.0.0.200    # nmap结果中只要有端口,则表示该端口开启

    nmap -p100-1000 10.0.0.200    # 指定要扫描的端口范围
    nmap -p 22 10.0.0.0/24 taobao.com    # 表示要扫描ip地址的范围 
复制代码

 

  网络速度

iftop:一个用于实时监控网络流量的命令
-n 不对IP地址进行反向解析(显示IP地址而不是主机名)
-i 指定要监控的网络接口(网卡)
-P 显示端口号
-N 禁止对端口进行反向解析

 总体速度

 进程流量

nethogs:按进程显示网络带宽使用情况

  DNS解析

  • dig dns解析查询
  • host 
  • nslookup

  追踪命令

  • ping 
  • traceroute(Linux)
  • tracert(Windows)

  网络命令总结⭐⭐⭐⭐⭐

网络命令 Linux windows
查询ip地址 ip/ifconfig ipconfig
检查端口号 ss/netstat/lsof nc/telnet/nmap netstat -ant
检查连接状况 ss -ant /netstat -ant  
检查速度 iftop /nethogs  
dns解析 dig/host/nslookup nslookup
路径追踪 traceroute tracert
查询当前系统配置的网关路由信息 ip route/route -n route print

抓包⭐⭐⭐

  概述

抓出指定协议、指定端口、指定ip的数据包

抓包工具 特点
Wireshark 可视化抓包工具
tcpdump 命令行工具(可以将捕获到的数据保存到文件中,使用Wireshark进行分析)
Fiddler 侧重于HTTP/HTTPS流量抓取和分析的调试代理工具
BurpSuite 攻击(测试)web应用的集成平台

  Wireshark过滤器过滤

比较大小
== !=
<= >=
与或非
and  && 并且
or  || 或者
! 取反

 过滤指定协议数据包

  • icmp
  • tcp
  • udp
  • http
  • arp
  • 过滤https数据包:tls
  • 排除arp包:!arp 或 not arp

 过滤指定端口数据包

tcp.port == 80    # 过滤出源端口和目标端口是80的数据包
tcp.srcport == 80    # 过滤出源端口是80的数据包
udp.dstport == 53    # 过滤出目标端口是53的数据包
tcp.port >= 1 and tcp.port <= 80 # 过滤端口范围

 过滤指定ip的数据包

ip.addr == 10.0.0.200    # 过滤出源ip和目标ip是10.0.0.200的数据包
ip.src == 10.0.0.200    # 过滤出源ip为10.0.0.200的数据包
ip.dstport == 10.0.0.200    # 过滤出源ip为10.0.0.200的数据包

 正则过滤⭐⭐⭐

  • Wireshark中不是所有的指标都支持正则
  • 字段的内容是字符串才能使用正则
matches 或 ~
# 过滤出http协议中包含www.baidu.com数据包
    http ~ "www.baidu.com"
# 过滤出http.host用户请求的域名中包含[0-9]+(.com|.cn)的数据包
    http.host ~ "[0-9]+(.com|.cn)"

  tcpdump 过滤

yum install -y tcpdump

参数 说明
-i 指定要监听的网络接口(网卡)
-n ip地址不进行反向解析
-v 显示详细信息
-w 将捕获的数据写入文件
复制代码
# 过滤协议
    tcpdump -vv -nn icmp
# 过滤指定端口号
    tcpdump -nn src port 80
    tcpdump -nn dst port 80
# 过滤指定主机
    tcpdump -nn host 10.0.0.200
# 过滤指定ip和端口的数据包
    tcpdump -nnn src host 10.0.0.200 and port 80
复制代码

  抓包小结⭐⭐⭐

tcpdump无法过滤应用层、表示层、会话层上协议的数据包,

过滤条件 wireshark tcpdump
过滤指定协议 osi七层上的协议 osi下四层协议
过滤指定端口

tcp.port == 80

tcp.srcport == 80

port 80 tcp

src port 80

过滤指定ip的数据包

ip.addr == 10.0.0.200

ip.src == 10.0.0.200

host 10.0.0.200

src host 10.0.0.200

正则 字段的内容为字符串
~或matches 匹配正则
不支持
&&  and and
||  or or
! !
选项

-w  保存数据包

-i   指定网卡

-v   显示详细信息

-n   地址不支持反向解析

posted @   猿小姜  阅读(76)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
点击右上角即可分享
微信分享提示