一、相关概念
IP地址
IP地址(Internet Protocol Address)是用于唯一标识和定位计算机网络中设备(如计算机、服务器、路由器等)的数字标识。在互联网中,IP地址是用来进行网络通信和数据传输的基础。
IP地址由32位或128位的二进制数字组成,用点分十进制(IPv4)或冒号分隔的十六进制(IPv6)表示。IPv4地址是目前广泛使用的IP地址格式,它由四个8位的数字组成,每个数字范围从0到255。例如,192.168.0.1是一个IPv4地址。
IP地址分为公网IP地址和私网IP地址。公网IP地址是由互联网服务提供商(ISP)分配给用户设备的地址,用于在全球范围内进行通信。私网IP地址是在局域网中使用的地址,用于在局域网内部进行通信,不能直接在公网上访问。
IP地址的作用是唯一标识和定位网络设备,它允许设备之间进行通信和数据传输。通过IP地址,计算机可以找到目标设备,并将数据包传送到正确的位置。在互联网中,IP地址是互联网协议的基础,它是网络通信的基本要素之一。
需要注意的是,由于IPv4地址的资源有限,全球范围内的互联网地址已经基本耗尽。为了解决这个问题,IPv6地址被引入,它采用128位的地址空间,提供了更多的IP地址供使用。IPv6地址的格式和表示方式与IPv4有所不同,但其基本作用和原理与IPv4相同。
特殊IP地址
主机名
主机名(hostname)是用来标识网络中的设备(主机)的名称。它是由一串字符组成的标识符,用于在网络中唯一标识一个设备。主机名通常用于识别和访问网络中的服务器、计算机或其他网络设备。
主机名可以是一个简单的名称,如"server1"或"mycomputer",也可以是一个完全限定的域名,如"www.example.com"。主机名通常由字母、数字和连字符组成,不区分大小写。
主机名在网络中起到了重要的作用,它可以用来定位和访问特定的设备。在互联网中,主机名与IP地址相对应,通过域名系统(DNS)将主机名转换为IP地址,以便进行网络通信和数据传输。
需要注意的是,主机名是由网络管理员或设备所有者分配和管理的。在局域网中,主机名通常是根据设备的用途或位置进行命名的,而在互联网中,主机名通常是由域名注册机构分配的。
主机名的作用是在网络中唯一标识和定位设备。通过主机名,用户可以更方便地访问特定的设备,而无需记住复杂的IP地址。同时,主机名也可以提供更具有可读性和易记性的标识,使网络管理和配置更加方便。
总之,主机名是用来标识和定位网络设备的名称,它在网络中起到了重要的作用。通过主机名,用户可以更方便地访问设备,并进行网络通信和数据传输。
域名解析
P地址实在是难以记忆,有没有什么办法可以通过主机名或替代的字符地址去代替数字化的P地址呢?
实际上,我们一直都是通过字符化的地址去访问服务器,很少指定P地址
比如,我们在浏览器内打开:WWW.baidu.com,会打开百度的网址
其中,www.baidu..com,是百度的网址,我们称之为:域名
二、网络连接测试
ping命令
Linux ping命令是一个用于测试网络连接和检测网络故障的工具。它可以向指定的目标主机发送一个或多个ICMP Echo Request报文,并等待目标主机返回ICMP Echo Reply报文作为响应。通过观察响应时间和丢包情况,我们可以判断网络连接是否正常。
Linux ping命令的基本语法是:
ping [选项] [目标主机]
其中,目标主机可以是IP地址或域名。选项可以用来控制ping命令的行为,例如:
-c <次数>
:指定发送请求的次数,然后停止。-i <间隔>
:指定发送请求的间隔时间,单位是秒。-s <大小>
:指定发送数据包的大小,单位是字节。-t <TTL>
:指定发送数据包的TTL(Time To Live)值,即最大跳数。-w <超时>
:指定ping命令的最大执行时间,单位是秒。Linux ping命令的输出结果包含以下信息:
64 bytes from 192.168.1.1: icmp_seq=1 ttl=64 time=0.025 ms
:表示收到了来自192.168.1.1的64字节的回应报文,序号是1,TTL值是64,响应时间是0.025毫秒。--- 192.168.1.1 ping statistics ---
:表示开始显示ping命令的统计信息。10 packets transmitted, 10 received, 0% packet loss, time 9008ms
:表示发送了10个请求报文,收到了10个回应报文,丢包率是0%,总时间是9008毫秒。rtt min/avg/max/mdev = 0.021/0.035/0.078/0.011 ms
:表示响应时间(Round Trip Time)的最小值、平均值、最大值和标准差,单位是毫秒。- Ctrl+C可中断程序执行
查询本地网络配置
- 使用命令提示符(cmd)输入一些命令,例如:
ipconfig
:查看本地IP地址、子网掩码、默认网关等信息。ipconfig /all
:查看更详细的本地网络配置信息,包括物理地址、DNS服务器、DHCP状态等。ping
:测试本地与目标主机的网络连通性,例如ping www.baidu.com
。tracert
:跟踪本地到目标主机的数据包路径,例如tracert www.baidu.com
。- 使用图形界面操作,例如:
- 在控制面板中打开网络和共享中心,查看本地网络连接状态和属性。
- 在任务栏中右键点击网络图标,选择打开网络和Internet设置,查看或修改本地网络配置。
查询本地虚拟机
- 使用命令提示符(cmd)输入一些命令,例如:
ifconfig
:查看本地虚拟机IP地址、子网掩码、默认网关等信息- 使用图形界面操作,例如
- 点击“控制面板”,选择“网络和Internet”
- 点击“查看网络状态和任务”
- 点击“更改适配器设置
- 选择VMnet8那个适配器,邮件选择“属性”
- 选择IPV4一项,点击右下角的“属性”
三、网络连接模式
桥接模式
相当于在物理主机与虚拟机网卡之间 架设了一座桥梁,从而可以通过物理主机的网卡访问外网。
NAT模式
NAT模式:让VM虚拟机的网络服务发挥路由器的 作用,使得通过虚拟机软件模拟的主机可以通过 物理主机访问外网。在真机中,NAT虚拟机网卡 对应的物理网卡是VMnet8。
仅主机模式
仅主机模式:仅让虚拟机内的主机与物理主机通信,不能访问外网。在真机中,仅主机模式模拟网卡对应的物理网卡是VMnet1。
四、配置网络IP地址
配置静态IP
虚拟机左上角“编辑”,点击有个“虚拟网络编辑器”
- Linux修改静态IP的方法和步骤取决于Linux的发行版和版本,以及网络接口的类型和名称。一般来说,需要考虑以下几个方面:
- 确定要设置静态IP地址的网络接口名称,例如eth0或ens33。
- 编辑网络接口的配置文件,通常位于/etc/sysconfig/network-scripts或/etc/network目录下,根据不同的发行版可能有不同的文件名,例如ifcfg-eth0或interfaces。
- 在配置文件中修改或添加以下参数:
- BOOTPROTO=“static”:指定使用静态IP地址,而不是动态获取(DHCP)。
- IPADDR=“xxx.xxx.xxx.xxx”:指定静态IP地址,根据网络环境选择合适的网段。
- NETMASK=“255.xxx.xxx.xxx”:指定子网掩码,根据网络环境选择合适的值。
- GATEWAY=“xxx.xxx.xxx.xxx”:指定网关地址,通常是路由器或交换机的IP地址。
- DNS1=“xxx.xxx.xxx.xxx”:指定DNS服务器地址,可以使用公共的DNS服务,例如8.8.8.8或114.114.114.114。
- 保存配置文件并重启网络服务或重启系统使修改生效。也可以:systemctl restart network
配置主机名
hostname命令
- Linux hostname命令是一个用于显示和设置系统的主机名的工具。主机名是用来标识和连接网络中的机器的一个独特的名称。Linux系统中的HOSTNAME环境变量保存了当前的主机名,使用hostname命令可以查看和修改这个变量的值。
- Linux hostname命令的基本语法是:
hostname [选项] [主机名/文件名]
其中,主机名/文件名参数是可选的,用来指定一个新的主机名或从一个文件中读取主机名。选项参数可以用来控制hostname命令的行为,例如:
-i
或--ip-address
:显示主机名对应的IP地址。
-I
或--all-ip-addresses
:显示所有分配给系统网络接口的IP地址。
-s
或--short
:显示缩短的主机名,即去掉点(.)后面的部分。
-f
或--fqdn
或--long
:显示完全域名(FQDN),即主机名加上DNS域名。
-d
或--domain
:显示DNS域名。
-F
或--file
:从指定文件中读取主机名。
-b
或--boot
:忽略无效的主机名,使用默认值。Linux hostname命令只能临时修改主机名,重启系统后会恢复原来的值。如果要永久修改主机名,需要使用hostnamectl命令或直接编辑配置文件
/etc/hostname
和/etc/hosts
。
hostnamectl命令
- Linux hostnamectl命令是一个用于查询和更改系统主机名和相关设置的工具。主机名是用来标识和连接网络中的机器的一个独特的名称。Linux系统中的HOSTNAME环境变量保存了当前的主机名,使用hostnamectl命令可以查看和修改这个变量的值。
- Linux hostnamectl命令的基本语法是:
hostnamectl [选项] [命令]
其中,命令参数可以是以下几种:
status
:用于查看当前主机名设置。set-hostname NAME
:用于设置系统主机名。set-icon-name NAME
:用于设置主机图标名称。set-chassis NAME
:用于设置主机机箱类型。选项参数可以用来控制hostnamectl命令的行为,例如:
-i
或--ip-address
:显示主机名对应的IP地址。
-I
或--all-ip-addresses
:显示所有分配给系统网络接口的IP地址。
-s
或--short
:显示缩短的主机名,即去掉点(.)后面的部分。
-f
或--fqdn
或--long
:显示完全域名(FQDN),即主机名加上DNS域名。
-d
或--domain
:显示DNS域名。
-F
或--file
:从指定文件中读取主机名。
-b
或--boot
:忽略无效的主机名,使用默认值。
-H --host=[USER@]HOST
:用于操作远程主机。Linux hostnamectl命令可以临时或永久地修改主机名,不需要重启系统。如果要修改/etc/hostname或/etc/hosts文件中的主机名,需要使用hostname命令或直接编辑文件。
修改hosts映射文件
- hosts映射文件是一个用于定义IP地址和主机名的映射关系的系统文件,通常位于C:\Windows\System32\drivers\etc目录下,没有扩展名,可以用文本编辑器打开。
- 修改hosts映射文件的目的是为了绕过DNS服务器,直接访问指定的IP地址,或者为一些IP地址设置方便记忆的主机名,例如虚拟机的IP地址。
- 修改hosts映射文件的方法和步骤如下:
- 首先,找到hosts文件,并检查其是否为只读属性,如果是,需要取消只读属性。
- 然后,使用管理员权限打开hosts文件,并在文件末尾添加新的映射关系,格式为
IP地址 空格 主机名
,例如192.168.10.100 hadoop100
。- 最后,保存并关闭hosts文件,并清空浏览器缓存,即可生效。
五、远程登录SSH
ssh命令
- Linux ssh命令是一个用于通过安全的加密协议,远程登录和操作其他Linux主机的工具。它可以实现数据的传输和执行命令,同时保证通信的安全性和效率。
- Linux ssh命令的基本语法是:
ssh [选项] [用户@]主机 [命令]
其中,用户@主机参数是指定要登录的远程主机的用户名和地址,可以是IP地址或域名。如果不指定用户名,则默认为当前用户。命令参数是可选的,用来在远程主机上执行指定的命令,而不进入交互式shell。选项参数可以用来控制ssh命令的行为,例如:
-p <端口>
:指定远程主机的SSH服务端口,默认为22。
-i <文件>
:指定要使用的私钥文件,用于公钥认证。
-v
:显示详细的调试信息,可以重复使用以增加信息级别。
-C
:启用压缩数据传输,可以提高速度。
-X
:启用X11转发,可以在远程主机上运行图形界面程序。Linux ssh命令的使用步骤如下:
- 首先,确保本地主机和远程主机都安装了SSH服务,并且远程主机的SSH服务已经启动。
- 然后,在本地主机上运行ssh命令,输入远程主机的用户名和地址,以及要执行的命令(如果有)。
- 接着,如果是第一次登录远程主机,系统会提示是否接受远程主机的公钥指纹,并将其保存在本地主机的$HOME/.ssh/known_hosts文件中。输入yes表示接受。
- 然后,系统会要求输入远程主机的密码或私钥口令(如果使用公钥认证)。输入正确后,就可以登录或执行命令了。
- 最后,在远程主机上操作完成后,可以输入exit或Ctrl+D退出登录。
六、网络请求和下载
wget命令
- Linux wget命令是一个用于从Web下载文件的命令行工具,支持 HTTP、HTTPS及FTP协议下载文件,而且wget还提供了很多选项,例如下载多个文件、后台下载,使用代理等等,使用非常方便。
- Linux wget命令的基本语法是:
wget [选项]... [URL]...
其中,[URL]是要下载的文件的网址,可以是一个或多个。[选项]是用来控制wget命令的行为和功能的参数,例如:
-O
或--output-document=文件
:将下载的文件保存为指定的文件名。-c
或--continue
:断点续传,继续下载未完成的部分。-b
或--background
:后台下载,将输出重定向到日志文件。-i
或--input-file=文件
:从指定的文件中读取要下载的URL列表。-r
或--recursive
:递归下载,下载指定的URL以及其链接到的所有页面和文件。-l
或--level=数字
:指定递归下载的最大深度,默认为5。-A
或--accept=列表
:指定要下载的文件类型,用逗号分隔,例如jpg,png,gif。-R
或--reject=列表
:指定要排除的文件类型,用逗号分隔。-p
或--page-requisites
:下载所有显示网页所需的元素,如图片和样式表等。-k
或--convert-links
:下载完成后,将网页中的链接修改为本地链接。-m
或--mirror
:镜像模式,相当于-r -N -l inf -nr选项的组合。-w
或--wait=秒数
:在两次下载之间等待指定的秒数,可以避免过于频繁地访问服务器。-t
或--tries=次数
:指定重试的次数,0表示无限制。-o
或--output-file=日志文件
:将详细的输出信息写入指定的日志文件中。-q
或--quiet
:安静模式,不输出任何信息。-v
或--verbose
:详细模式,输出详细的信息,默认开启。-nv
或--no-verbose
:非详细模式,只输出简要的信息。
curl命令
- Linux curl命令是一个用于通过网络或者Internet传输文件的命令行工具,支持一系列常见协议(包括HTTP、HTTPS、FTP和SMB)。使用它可以访问FTP站点、发送电子邮件、连接到SAMBA地址、上传和下载文件以及相关任务。
- Linux curl命令的基本语法是:
curl [选项]... [URL]...
其中,[URL]是要传输的文件的网址,可以是一个或多个。[选项]是用来控制curl命令的行为和功能的参数,例如:
-o <文件>
或--output <文件>
:将下载的文件保存为指定的文件名,而不是使用URL中的默认文件名。-O
或--remote-name
:将下载的文件保存为URL中的默认文件名。-C <偏移量>
或--continue-at <偏移量>
:断点续传,从指定的偏移量处继续下载未完成的部分。-b <数据/文件>
或--cookie <数据/文件>
:发送cookie数据到HTTP服务器,数据格式为NAME1=VALUE1; NAME2=VALUE2
,或者从指定的文件中读取cookie数据。-c <文件>
或--cookie-jar <文件>
:操作结束后将服务器返回的cookies保存到指定的文件中。-d <数据>
或--data <数据>
:以POST方式发送指定的数据到HTTP服务器,数据格式为name1=value1&name2=value2
,或者以@
开头指定一个包含数据的文件。-F <名称=内容>
或--form <名称=内容>
:以multipart/form-data方式发送指定的数据到HTTP服务器,内容可以是一个文件名,或者以@
开头指定一个包含数据的文件。-H <头部>
或--header <头部>
:添加一个自定义的HTTP头部到请求中,格式为name: value
。-i
或--include
:输出HTTP头和返回内容。-I
或--head
:只输出HTTP头,不获取内容。-L
或--location
:如果服务器返回3xx状态码,则自动跟随重定向的URL。-u <用户[:密码]>
或--user <用户[:密码]>
:设置服务器的用户和密码,支持HTTP、FTP和SMB协议。-U <用户[:密码]>
或--proxy-user <用户[:密码]>
:设置代理服务器的用户和密码,支持HTTP、FTP和SMB协议。-x <主机[:端口]>
或--proxy <主机[:端口]>
:使用指定的代理服务器和端口访问URL,支持HTTP、FTP和SMB协议。-A <字符串>
或--user-agent <字符串>
:设置HTTP请求头中的User-Agent字段,用于伪装浏览器类型。-e <URL>
或--referer <URL>
:设置HTTP请求头中的Referer字段,用于伪造来源页面。-X <命令>
或--request <命令>
:设置HTTP请求方法,如GET、POST、PUT等。
端口
nmap命令
- Linux nmap命令是一个用于网络探测和安全审计的命令行工具,支持多种扫描技术和参数,可以发现网络上的主机、服务、操作系统、防火墙等信息。
- Linux nmap命令的基本语法是:
nmap [扫描类型] [选项] {目标规范}
其中,{目标规范}是指定要扫描的主机或网络的地址,可以是IP地址、域名、子网等。[扫描类型]是指定使用的扫描技术,例如:
-sL
:列表扫描,只列出目标主机的名称和地址,不发送任何报文。-sn
:Ping扫描,只检测目标主机是否存活,不进行端口扫描。-Pn
:跳过Ping检测,直接进行端口扫描。-sS
:SYN扫描,使用TCP半开放连接方式进行端口扫描,速度快且隐蔽。-sT
:TCP连接扫描,使用完整的TCP连接方式进行端口扫描,速度慢且易被发现。-sU
:UDP扫描,使用UDP报文进行端口扫描,速度慢且不稳定。-sO
:IP协议扫描,使用IP报文进行协议扫描,检测目标主机支持的协议类型。-sI
:空闲扫描,使用另一台主机作为代理进行端口扫描,难以被追踪。[选项]是用来控制nmap命令的行为和功能的参数,例如:
-p
:指定要扫描的端口范围或列表,如-p 22,80,443或-p 1-1024。-F
:快速模式,只扫描最常见的100个端口。-r
:顺序模式,按照端口号从小到大进行扫描,不随机化。-O
:开启操作系统检测功能,尝试识别目标主机的操作系统类型和版本。-sV
:开启服务版本检测功能,尝试识别目标主机开放端口上运行的服务类型和版本。-A
:开启综合模式,相当于-O -sV -sC -T4选项的组合。-v
:开启详细模式,输出更多的信息。-oX <文件>
:将扫描结果以XML格式保存到指定的文件中。
netstat命令
- Linux netstat命令是一个用于显示与IP、TCP、UDP和ICMP协议相关的统计数据和网络状态的工具,一般用于检查本机各端口的网络连接情况,或者诊断网络问题。
- Linux netstat命令的基本语法是:
netstat [选项]...
其中,[选项]是用来控制netstat命令的行为和功能的参数,例如:
-a
或--all
:显示所有连接中的Socket。-A <网络类型>
或--<网络类型>
:列出该网络类型连接中的相关地址,如inet、unix、ipx等。-c
或--continuous
:持续列出网络状态。-C
或--cache
:显示路由器配置的缓存信息。-e
或--extend
:显示网络其他相关信息,如用户ID、进程ID等。-F
或--fib
:显示路由缓存。-g
或--groups
:显示多播功能群组组员名单。-h
或--help
:显示帮助信息。-i
或--interfaces
:显示网络接口信息表单,如MTU、接收和发送的数据包数量等。-l
或--listening
:仅显示正在监听的服务状态。-n
或--numeric
:直接使用IP地址,而不通过域名服务器解析。-N
或--netlink
或--symbolic
:显示网络硬件外围设备的符号链接名称。-o
或--timers
:显示计时器数据信息。-p
或--programs
:显示正在使用Socket的程序识别码和名称。-r
或--route
:显示路由表信息。-s
或--statistics
:显示网络工作信息统计表信息,如TCP、UDP、ICMP等协议的数据包数量等。-t
或--tcp
:显示TCP传输协议的连接状态。-u
或--udp
:显示UDP传输协议的连接状态。-v
或--verbose
:显示详细的执行过程。-V
或--version
:显示版本信息。-w
或--raw
:显示RAW传输协议的连接状态。-x
或--unix
:此参数的效果和指定"-A unix"参数相同。--ip或-inet
: 此参数的效果和指定"-A inet"参数相同。