Skip to content

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解析过程

  1. linux.cn -> ip地址
    1. 系统在本地的DNS缓存查找是否有这个域名对应的ip
    2. 系统的hosts文件是否配置域名对应的ip
  2. 访问本地DNS服务, 询问是否知晓域名对应的ip地址.
  3. 本地DNS访问根域名解析服务器(根的DNS), 但是根DNS只有顶级域的记录. 根告诉我们.cn顶级域的DNS地址.
  4. 本地DNS访问顶级域的DNS是否知晓域名对应的ip, 但是告诉我们二级域对应的DNS.
  5. 本地DNS访问二级域名的DNS, 知晓我们的域名对应的ip地址, IP返回给本地的DNS.
  6. 本地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 数据包,表示确认服务器的请求。此时,连接正式断开。

总结:

整个访问流程大致如下:

  1. 用户在浏览器中输入网址,浏览器通过 DNS 解析获取域名的 IP 地址。
  2. 浏览器与目标服务器建立 TCP 连接(三次握手)。
  3. 浏览器发送 HTTP 请求,服务器返回响应。
  4. 浏览器接收数据并显示页面。
  5. 数据传输完成后,客户端和服务器通过四次挥手断开连接。

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
根据企业邮箱的要求配置即可.

感谢阅读,欢迎交流!