Linux基础学习之网络服务

一:TCP/IP网络基础
1,计算机网络体系结构
OSI七层模型:
(1)物理层:传输介质,组网
(2)数据链路层:物理地址寻址,数据的成帧,流量控制,数据的检错,重发等。协议代表有:SDLC, HDLC, PPP, STP, 帧中继等。CSMA/CD二层交换技术,网桥和MAC地址都在这层工作
(3)网络层:将网络地址翻译成对应的物理地址,网络地址寻址,路由转发。IP地址,NAT技术工作在此层,路由和三层交换机等设备也都工作在此层
(4)传输层:提供端对端的数据交换机制。工作在传输层的一种服务是TCP/IP协议套中的TCP(传输控制协议),另一项传输层服务是IPX/SPX协议集的SPX(序列包交换)
(5)会话层:负责在网络中两点之间的连接,维持和终止通信。
(6)表示层:数据格式化
(7)应用层:应用程序,服务(包括文件传输,文件管理以及电子邮件的信息处理)
在这里插入图片描述
2,OSI七层模型与TCP/IP四层,五层模型
在这里插入图片描述
五层协议解释
(1)物理层:通过物理手段把电脑连接起来,主要规定网络的一些电气特性,作用是负责传送0和1的电信号。通过物理手段将设备连接起来组网,物理手段有,光纤,双绞线,电缆,无线电波(WIFI)
互联网就是用物理设备将各个局域网相连组成更大的局域网,更大的局域网层层相连,最终就组成了互联网
(2)数据链路层:在物理层的上方,确定0和1的分组方式
以太网协议:以太网规定,一组电信号构成一个数据包,叫做“帧”,每个帧分成两个部分:标头(Head)和数据(Date)。标头包含数据包的一些说明项,比如发送者,接受者,数据类型等等
MAC地址:以太网规定,连入网络的搜有设备,都必须具有“网卡”接口。数据包必须是从一块网卡,传送到另一块网卡,网卡的地址,就是数据包的发送地址和接受地址,也叫MAC地址。他是全世界独一无二的地址,长度是48位的二进制,通常用12个十六进制数表示。前6个十六进制是厂商编号,后六个是该厂商的网卡流水号。定位确定设备位置
(3)网络层:作用是引入一套新的地址,使我们能够区分那些计算机属于同一个子网,这个套机制就叫做“网络地址”,也就是“IP”地址。

路由:通过互联的网络把信息从源地址传输到目的地址的活动。路由引导分组传送,经过一些中间的节点后,到他们最后的目的地
静态路由:路由器选择不共享路由信息(单方向路由),手工构造路由表
动态路由:路由器选择自动共享路由信息,自动构造路由表,需要一个路由协议,如RIP或OSPF
默认路由:缺省路由0.0.0.0
路由器,网关
ARP:地址解析 IP------>MAC
(4)传输层:建立端口到端口之间的通信。端口(区分数据包是提供哪个进程使用的,其实就是每一个使用网卡的程序编号 端口是0到65535之间的一个整数,正好是2的16次方。0到1023端口被系统占用,用户用大一1023的)
Socket接口:本质是编程接口(API),对TCP/IP的封装。TCP/IP只是一个协议栈,必须要具体实现,同时还要提供对外的操作接口(API),这就是Socket接口

UDP/TCP协议
UDP:简单,容易实现,可靠性差,数据包发送出去不知道对方是否收到。
TCP:每发送出一个数据包都要确认。
TCP协议主要的确认机制是“三次握手,四次挥手”
TCP报文格式:
在这里插入图片描述
三次握手

1、建立连接,客户端发送 syn包(SYN=1),SYN_SENT,等待服务器确认。同步序号seq=x
2、服务器收到syn包,确认syn包(ACK=1)序号 ack=x+1,发送 SYN=1,seq=y,SYN_REVD状态
3、客户端收到服务器的SYN+ACK包,发送ACK(ack=y+1),seq=x+1,服务器端和客户端基础连接状态
在这里插入图片描述
四次挥手
1、客户端请求释放连接,停止发送数据。发送FIN=1,seq=u。进入FIN-WAIT-1,
2、服务器收到释放连接请求。发出确认报文,ACK=1,ack=u+1,seq=v,进入CLOSE-WAIT
3、客户端收到服务端的确认请求报文,进入FIN-WAIT-2.
4、服务器端发送完数据。发送释放连接请求,FIN=1 ACK=1 seq=w,ack=u+1,服务器进入LAST-ACK
5、客户端收到服务器端的释放连接请求,发出确认,ACK=1 seq=u+1,ack=w+1,进入TIME-WAIT(2MSL),进入CLOSE
6、服务器端收到客户端的ACK=1之后,直接进入CLOSE
在这里插入图片描述
(5)应用层:规定应用程序的数据格式。消除设备固有数据格式和网络标准数据格式直接的差异

自顶向下的数据包结构
在这里插入图片描述
服务端响应

在这里插入图片描述
二:网络管理相关命令详解
1,显示本机网络连接,运行端口和路由表等信息的命令netstat
netstat:显示各种网卡相关信息,如网络连接,路由表,接口状态,无效连接,组播成员 等等
选项:
-a:列出系统中所有连接
-t:列出TCP连接
-u:列出UDP连接
-l:列出所有正在监听的服务
-n:用端口显示服务,而不是服务名
-p:显示服务的进程ID PID
-s:按协议统计
-c:每隔固定时间执行命令
-r:路由信息

[root@bogon ~]# netstat -tlunp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      7434/sshd
tcp        0      0 127.0.0.1:25            0.0.0.0:*               LISTEN      7570/master
tcp6       0      0 :::22                   :::*                    LISTEN      7434/sshd
tcp6       0      0 ::1:25                  :::*                    LISTEN      7570/master
#各字段释义
Proto:数据包的协议,分为TCP和UDP
Recv-Q:表示收到的数据已经在本地接收缓存,但是还没有被进程取走的数据包数量
Send-Q:对方没有收到的数据包,或者没有ACK回复的,还在本地缓冲区的数据包数量
Local Address:本地IP:端口,通过端口可以知道本级开启了那些服务
Foreign Address:远程主机:端口也就是远程那个IP使用那个端口连接到本机
State:连接状态,主要是已经建立连接(ESTABLISED)和监听两种状态(LISTEN)
PID/Program name:主要是进程ID和进程命令
寻找特定程序运行的端口
[root@bogon ~]# netstat -nltp|grep sshd
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      7434/sshd
tcp6       0      0 :::22                   :::*                    LISTEN      7434/sshd

寻找特定端口对应的程序
[root@bogon ~]# netstat -nltp|grep 22
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      7434/sshd
tcp6       0      0 :::22                   :::*                    LISTEN      7434/sshd
查看本机路由信息
[root@bogon ~]# netstat -r
Kernel IP routing table
Destination     Gateway         Genmask         Flags   MSS Window  irtt Iface
default         bogon           0.0.0.0         UG        0 0          0 ens33
192.168.1.0     0.0.0.0         255.255.255.0   U         0 0          0 ens33

2,配置网络或显示当前网络接口状态的命令SS

ss:显示当前网络接口状态
-t:tcp协议连接
-u:UDP连接
-l:监听状态的连接
-a:所有连接
-p:显示PID
-m:显示连接使用的内存信息

查看所有TCP协议的连接
[root@bogon ~]# ss -ta
State      Recv-Q Send-Q        Local Address:Port                         Peer Address:Port
LISTEN     0      128                       *:ssh                                     *:*
LISTEN     0      100               127.0.0.1:smtp                                    *:*
ESTAB      0      0             192.168.1.130:ssh                           192.168.1.1:61332
ESTAB      0      0             192.168.1.130:ssh                           192.168.1.1:63631
ESTAB      0      36            192.168.1.130:ssh                           192.168.1.1:61330
ESTAB      0      0             192.168.1.130:ssh                           192.168.1.1:63626
LISTEN     0      128                      :::ssh                                    :::*
LISTEN     0      100                     ::1:smtp                                   :::*



查看所有协议监听以及列出进程号
[root@bogon ~]# ss -nltup
Netid  State      Recv-Q Send-Q       Local Address:Port                      Peer Address:Port
tcp    LISTEN     0      128                      *:22                                   *:*                   users:(("sshd",pid=7455,fd=3))
tcp    LISTEN     0      100              127.0.0.1:25                                   *:*                   users:(("master",pid=7601,fd=13))
tcp    LISTEN     0      128                     :::22                                  :::*                   users:(("sshd",pid=7455,fd=4))
tcp    LISTEN     0      100                    ::1:25                                  :::*                   users:(("master",pid=7601,fd=14))
查看所有基于ssh建立连接信息
[root@bogon ~]# ss -o state established '( dport = :ssh or sport = :ssh)'

3,获取当前主机到目标主机所经过的路由(网关)
traceroute, mtr命令的使用

mtr:
-r:以报告的形式显示
-a:以那个IP地址发送数据包
-s:指定ping包大小
-n:no-dns不对ip地址做域名分析

[root@localhost ~]# traceroute 192.168.1.130
traceroute to 192.168.1.130 (192.168.1.130), 30 hops max, 60 byte packets
 1  localhost.localdomain (192.168.1.130)  0.045 ms  0.012 ms  0.011 ms


[root@localhost ~]# traceroute www.baidu.com
traceroute to www.baidu.com (61.135.169.121), 30 hops max, 60 byte packets
 1  gateway (192.168.1.2)  0.125 ms  0.141 ms  0.106 ms
 2  * * *
 3  * * *
 4  * * *
 5  * * *
 6  * * *
 7  * * *
 8  * * *
 9  * * *
10  * * *
11  * * *
12  * * *
13  * * *
14  * * *
15  * * *
16  * * *
17  * * *
18  * * *
19  * * *
20  * * *
21  * * *
22  * * *
23  * * *
24  * * *
25  * * *
26  * * *
27  * * *
28  * * *
29  * * *
30  * * *
[root@localhost ~]#

4,从网络上下载软件的命令wget,以及拷贝命令scp

-nd --no-directories,忽略目录层级
-r :下载目录结构
-c :断点续传
-O filename :重命名为filename
-q :不输出任何信息
-t num :重试次数num 默认是20次 -t 0 不限制
–limit-rate=num
-b :后台下载

下载单个文件
wget https://cn..........tar.gz

使用wget -O下载并以不同文件名保存
[root@bogon ~]# wget -O newfileneme.zip https://cn..........tar.gz

限速下载
[root@bogon ~]# wget --limit-rate=300k https://cn..........tar.gz

断点续传
[root@bogon ~]# wget -c https://cn..........tar.gz

后台下载
[root@bogon ~]# wget -b https://cn..........tar.gz


查看下载进度
[root@bogon ~]# tail -f wget-log

测试下载链接(进行定时下载时,在预定时间测试下载链接是否有效)
[root@bogon ~]# wget --spider   https://cn..........tar.gz


增加重试次数
[root@bogon ~]# wget --tries https://cn..........tar.gz

scp
-r:表示递归复制目录
-q:安静模式,不打印scp的命令输出信息
-i:限制速度,单位为kbps
-p:保留文件原有的权限信息,时间戳信息等
-o:可以加上一些ssh的选项

5,Linux网络抓包
nmap工具检测开放端口

扫描指定IIP开放的端口
[root@bogon ~]# nmap -v 192.168.1.130

网段内存活的机器
[root@bogon ~]# nmap -sp 192.168.1.130

扫描指定的IP的指定端口
[root@bogon ~]# nmap -p 192.168.1.130(范围:-p 20-30)

探测主机操作系统
[root@bogon ~]# nmap -o 192.168.1.130

全面的系统探测
[root@bogon ~]# nmap -A 192.168.1.130

穿透防火墙进行扫描
[root@bogon ~]# nmap -sA 192.168.1.130

tcpdump

采用命令行方式对接口的数据包进行筛选抓取,其丰富特性表现在灵活的表达式上。不带任何选项的tcpdump,默认会抓取第一个网络接口,且只有将tcpdump进程终止才会停止抓包。
tcpdump [ -DenNqvX ] [ -c count ] [ -F file ] [ -i interface ] [ -r file ]
[ -s snaplen ] [ -w file ] [ expression ]
-c:指定要抓取的包数量。注意,是最终要获取这么多个包。例如,指定"-c 10"将获取10个包,但可能已经
处理了100个包,只不过只有10个包是满足条件的包。
-i:interface:指定tcpdump需要监听的接口。若未指定该选项,将从系统接口列表中搜寻编号最小的已配
置好的接口(不包括loopback接口,要抓取loopback接口使用tcpdump -i lo):一旦找到第一个符合条件
的接口,搜寻马上结束。可以使用’any’关键字表示所有网络接口。
-n:对地址以数字方式显式,否则显式为主机名,也就是说-n选项不做主机名解析

-nn:除了-n的作用外,还把端口显示为数值,否则显示端口服务名。
-N:不打印出host的域名部分。例如tcpdump将会打印’nic’而不是’nic.ddn.mil’
-P:指定要抓取的包是流入还是流出的包。可以给定的值为"in"、“out"和"inout”,默认为"inout"。
-slen:设置tcpdump的数据包抓取长度为len,如果不设置默认将会是65535字节。对于要抓取的数据包较大
时,长度设置不够可能会产生包截断,若出现包截断,输出行中会出现"[|proto]"的标志(proto实际会
显示为协议名)。但是抓取len越长,包的处理时间越长,并且会减少tcpdump可缓存的数据包的数量,
从而会导致数据包的丢失,所以在能抓取我们想要的包的前提下,抓取长度越小越好。
-e:输出的每行中都将包括数据链路层头部信息,例如源MAC和目标MAC。
-q:快速打印输出。即打印很少的协议相关信息,从而输出行都比较简短。
-x:输出包的头部数据,会以16进制和ASCII两种方式同时输出。
-xx:输出包的头部数据,会以16进制和ASCII两种方式同时输出,更详细。
-v:当分析和打印的时候,产生详细的输出。
-vv:产生比-v更详细的输出。

-vvv:产生比-vv更详细的输出。
-D:列出可用于抓包的接口。将会列出接口的数值编号和接口名,它们都可以用于"-i"后。
-F:从文件中读取抓包的表达式。若使用该选项,则命令行中给定的其他表达式都将失效。
-w:将抓包数据输出到文件中而不是标准输出。可以同时配合"-G time"选项使得输出文件每time秒就自动切
换到另一个文件。可通过"-r"选项载入这些文件以进行分析和打印。
-r:从给定的数据包文件中读取数据。使用"-"表示从标准输入中读取。
-X:告诉tcpdump命令,需要把协议头和包内容都原原本本的显示出来(tcpdump会以16进制和ASCII的形
式显示),这在进行协议分析时是绝对的利器

[root@bogon ~]# tcpdump -i ens33 -e -nn -X -c 2 'port 22'
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on ens33, link-type EN10MB (Ethernet), capture size 262144 bytes
17:08:58.847555 00:0c:29:64:5b:63 > 00:50:56:c0:00:08, ethertype IPv4 (0x0800), length 194: 192.168.1.130.22 >        192.168.1.1.64087: Flags [P.], seq 2276638092:2276638232, ack 1685118577, win 320, length 140
        0x0000:  4510 00b4 704a 4000 4006 4616 c0a8 0182  E...pJ@.@.F.....
        0x0010:  c0a8 0101 0016 fa57 87b2 bd8c 6470 de71  .......W....dp.q
        0x0020:  5018 0140 847a 0000 6e05 ba55 c002 771c  P..@.z..n..U..w.
        0x0030:  2909 e4e0 9140 ddba 373e 52ba 834d 5afb  )....@..7>R..MZ.
        0x0040:  d97d 48a4 cca9 14b6 ddf0 1596 a196 a446  .}H............F
        0x0050:  2f7e ca9e fd44 c1bb b5b6 8595 ad34 6978  /~...D.......4ix
        0x0060:  601e 6171 2bac a838 2c89 ec41 784b 30bf  `.aq+..8,..AxK0.
        0x0070:  98ea 9351 d3ed 1e29 f02c 5501 6538 44dd  ...Q...).,U.e8D.
        0x0080:  2d1e fd5d c7a5 5734 4284 be29 2c16 e75c  -..]..W4B..),..\
        0x0090:  6277 225e 63d9 4a7d 3108 e852 82ba 52b8  bw"^c.J}1..R..R.
        0x00a0:  995f fdf0 5def b100 68a1 7764 cf87 49a5  ._..]...h.wd..I.
        0x00b0:  304f 0425                                0O.%
17:08:58.848294 00:50:56:c0:00:08 > 00:0c:29:64:5b:63, ethertype IPv4 (0x0800), length 60: 192.168.1.1.64087 >        192.168.1.130.22: Flags [.], ack 140, win 4105, length 0
        0x0000:  4500 0028 c41f 4000 8006 b2dc c0a8 0101  E..(..@.........
        0x0010:  c0a8 0182 fa57 0016 6470 de71 87b2 be18  .....W..dp.q....
        0x0020:  5010 1009 98dc 0000 0000 0000 0000       P.............
2 packets captured
2 packets received by filter
0 packets dropped by kernel
#第一行:tcpdump: verbose output suppressed, use -v or -vv for full protocol decode,提示使用选项-v,-vv可以看到更全面的输出内容
#第二行:listening on eth0, link-type EN10MB (Ethernet), capture size 65535 bytes, 我们监听的是通过ens33这个设备的网络包,他的链路层是基于以太网,抓包的大小限制是65535
#第三行:10:42:00.977879 00:0c:29:66:af:71 > 00:50:56:c0:00:08, ethertype IPv4 (0x0800),
length 230: 192.168.1.151.22 > 192.168.1.1.49193: Flags [P.], seq 1260588194:1260588370, ack
3221432109, win 436, length 176
10:42:00.977879
#对应“时,分,秒,微秒”
00:0c:29:66:af:71 > 00:50:56:c0:00:08,
#表示从MAC地址00:0c:29:66:af:71发送到MAC地址00:50:56:c0:00:08,
ethertype IPv4 (0x0800)
#表示Ethernet帧的协议类型为ipv4(即代码为0x0800)
length 230: 192.168.1.151.22 > 192.168.1.1.4919
#以太网帧的长度是230,源IP为192.168.1.151,源端口为22,>表示数据传输方向,目标地址是192.168.1.1,目的端口
是4919,
Flags [P.],
#Flag是P,表示数据传输,Flags [P.]:S=SYN,发起连接标志。P=PUSH,传送数据标志。F=FIN,关闭连接标志。
ack,表示确认包。RST=RESET,异常关闭连接。.,表示没有任何标志。
seq 1260588194:1260588370, ack 3221432109, win 436, length 176
#序号,确认号,窗口大小,长度
#观察三次握手和四次挥手

在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值