计算机网络
1.经典网络分层模型
五层协议模型(TCP/IP模型):
物理层
数据链路层
网络层
传输层
应用层
七层协议模型(OSI模型):
物理层
数据链路层
网络层
传输层
会话层
表示层
应用层
各层工作内容
TCP和UDP:工作在传输层
HTTP:工作在应用层
2.在浏览器的地址栏中输入URL后发生的网络过程
解析URL:确定Web服务器和文件名。根据信息生成HTTP请求消息。
DNS查询:先检查浏览器缓存,若无缓存则向DNS服务器查询服务器域名对应的IP地址。
建立连接:通过TCP的三次握手与服务器建立连接。
数据传输:
应用层、传输层:添加TCP/UDP首部
网络层:添加报文头(源IP和目标IP)
数据链路层:添加MAC头部(接收方和发送方的MAC地址,使用ARP协议获取接收方MAC地址)
物理层:网卡将数据转化为电信号,通过网络传输
服务器处理数据:服务器根据MAC地址和IP头处理数据包,解析HTTP请求并返回响应。
关闭连接:浏览器接收响应后,通过TCP的四次挥手与服务器断开连接。
3.HTTPS与HTTP的区别
安全性:
HTTPS需要CA申请SSL证书,使用TLS/SSL加密通信,默认端口为443。
HTTP是明文传输,默认端口为80。
防攻击性:
HTTPS可以防止DNS劫持攻击,适用于传输敏感信息。
HTTP容易受到攻击。
4.DNS服务介绍
DNS(Domain Name System):将域名转换为IP地址的分布式命名系统,使用UDP协议。
DNS工作流程
发起DNS查询:浏览器检查本地DNS缓存,若无记录则向本地DNS服务器查询。
本地DNS服务器查询:查询缓存,若无记录则递归向其他DNS服务器查询。
迭代查询过程:
根域名服务器:返回顶级域名服务器的IP地址。
顶级域名服务器:返回权威域名服务器的IP地址。
查询权威域名服务器:返回主机记录的IP地址。
返回解析结果:存储缓存并返回给浏览器,发起与目标网站的通信。
5.TCP和UDP的特点与区别
TCP:
可靠性:确保数据按序到达,通过确认和重传机制。
面向连接:需建立连接,通信稳定。
有序性:保证数据顺序传输。
流控制和拥塞控制:避免过载。
适用场景:文件传输、网页浏览、电子邮件等。
UDP:
不可靠性:无确认和重传机制,可能丢包或乱序。
无连接:无需建立连接,减少开销。
适用场景:音频/视频传输、实时游戏等。
6. TCP的三次握手与四次挥手
三次握手
客户端发送SYN包(同步)请求建立连接。
服务器发送SYN/ACK包(同步/确认)响应。
客户端发送ACK包(确认),连接建立。
四次挥手
客户端发送FIN包(结束)请求关闭连接。
服务器发送ACK包(确认)。
服务器发送FIN包。
客户端发送ACK包,连接关闭。
7.TCP的重传机制
超时重传:定时器超时未收到确认则重传。
快速重传:收到三次相同ACK后重传。
SACK方法:选择性确认丢失数据包。
Duplicate SACK:告知发送方重复接收的数据。
8.TCP的流量控制
使用滑动窗口控制数据传输,避免接收端溢出。
9.TCP的拥塞控制
慢启动:逐步增加发送数据量。
拥塞避免:线性增加拥塞窗口大小。
快速重传:检测丢失数据报段后立即重传。
快速恢复:减半拥塞窗口大小后线性增加。
10.TCP的粘包问题与解决
解决方法:
固定消息长度
特殊字符分隔
使用自定义消息结构
11.SYN超时和洪泛攻击
SYN超时:建立连接失败。
洪泛攻击:大量伪造SYN请求耗尽服务器资源。
12.GET和POST的区别
数据位置:GET在URL中,POST在消息体中。
长度限制:GET有限制,POST无长度限制。
数据类型:GET明文,POST隐藏。
数据语义:GET幂等,POST非幂等。
安全性:GET不适合传输敏感信息,POST更安全。
13.HTTP 1.1、2、3 的区别
HTTP 1.1 解决了初期HTTP的效率和连接管理问题,但仍存在队头阻塞和较高延迟的问题。
HTTP/2 通过二进制协议、多路复用和头部压缩大幅提高了传输效率,但由于仍基于TCP,仍然会受到队头阻塞的影响。
HTTP/3 进一步通过采用QUIC协议,改进了多路复用、连接速度和丢包处理能力,极大提升了网络性能,特别是在移动和高延迟网络中表现更为出色。