参考视频:Linux网络管理
参考网站:菜鸟教程
Linux基础(一)的笔记的地址:Linux基础(一)的笔记
网络基础是必备知识
1.上三层是对用户提供服务的,下四层是数据传递用的;
2.APDU(Application Protoco Data Unit):应用协议数据单元、PPDU(Presentation Protocol Data Unit ):表示协议数据单元、SPDU(Session Protocol Data Unit):会话协议数据单元;TPDU(Transport Protocol Data Unit):传输协议数据单元
3.接收是从下往上走,发送是从上往下走;
4.为什么要分层?方便管理,灵活性好,易于实现和维护等等;
5.MAC地址负责局域网通信,IP地址负责外网通信;
(1)各层的作用图
层次 | 作用 |
---|---|
应用层 | 用户接口 |
表示层 | 数据的表现形式、特定功能的实现,如加密 |
会话层 | 对应用会话的管理、同步 |
传输层 | 可靠与不可靠的传输、传输前的差错校验、流控 |
网络层 | 提供逻辑地址、选路 |
数据链路层 | 封装成帧、用MAC地址访问媒介、错误检测与修正 |
物理层 | 设备之间的比特流的透明传输、物理接口、电气特性等 |
(1)TCP/IP四层模型图
(2)TCP/IP模型与OSI模型的对应图
(3)网络接口层
(4)网际互联层
(5)传输层
(8)数据封装过程
(9)OSI模型与TCP/IP模型的比较
#二进制表示
00000000.00000000.00000000.00000000
11111111.11111111.11111111.11111111
#十进制表示
0.0.0.0
255.255.255.255
1.主机号全1的为当前网络的广播地址(例如“1.255.255.255”),主机号全0的为当前网络的网络本身(例如“1.0.0.0”),这两个都不能分配;
2.A类地址减2的原因:IP地址中全0表示“这个(this)”,网络号字段为全0的IP地址是个保留地址,意思是“本网络”;网络号为127保留作为本地软件回环测试本主机的进程之间的通信只用。
3.“127.0.0.1”是本地回环地址
4.私有IP地址不可以直接访问公网IP地址,需要把私有IP地址转换为公网中的IP地址,这就需要用到地址转换技术,也就说常说的NAT;
5.C类的第一个最大是223,因为还有D类地址、E类地址
(1)各分类的默认子网掩码
地址分类 | 子网掩码 |
---|---|
A类地址 | 255.0.0.0 |
B类地址 | 255.255.0.0 |
C类地址 | 255.255.255.0 |
1.IP地址跟子网掩码相与就可以得到网络地址,广播地址就是主机位全1的地址
2.可以修改子网掩码来划分网络
3.根据网络地址对应的网络号的位都置1,主机号都置0就可以算出子网掩码
(1)端口号的介绍及作用
(2)TCP协议包头
(3)UDP协议包头
(4)常见端口号
应用层协议 | 端口号 |
---|---|
FTP (文件传输协议) | 20、21 |
SSH (安全shell协议) | 22 |
telnet(远程登录协议) | 23 |
DNS(域名系统) | 53 |
http(超文本传输协议) | 80 |
SMTP(简单邮件传输协议) | 25 |
POP3(邮局协议3代) | 110 |
现在默认禁止23端口,因为它是明文传输,不安全
注意不要与这些常见端口冲突
(5)查看本机启动的端口
netstat -an
选项:
-a :查看所有连接和监听端口
-n :显示IP地址和端口号,而不显示域名和服务名
[root@Test ~]# netstat -an
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN
tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN
tcp 0 36 192.168.8.197:22 192.168.8.207:52839 ESTABLISHED
tcp6 0 0 :::22 :::* LISTEN
tcp6 0 0 ::1:25 :::* LISTEN
tcp6 0 0 :::443 :::* LISTEN
tcp6 0 0 :::111 :::* LISTEN
tcp6 0 0 :::80 :::* LISTEN
udp 0 0 0.0.0.0:111 0.0.0.0:*
udp 0 0 127.0.0.1:323 0.0.0.0:*
udp 0 0 0.0.0.0:728 0.0.0.0:*
udp6 0 0 :::111 :::*
udp6 0 0 ::1:323 :::*
udp6 0 0 :::728 :::*
raw6 0 0 :::58 :::* 7
UPD的状态为什么为空,因为它是不可靠的
TCP的状态
CLOSED:初始状态,表示TCP连接是“关闭着的”或“未打开的”。
LISTEN :表示服务器端的某个SOCKET处于监听状态,可以接受客户端的连接。
SYN_RCVD :表示服务器接收到了来自客户端请求连接的SYN报文。在正常情况下,这个状态是服务器端的SOCKET在建立TCP连接时的三次握手会话过程中的一个中间状态,很短暂,基本上用netstat很难看到这种状态,除非故意写一个监测程序,将三次TCP握手过程中最后一个ACK报文不予发送。当TCP连接处于此状态时,再收到客户端的ACK报文,它就会进入到ESTABLISHED 状态。
SYN_SENT :这个状态与SYN_RCVD 状态相呼应,当客户端SOCKET执行connect()进行连接时,它首先发送SYN报文,然后随即进入到SYN_SENT 状态,并等待服务端的发送三次握手中的第2个报文。SYN_SENT 状态表示客户端已发送SYN报文。
ESTABLISHED :表示TCP连接已经成功建立。
FIN_WAIT_1 :这个状态得好好解释一下,其实FIN_WAIT_1 和FIN_WAIT_2 两种状态的真正含义都是表示等待对方的FIN报文。而这两种状态的区别是:FIN_WAIT_1状态实际上是当SOCKET在ESTABLISHED状态时,它想主动关闭连接,向对方发送了FIN报文,此时该SOCKET进入到FIN_WAIT_1 状态。而当对方回应ACK报文后,则进入到FIN_WAIT_2 状态。当然在实际的正常情况下,无论对方处于任何种情况下,都应该马上回应ACK报文,所以FIN_WAIT_1 状态一般是比较难见到的,而FIN_WAIT_2 状态有时仍可以用netstat看到。
FIN_WAIT_2 :上面已经解释了这种状态的由来,实际上FIN_WAIT_2状态下的SOCKET表示半连接,即有一方调用close()主动要求关闭连接。注意:FIN_WAIT_2 是没有超时的(不像TIME_WAIT 状态),这种状态下如果对方不关闭(不配合完成4次挥手过程),那这个 FIN_WAIT_2 状态将一直保持到系统重启,越来越多的FIN_WAIT_2 状态会导致内核crash。
TIME_WAIT :表示收到了对方的FIN报文,并发送出了ACK报文。 TIME_WAIT状态下的TCP连接会等待2*MSL(Max Segment Lifetime,最大分段生存期,指一个TCP报文在Internet上的最长生存时间。每个具体的TCP协议实现都必须选择一个确定的MSL值,RFC 1122建议是2分钟,但BSD传统实现采用了30秒,Linux可以cat /proc/sys/net/ipv4/tcp_fin_timeout看到本机的这个值),然后即可回到CLOSED 可用状态了。如果FIN_WAIT_1状态下,收到了对方同时带FIN标志和ACK标志的报文时,可以直接进入到TIME_WAIT状态,而无须经过FIN_WAIT_2状态。(这种情况应该就是四次挥手变成三次挥手的那种情况)
CLOSING :这种状态在实际情况中应该很少见,属于一种比较罕见的例外状态。正常情况下,当一方发送FIN报文后,按理来说是应该先收到(或同时收到)对方的ACK报文,再收到对方的FIN报文。但是CLOSING 状态表示一方发送FIN报文后,并没有收到对方的ACK报文,反而却也收到了对方的FIN报文。什么情况下会出现此种情况呢?那就是当双方几乎在同时close()一个SOCKET的话,就出现了双方同时发送FIN报文的情况,这是就会出现CLOSING 状态,表示双方都正在关闭SOCKET连接。
CLOSE_WAIT :表示正在等待关闭。怎么理解呢?当对方close()一个SOCKET后发送FIN报文给自己,你的系统毫无疑问地将会回应一个ACK报文给对方,此时TCP连接则进入到CLOSE_WAIT状态。接下来呢,你需要检查自己是否还有数据要发送给对方,如果没有的话,那你也就可以close()这个SOCKET并发送FIN报文给对方,即关闭自己到对方这个方向的连接。有数据的话则看程序的策略,继续发送或丢弃。简单地说,当你处于CLOSE_WAIT 状态下,需要完成的事情是等待你去关闭连接。
LAST_ACK :当被动关闭的一方在发送FIN报文后,等待对方的ACK报文的时候,就处于LAST_ACK 状态。当收到对方的ACK报文后,也就可以进入到CLOSED 可用状态了。
(1)DNS简介
(2)从Hosts文件到DNS
(3)DNS服务的作用
(4)域名空间结构
(5)DNS查询过程
(6)DNS查询类型
(1)网关的简介
(2)网关的作用
(1)ifconfig命令
#查看与配置网络状态命令
ifconfig
#临时配置eth0网卡的IP地址和子网掩码
ifconfig eth0 192.168.8.197 netmask 255.255.255.0
这是红帽专有图形化工具
如果没有这个命令,可以执行“”yum install setuptool“”安装setup
注:这是永久修改配置
1.直接在文件修改对应的值
2.注意:文件名必须跟设备名一致
3.重启网络服务才生效
(2)修改主机名
主机名文件
#centos7
[root@Test etc]# vim /etc/hostname
Test.localdomain
#centos
[root@Test etc]# vim /etc/sysconfig/network
查看和临时修改主机名
#查看主机名
[root@Test etc]# hostname
Test.localdomain
#设置主机名
[root@Test etc]# hostname hahaha
[root@Test etc]# hostname
hahaha
linux的主机名跟windows的主机名那么重要
重新登录才会显示刚才的主机名
(3)DNS配置文件
修改DNS
[root@hahaha ~]# vim /etc/resolv.conf
# Generated by NetworkManager
search localdomain
nameserver 114.114.114.114
(4)UUID重复的解决方法
#第一步:生成UUID
[root@localhost ~]# uuidgen 网卡名称
#第二步:把刚才生成的UUID号写入网络配置文件ifcfg-网卡名称
#第三步:重启网络
Virtualbox的centos7 nat和桥接网络配置
(1)ifconfig命令
ifconfig [网络设备][down up -allmulti -arp -promisc][add<地址>][del<地址>][<hw<网络设备类型><硬件地址>][io_addr<I/O地址>][irq<IRQ地址>][media<网络媒介类型>][mem_start<内存地址>][metric<数目>][mtu<字节>][netmask<子网掩码>][tunnel<地址>][-broadcast<地址>][-pointopoint<地址>][IP地址]
add<地址> 设置网络设备IPv6的IP地址。
del<地址> 删除网络设备IPv6的IP地址。
down 关闭指定的网络设备。
<hw<网络设备类型><硬件地址> 设置网络设备的类型与硬件地址。
io_addr<I/O地址> 设置网络设备的I/O地址。
irq<IRQ地址> 设置网络设备的IRQ。
media<网络媒介类型> 设置网络设备的媒介类型。
mem_start<内存地址> 设置网络设备在主内存所占用的起始地址。
metric<数目> 指定在计算数据包的转送次数时,所要加上的数目。
mtu<字节> 设置网络设备的MTU。
netmask<子网掩码> 设置网络设备的子网掩码。
tunnel<地址> 建立IPv4与IPv6之间的隧道通信地址。
up 启动指定的网络设备。
-broadcast<地址> 将要送往指定地址的数据包当成广播数据包来处理。
-pointopoint<地址> 与指定地址的网络设备建立直接连线,此模式具有保密功能。
-promisc 关闭或启动指定网络设备的promiscuous模式。
[IP地址] 指定网络设备的IP地址。
[网络设备] 指定网络设备的名称。
(2)关闭和重启网卡
#禁用该网卡设备
ifdown 网卡设备名
#启用该网卡设备
ifup 网卡设备名
(3)查询网络状态:netstat命令
netstat [选项]
选项:
-t : 列出TCP协议端口
-u : 列出UPD协议端口
-l : 仅列出在监听状态网络服务
-n :不使用域名与服务名,而使用IP地址和端口号
-a :列出所有的网络连接
-r : 列出路由表,功能和route命令一致
[root@Test ~]# netstat -rn
Kernel IP routing table
Destination Gateway Genmask Flags MSS Window irtt Iface
0.0.0.0 192.168.8.1 0.0.0.0 UG 0 0 0 enp0s3
192.168.8.0 0.0.0.0 255.255.255.0 U 0 0 0 enp0s3
(4)路由命令:route命令
#查看路由列表(可以看到网关)
[root@Test ~]# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 192.168.8.1 0.0.0.0 UG 100 0 0 enp0s3
192.168.8.0 0.0.0.0 255.255.255.0 U 100 0 0 enp0s3
#临时设定网关
[root@Test ~]# route add default gw 192.168.8.1
nslookup [主机名或IP]
#进行域名与IP地址解析
[root@Test ~]# nslookup www.baidu.com
Server: 114.114.114.114
Address: 114.114.114.114#53
Non-authoritative answer:
www.baidu.com canonical name = www.a.shifen.com.
Name: www.a.shifen.com
Address: 61.135.169.121
Name: www.a.shifen.com
Address: 61.135.169.125
#查看本机DNS服务器
[root@Test ~]# nslookup
> server
Default server: 114.114.114.114
Address: 114.114.114.114#53
如果没有这个命令,执行“yum install bind-utils”进行安装
(1)探测网络的命令:ping命令
#探测指定IP或域名的网络情况
ping [选项] IP或域名
选项:
-c : 设置完成要求回应的次数
-i : 指定收发信息的间隔时间
-R : 记录路由过程
-s : 设置数据包的大小
-t : 设置存活数值TTL的大小
[root@Test ~]# ping -c 4 www.baidu.com
PING www.a.shifen.com (61.135.169.121) 56(84) bytes of data.
64 bytes from 61.135.169.121 (61.135.169.121): icmp_seq=1 ttl=57 time=4.81 ms
64 bytes from 61.135.169.121 (61.135.169.121): icmp_seq=2 ttl=57 time=3.24 ms
64 bytes from 61.135.169.121 (61.135.169.121): icmp_seq=3 ttl=57 time=4.13 ms
64 bytes from 61.135.169.121 (61.135.169.121): icmp_seq=4 ttl=57 time=8.21 ms
--- www.a.shifen.com ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3009ms
rtt min/avg/max/mdev = 3.248/5.104/8.215/1.880 ms
(2)远程登录命令:telnet命令
#远程管理与端口探测命令
telnet [域名或IP] [端口]
注意:这是不加密的,有很大安全隐患
(3)路由跟踪命令:traceroute命令
traceroute [选项] IP或域名
选项:
-n :使用IP,不使用域名,速度更快
[root@Test ~]# traceroute www.baidu.com
traceroute to www.baidu.com (61.135.169.121), 30 hops max, 60 byte packets
1 gateway (192.168.8.1) 1.584 ms 1.881 ms 2.054 ms
2 192.168.1.1 (192.168.1.1) 2.307 ms 2.727 ms 2.381 ms
3 61.49.240.1 (61.49.240.1) 26.476 ms 26.599 ms 26.836 ms
4 125.33.184.89 (125.33.184.89) 27.385 ms 27.614 ms 27.792 ms
5 61.148.143.114 (61.148.143.114) 27.971 ms 123.126.0.50 (123.126.0.50) 26.910 ms 61.148.156.18 (61.148.156.18) 54.556 ms
6 61.49.168.106 (61.49.168.106) 28.872 ms 123.125.248.106 (123.125.248.106) 5.936 ms 61.49.168.90 (61.49.168.90) 7.044 ms
7 * * *
8 * * *
9 * * *
10 * * *
11 * * *
12 * * *
13 * * *
14 * * *
15 * * *
16 * * *
17 * * *
18 * * *
19 * * *
20 * * *
21 * * *
22 * * *
23 * * *
24 * * *
25 * * *
26 * * *
27 * * *
28 * * *
29 * * *
30 * * *
其实也是ICMP报文,ping不通一般是做了防ping
(4)下载命令:wget命令
wget [选项] url
(5)抓包命令:tcpdump命令
tcpdump -i eth0 -nnX port 21
选项:
-i : 指定网卡接口
-nn :将数据包中的域名与服务转为IP和端口
-X :以16进制和ASCII码显示数据包内容
port : 指定监听的端口
(1)对称加密算法
非对称加密算法(asymmetric cryptographic algorithm)又名“公开密钥加密算法”,非对称加密算法需要两个密钥:公开密钥(public key)和私有密钥(private key)
非对称加密算法图
放在~/.ssh目录下的known_hosts文件里;里面有了就不会需要再下载
(2)ssh命令
#远程管理指定Linux服务器
ssh 用户名@ip
(3)scp命令
#下载文件
scp [-r] 用户名@ip:文件路径 本地路径
#上传文件
scp [-r] 本地文件 用户名@ip:文件路径