Appearance
1.交换机和路由器
交换机: 在一个交换机的端口上所连接的所有终端设备,均在一 个网段(局域网 LAN)上(称为一个广播域) . (带有网管和dhcp功能的 交换机叫3层)
路由器: 路由协议的转发(指路),
数据转发,会维护一个路由表(相当于一个地图)
路由器会作为网关(GATEWAY,数据的出入口,类似于大 楼的大门),一般会在网络出口的位置摆放一台路由器
2.OSI七层模型
plain
三次握手(建立连接):
客户端 ----> 服务器: SYN, Seq = x
服务器 <---- 客户端: SYN-ACK, Seq = y, Ack = x + 1
客户端 ----> 服务器: ACK, Seq = x + 1, Ack = y + 1
连接建立完成。
01.准备:首先,建立连接之前服务器和客户端的状态都为CLOSED。
02.准备:服务器创建socket后开始监听(启动服务),变为LISTEN状态。
03.客户端:SYN请求客户端请求建立连接,向服务器发送SYN报文,客户端的状态变为SYN_SENT。
04.服务端:服务器收到客户端的报文(SYN)后向客户端发送ACK和口SYN报文,此时服务器的状态变为
SYN_RCVD(recevide)(收到了客户端发送的SYN请求)。
05.客户端然后,客户端收到ACK、SYN,就向服务器发送ACK,客户端状态变为ESTABLISHED
06.服务端服务器收到客户端的ACK后也变为ESTABLISHED
连接建立
四次挥手(关闭连接):
客户端 ----> 服务器: FIN, Seq = x
服务器 <---- 客户端: ACK, Seq = y, Ack = x + 1
服务器 ----> 客户端: FIN, Seq = y
客户端 <---- 服务器: ACK, Seq = x + 1, Ack = y + 1
连接关闭完成。
01.客户端:客户端先向服务器发送FIN报文,请求断开连接,其状态变为FIN_WAIT1.
02.服务端:服务器收到FIN后向客户端发送ACK,服务器状态变为CLOSE_WAIT。
03客户端:客户端收到ACK后就进入FIN_WAIT2状态。此时连接已经断开了一半了。如果服务器还有数据要发送给客户端,就会继续发送。
04.服务端:直到发完了,就发送FIN报文,此时服务器进入LAST_ACK状态。
05.客户端:客户端收到服务器的FIN后,马上发送ACK给服务器,此时客户端进入TIME_WAIT状态,再过了2MSL长的时间后进入CLOSED状态。
06.服务端:服务器收到客户端的ACK就进入CLOSED状态。
SYN:发起连接。
ACK:确认接收。
FIN:终止连接。
CLOSING状态表示:客户端发了FIN,但客户端在FIN_WAIT1状态时没有收
到服务器的ACK确认字段,却收到了服务器的FIN字段,这种情况发生在服务器发送的ACK丢包的时候,因
为网络传输有时会有意外。
4.TCP和UDP区别
5.常见网络协议
DNS协议:域名---->ip
ARP协议: IP ---> MAC地址
DNS解析过程
- linux.cn -> ip地址
- 系统在本地的DNS缓存查找是否有这个域名对应的ip
- 系统的
hosts
文件是否配置域名对应的ip
- 访问本地DNS服务, 询问是否知晓域名对应的ip地址.
- 本地DNS访问根域名解析服务器(根的DNS), 但是根DNS只有顶级域的记录. 根告诉我们.cn顶级域的DNS地址.
- 本地DNS访问顶级域的DNS是否知晓域名对应的ip, 但是告诉我们二级域对应的DNS.
- 本地DNS访问二级域名的DNS, 知晓我们的域名对应的ip地址, IP返回给本地的DNS.
- 本地DNS把域名与ip对应关系, 给浏览器/命令行.
DNS排查过程
1.检查网卡配置文件
2.ping www.baidu.com
公网和域名
3.dig +trace www.baidu.com <font style="color:rgb(6, 7, 31);background-color:rgb(253, 253, 254);">从根域开始跟踪查询过程,直到找到最终结果。</font>
‘
6.用户访问www.baidu.com全流程
1. DNS解析流程
在浏览器向服务器发送请求之前,需要将 www.oldboylinux.cn
这个域名解析为相应的 IP 地址。这个过程由 DNS(域名系统)完成,具体流程如下:
- 根域名解析服务器:首先,浏览器向根域名服务器请求解析
.cn
或.com
顶级域名。根域名服务器会将.cn
的解析请求指向负责.cn
域名解析的顶级域名服务器。 - 顶级域名解析服务器:接下来,浏览器通过
.cn
顶级域名服务器获取域名www.oldboylinux.cn
的解析信息。此时,浏览器会获取到与www.oldboylinux.cn
对应的本地 DNS 服务器地址(比如:223.5.5.5
)。 - 本地 DNS 服务器:本地 DNS 服务器将收到解析请求,查询到
www.oldboylinux.cn
的实际 IP 地址(比如8.8.8.8
),并返回给浏览器。 - 最终解析到的 DNS 服务器:通过以上步骤,最终,浏览器获得
www.oldboylinux.cn
对应的 IP 地址(8.8.8.8
)。如果缓存中没有该域名的解析记录,浏览器就会重复这一过程。
3.三次握手建立连接
为了确保数据可靠传输,TCP 连接需要通过三次握手来建立:
- 第一次握手:客户端(浏览器)向服务器(
8.8.8.8
)发送一个带有 SYN 标志的数据包,表示希望建立连接,并附带一个初始的序列号。 - 第二次握手:服务器收到客户端的请求后,回复一个带有 SYN 和 ACK 标志的数据包,表示同意建立连接,并告知客户端服务器的序列号。
- 第三次握手:客户端收到服务器的回应后,再次发送一个 ACK 数据包,表示确认服务器的序列号。至此,三次握手完成,连接正式建立,客户端与服务器可以开始数据传输。
3. 浏览器向服务器发送请求报文
一旦 DNS 解析完成,浏览器就知道了目标网站的 IP 地址,接下来浏览器准备与该服务器建立连接并发送 HTTP 请求。此时,浏览器准备向 8.8.8.8
的 80 端口发起请求(默认的 HTTP 协议端口)。
4. 服务器处理请求并响应
服务器接收到浏览器的请求后,处理并生成响应。这个响应通常包括所请求的网页(HTML 文件),图片、JavaScript 文件或其他资源。服务器会通过同样的 TCP 连接将这些数据返回给浏览器.
5.向客户端进行相应,http响应报文
6. 四次挥手断开连接
当数据传输完成后,客户端和服务器需要断开连接。这个过程通过四次挥手完成,确保双方都确认连接可以安全关闭。
- 第一次挥手:客户端向服务器发送一个
FIN
数据包,表示客户端没有数据要发送了,准备关闭连接。 - 第二次挥手:服务器收到
FIN
请求后,回复一个ACK
数据包,表示确认客户端的请求。 - 第三次挥手:服务器向客户端发送自己的
FIN
数据包,表示服务器也没有数据要发送,准备关闭连接。 - 第四次挥手:客户端收到服务器的
FIN
请求后,发送一个ACK
数据包,表示确认服务器的请求。此时,连接正式断开。
总结:
整个访问流程大致如下:
- 用户在浏览器中输入网址,浏览器通过 DNS 解析获取域名的 IP 地址。
- 浏览器与目标服务器建立 TCP 连接(三次握手)。
- 浏览器发送 HTTP 请求,服务器返回响应。
- 浏览器接收数据并显示页面。
- 数据传输完成后,客户端和服务器通过四次挥手断开连接。
7.网络管理命令
查询IP地址 |
面试题检查端口是否存在22端口
ss -lntup | grep 22
netstat -lntup | grep 22
lsof -i :22
nmap -p22 10.0.0.201
telnet 10.0.0.201 22
ssh -p 22 root@10.0.0.201
统计estab状态的连接数量(一般80/443端口)
<font style="color:rgba(0, 0, 0, 0.85);">ss -ant |awk 'NR>1{print $1}' |sort |uniq -c |sort -rn </font>
plain
iftop #找到端口
ss #找到端口对应的PID
ps #根据PID过滤进程名字
8.DNS解析
dig www.linuxpath.cn
记录类型 | 说明 | 应用场景 |
---|---|---|
A记录 | 域名-->ipv4地址 | 常用 |
AAAA记录 | 域名-->ipv6地址 | 常用(ipv6) |
CNAME记录 | 别名记录类似于alias(别名),域名1-->域名2 | 未来配置CDN, WAF(第2, 3阶段). |
TXT记录 | 域名-->字符串 dig txt 域名才行 | 校验, 检查域名是否属于你. |
MX记录 | 企业邮箱 iwwww@linux.cn | 根据企业邮箱的要求配置即可. |