1.经典网络分层模型

  1. 五层协议模型(TCP/IP模型)

    • 物理层

    • 数据链路层

    • 网络层

    • 传输层

    • 应用层

  2. 七层协议模型(OSI模型)

    • 物理层

    • 数据链路层

    • 网络层

    • 传输层

    • 会话层

    • 表示层

    • 应用层

各层工作内容

  • TCP和UDP:工作在传输层

  • HTTP:工作在应用层

2.在浏览器的地址栏中输入URL后发生的网络过程

  1. 解析URL:确定Web服务器和文件名。根据信息生成HTTP请求消息。

  2. DNS查询:先检查浏览器缓存,若无缓存则向DNS服务器查询服务器域名对应的IP地址。

  3. 建立连接:通过TCP的三次握手与服务器建立连接。

  4. 数据传输

    • 应用层、传输层:添加TCP/UDP首部

    • 网络层:添加报文头(源IP和目标IP)

    • 数据链路层:添加MAC头部(接收方和发送方的MAC地址,使用ARP协议获取接收方MAC地址)

    • 物理层:网卡将数据转化为电信号,通过网络传输

  5. 服务器处理数据:服务器根据MAC地址和IP头处理数据包,解析HTTP请求并返回响应。

  6. 关闭连接:浏览器接收响应后,通过TCP的四次挥手与服务器断开连接。

3.HTTPS与HTTP的区别

  1. 安全性

    • HTTPS需要CA申请SSL证书,使用TLS/SSL加密通信,默认端口为443。

    • HTTP是明文传输,默认端口为80。

  2. 防攻击性

    • HTTPS可以防止DNS劫持攻击,适用于传输敏感信息。

    • HTTP容易受到攻击。

4.DNS服务介绍

  • DNS(Domain Name System):将域名转换为IP地址的分布式命名系统,使用UDP协议。

DNS工作流程

  1. 发起DNS查询:浏览器检查本地DNS缓存,若无记录则向本地DNS服务器查询。

  2. 本地DNS服务器查询:查询缓存,若无记录则递归向其他DNS服务器查询。

  3. 迭代查询过程

    • 根域名服务器:返回顶级域名服务器的IP地址。

    • 顶级域名服务器:返回权威域名服务器的IP地址。

  4. 查询权威域名服务器:返回主机记录的IP地址。

  5. 返回解析结果:存储缓存并返回给浏览器,发起与目标网站的通信。

5.TCP和UDP的特点与区别

  • TCP

    • 可靠性:确保数据按序到达,通过确认和重传机制。

    • 面向连接:需建立连接,通信稳定。

    • 有序性:保证数据顺序传输。

    • 流控制和拥塞控制:避免过载。

    • 适用场景:文件传输、网页浏览、电子邮件等。

  • UDP

    • 不可靠性:无确认和重传机制,可能丢包或乱序。

    • 无连接:无需建立连接,减少开销。

    • 适用场景:音频/视频传输、实时游戏等。

6. TCP的三次握手与四次挥手

三次握手

  1. 客户端发送SYN包(同步)请求建立连接。

  2. 服务器发送SYN/ACK包(同步/确认)响应。

  3. 客户端发送ACK包(确认),连接建立。

四次挥手

  1. 客户端发送FIN包(结束)请求关闭连接。

  2. 服务器发送ACK包(确认)。

  3. 服务器发送FIN包。

  4. 客户端发送ACK包,连接关闭。

7.TCP的重传机制

  1. 超时重传:定时器超时未收到确认则重传。

  2. 快速重传:收到三次相同ACK后重传。

  3. SACK方法:选择性确认丢失数据包。

  4. Duplicate SACK:告知发送方重复接收的数据。

8.TCP的流量控制

  • 使用滑动窗口控制数据传输,避免接收端溢出。

9.TCP的拥塞控制

  1. 慢启动:逐步增加发送数据量。

  2. 拥塞避免:线性增加拥塞窗口大小。

  3. 快速重传:检测丢失数据报段后立即重传。

  4. 快速恢复:减半拥塞窗口大小后线性增加。

10.TCP的粘包问题与解决

  • 解决方法

    • 固定消息长度

    • 特殊字符分隔

    • 使用自定义消息结构

11.SYN超时和洪泛攻击

  • SYN超时:建立连接失败。

  • 洪泛攻击:大量伪造SYN请求耗尽服务器资源。

12.GET和POST的区别

  1. 数据位置:GET在URL中,POST在消息体中。

  2. 长度限制:GET有限制,POST无长度限制。

  3. 数据类型:GET明文,POST隐藏。

  4. 数据语义:GET幂等,POST非幂等。

  5. 安全性:GET不适合传输敏感信息,POST更安全。

13.HTTP 1.1、2、3 的区别

  • HTTP 1.1 解决了初期HTTP的效率和连接管理问题,但仍存在队头阻塞和较高延迟的问题。

  • HTTP/2 通过二进制协议、多路复用和头部压缩大幅提高了传输效率,但由于仍基于TCP,仍然会受到队头阻塞的影响。

  • HTTP/3 进一步通过采用QUIC协议,改进了多路复用、连接速度和丢包处理能力,极大提升了网络性能,特别是在移动和高延迟网络中表现更为出色。