一、计算机网络体系结构
1.1 OSI七层模型
物理层:传输介质,组网
数据链路层:帧,MAC地址寻址,数据成帧,数据监测,重发 ARP
网络层:将网络地址转化为物理地址,网络地址寻址,路由转发 IP协议
传输层:提供端对端的数据交换,连接端口
会话层:提供点对点的连接
表示层:数据格式化
应用层:应用程序,服务

1.2 TCP/IP的五层模型
(1)物理层:
物理介质,组网。光钎,双绞线。
(2)数据链路层:
MAC:48位二进制数,12十六进制表示,确定设备位置
数据成帧,封装 以太网包头
(3)网络层:
IP协议: 网络寻址
网络地址,主机地址
IP地址分类: ABCDE
子网划分
子网掩码
与运算
路由
【静态路由:手工路由表
动态路由:路由协议学习 OSPF RIP
默认路由:缺省路由 0.0.0.0】
路由器。网关
ARP 地址解析 ip------->mac
(4)传输层:
端口:数据包区分,IP+端口
UDP:简单,容易实现,不可靠传输
TCP:可靠传输
TCP:报文格式:20字节
(5)应用层:
应用程序
服务
HTTP、FTP、SMTP 
二、UDP/TCP协议
UDP和TCP协议都是传输层的协议,主要作用就是在应用层的数据包标头加上端口号(或者在IP协议的数据包中插入端口号)
- UDP协议的优点是比较简单,容易实现,但缺点是可靠性差,一旦数据包发出,无法知道对方是否收到。
- TCP协议可以近似认为是有确认机制的的UDP协议。每发出一个数据包都要求确认。如果有一个数据包遗失,就收不到确认,发出方就知道有必要重发这个数据包了。
2.1 TCP协议的报文格式

- 16位源端口号和16位目的端口号
- 32位序号:一次TCP通信过程中某一个传输方向上的字节流的每个字节的编号,通过这个来确认发送的数据有序,比如现在序列号为1000,发送了1000,下一个序列号就是2000
- 32位确认号:用来响应TCP报文段,给收到的TCP报文段的序号加1,三握手时还要携带自己的序号
- 4位头部长度:标识该TCP头部有多少个4字节,共表示最长15*4=60字节。同IP头部
- 6位保留:6位标志。URG(紧急指针是否有效);ACK(表示确认号是否有效);PSH(提示接收端应用程序应该立即从TCP接收缓冲区读走数据);RST(表示要求对方重新建立连接);SYN(表示请求建立一个连接);FIN(表示通知对方本端要关闭连接)
- 16位窗口大小:TCP流量控制的一个手段,用来告诉对端TCP缓冲区还能容纳多少字节
- 16位校验和:由发送端填充,接收端对报文段执行CRC算法以校验TCP报文段在传输中是否损坏
- 16位紧急指针:一个正是偏移量,它和序号段的值相加表示最后一个紧急数据的下一个字节的序号
2.2 三次握手过程:
所谓三次握手即建立TCP连接,就是指建立一个TCP连接时,需要客户端和服务器端总共发送3个包以确认连接的建立。在socket编程中,这一过程由客户端执行connect来触发,整个流程如下所示:
1、建立连接时,客户端发送syn包(syn=j)到服务器,并进入SYN_SEND状态,等待服务器确认;
2、服务器收到syn包,必须确认客户的SYN(ack=x+1),同时自己也发送一个SYN包(syn=k),即SYN+ACK包,此时服务器进入SYN_RECV状态;
3、客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=k+1),此包发送完毕,客户端和服务器进入ESTABLISHED(TCP连接成功)状态,完成三次握手。
2.3 四次挥手过程:
TCP的连接的拆除需要发送四个包,因此称为四次挥手。客户端或服务器均可主动发起挥手动作,在socket编程中,任何一方执行close()操作即可产生挥手操作。
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。
三、网络管理命令
3.1 netstat
用于显示各种网络相关信息,如网络连接,路由表,接口状态,无效连接,组播成员等。
(1)选项:
-a:列出系统中所有连接
-t:列出TCP连接
-u:列出UDP连接
-l:列出所有正在监听的服务
-n:用端口显示服务,而不是服务名
-p:显示服务的进程ID PID
-s:按协议统计
-c:每隔固定时间执行命令
-r:路由信息
(2)示例:

Proto:数据包的协议,分为TCP和UDP
Recv-Q:表示收到的数据已经在本地接收缓存,但是还没有被进程取走的数据包数量
Send-Q:对方没有收到的数据包,或者没有ACK回复的,还在本地缓冲区的数据包数量
Local Address:本地IP:端口,通过端口可以知道本机开启了哪些服务
Foreign Address:远程主机:端口,即远程哪个IP使用哪个端口连接到本机
State:连接状态,主要是已经建立连接(ESTABLISED)和监听(LISTEN)两种状态
PID/Program name:主要是进程ID和进程命令

Proto:协议,一般为unix
RefCnt:连接到此Socket的进程数量
Flags:连接标识
Type:Socket访问类型
State:连接状态,已经建立连接(ESTABLISED)和监听(LISTEN)两种状态
I-Node:程序文件的Inode号
Path:Socket程序的路径,或者相关数据的输出路径
[root@localhost ~]# netstat -a ##列出所有端口,包括监听的和未监听的
[root@localhost ~]# netstat -t ##列出所有的tcp协议的端口
Active Internet connections (w/o servers)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 48 192.168.1.12:ssh 192.168.1.1:59681 ESTABLISHED
tcp 0 0 192.168.1.12:ssh 192.168.1.1:59710 ESTABLISHED
查找特定程序运行的端口:

[root@localhost ~]# netstat -r ##查看本机路由信息
Kernel IP routing table
Destination Gateway Genmask Flags MSS Window irtt Iface
192.168.1.0 * 255.255.255.0 U 0 0 0 eth0
link-local * 255.255.0.0 U 0 0 0 eth0
default 192.168.1.2 0.0.0.0 UG 0 0 0 eth0
3.2 ss
用于显示当前网络接口状态
(1)选项:
-t:tcp协议的连接
-u:udp协议的连接
-l:监听状态的连接
-a:所有状态的连接
-p:显示PID
-m:显示连接使用的内存信息
-e:显示扩展信息
-n:数字格式显示
(2)示例:
[root@localhost ~]# ss -a ##显示所有连接
State Recv-Q Send-Q Local Address:Port Peer Address:Port
LISTEN 0 128 :::ssh ::: *
LISTEN 0 128 :ssh :
LISTEN 0 100 ::1:smtp :::
LISTEN 0 100 127.0.0.1:smtp :
ESTAB 0 0 192.168.1.12:ssh 192.168.1.1:59681
ESTAB 0 0 192.168.1.12:ssh 192.168.1.1:59710
[root@localhost ~]# ss -ta ##查看所有TCP协议的连接
State Recv-Q Send-Q Local Address:Port Peer Address:Port
LISTEN 0 128 :::ssh ::: *
LISTEN 0 128 :ssh :
LISTEN 0 100 ::1:smtp :::
LISTEN 0 100 127.0.0.1:smtp :
ESTAB 0 0 192.168.1.12:ssh 192.168.1.1:59681
ESTAB 0 0 192.168.1.12:ssh 192.168.1.1:59710
3.3 traceroute与mtr:
获取当前主机到目标主机所经过的路由(网关)
(1)traceroute:
[root@localhost ~]# traceroute 192.168.1.12
traceroute to 192.168.1.12 (192.168.1.12), 30 hops max, 60 byte packets
1 192.168.1.12 (192.168.1.12) 0.022 ms 0.005 ms 0.005 ms
[root@localhost ~]# traceroute www.baidu.com
traceroute to www.baidu.com (14.215.177.39), 30 hops max, 60 byte packets
1 192.168.1.2 (192.168.1.2) 0.237 ms 0.145 ms 0.142 ms
2 * * *
3 * * *
4 * * *
5 * * *
6 * * *
7 *^C
(2)mtr:
-r:以报告模式显示
-s:用来指定ping数据包的大小
-n:no-dns不对IP地址做域名解析
-a:来设置发送数据包的IP地址
-i:使用这个参数来设置ICMP返回之间的要求默认是1秒
-4:IPv4
-6:IPv6
[root@localhost ~]# mtr 192.168.1.12

[root@localhost ~]# mtr -r 192.168.1.12
HOST: localhost.localdomain Loss% Snt Last Avg Best Wrst StDev
- 192.168.1.12 0.0% 10 0.1 0.1 0.0 0.1 0.0
3.4 wget:
是一个从网络上自动下载文件的自由工具。下载数据的时候使用的协议可以是http,https,ftp三种协议。使用此命令时的输出信息中可以看到本地下载使用的是什么协议
(1)选项:
-r:当用wget下载目录时,需要用到此选项,表达递归下载目录及其子目录。如果下载文件时,加上-r选项,那么远程主机上的目录结构就会下载到本地
-c:支持断点续传,即使我们的ctrl+c了wget命令,再次使用wget -c仍然是接着上次的进度开始下载
-O filename:表示将远程的文件下载到本地后,重新命名为filename
-q(- -quiet)wget执行时不输出任何提示信息
-t num:表示当出现网络不好等情况后,wget重试的次数。默认的为20次,若num为0或inf时,表示重试无限次
-b:后台下载
(2)示例:
<1>[root@localhost ~]# wget https://cn.wordpress.org/latest-zh_CN.tar.gz
–2019-08-19 14:35:22-- https://cn.wordpress.org/latest-zh_CN.tar.gz
Resolving cn.wordpress.org… 198.143.164.252
Connecting to cn.wordpress.org|198.143.164.252|:443… connected.
HTTP request sent, awaiting response… 200 OK
Length: 11825460 (11M) [application/octet-stream]
Saving to: “latest-zh_CN.tar.gz”
3% [===> ] 360,030 6.87K/s eta 29m 46s
## 以上的例子是从网络下载一个文件并保存在当前目录,在下载的过程中会显示进度条,包含(下载完成百分比,已经下载的字节,当前下载速度,剩余下载时间)。
<2>[root@localhost ~]# wget -O wordpress.zip https://cn.wordpress.org/latest-zh_CN.tar.gz
–2019-08-19 14:44:43-- https://cn.wordpress.org/latest-zh_CN.tar.gz
Resolving cn.wordpress.org… 198.143.164.252
Connecting to cn.wordpress.org|198.143.164.252|:443… connected.
HTTP request sent, awaiting response… 200 OK
Length: 11825460 (11M) [application/octet-stream]
Saving to: “wordpress.zip”
0% [ ] 0 --.-K/s
##以上例子为使用wget -O下载并以不同的文件名保存
<3> 使用wget - -limit -rate限速下载
命令: wget - -limit-rate=300k https://cn.wordpress.org/latest-zh_CN.tar.gz
##当执行wget的时候,默认会占用全部可能的宽带下载。但是当你准备下载一个大文件,而你还需要下载其他文件时就有必要限速了。
本文详细介绍了Linux网络管理的基础知识,包括计算机网络体系结构中的OSI和TCP/IP模型,重点讲解了UDP/TCP协议,特别是TCP的三次握手和四次挥手过程。此外,还探讨了常用的网络管理命令,如netstat、ss和traceroute,以及wget的使用方法,帮助读者掌握Linux系统的网络管理和诊断技巧。
1696

被折叠的 条评论
为什么被折叠?



