欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 科技 > 名人名企 > 6.3 计算机网络面试题

6.3 计算机网络面试题

2025/6/6 17:16:27 来源:https://blog.csdn.net/weixin_54385104/article/details/148402766  浏览:    关键词:6.3 计算机网络面试题

网络OSI模型和TCP/IP模型分别介绍一下

OSI

  • 应用层:http htps DNS 为应用程序提供统一的接口
  • 表示层:将数据转换为兼容另一个系统能识别的格式
  • 会话层: 建立管理终止表示层实体之间的通信会话
  • 传输层: tcp udp 负责端到端的数据传输
  • 网络层: ip 负责路由转发分片
  • 数据链路层: APR 负责数据封帧、差错检测 MAC寻址
  • 物理层: 传输数据帧

TCP/IP

  • 应用层:HTTP SMTP DNS
  • 传输层 TCP UDP
  • 网络层 IP
  • 网络接口层

HTTP报文

在这里插入图片描述

http请求类型

在这里插入图片描述

  • GET:安全、幂等、缓存浏览器
  • POST:不安全、不幂等、不缓存、无法保存为书签

HTTP1.1怎么对请求做拆包

通过"Content-Length"头字段来进行。
在这里插入图片描述

http断点重传

在这里插入图片描述

http为什么不安全

  • 窃听:信息加密
  • 篡改:校验机制
  • 冒充:身份证书
    在这里插入图片描述

TLS四次握手

  • clientHello 客户端发送支持的TLS协议版本、产生的随机数、支持的密码套件
  • ServerHello 服务端确认TLS协议版本、产生的随机数、确认的密码套件、服务器的数字证书
  • 客户端通过浏览器或操作系统中的公钥确认数字证书,如果没有问题从数字证书中取出服务器的公钥,加密报文:随机数、加密通信算法改为会话密钥、通知握手结束
  • 服务端通过三个随机数计算会话密钥、通知加密、结束

HTTPS如何防范中间人的攻击

在这里插入图片描述

HTTP1.1 2.0区别

  • 头部压缩
  • 二进制传输
  • 并发传输 stream
  • 主动推送资源

HTTP进行TCP连接之后,在什么情况下会中断

  • 执行close系统调用 FIN 四次挥手
  • 发送方一直没收到ACK 重传到了最大次数
  • HTTP长时间没有进行请求和响应

HTTP、SOCKET和TCP的区别

在这里插入图片描述
Socket 是一种网络通信的抽象,提供了一种用于在网络上进行数据交换的接口。它是应用程序与网络协议之间的中介。
Socket 使用 TCP: 当使用流式 Socket 时,实际上是通过 TCP 协议进行数据传输。Socket 提供了一个简单的接口,使得开发者可以方便地使用 TCP 协议进行网络通信。

DNS

DNS的全称是Domain Name System(域名系统)
在这里插入图片描述
在这里插入图片描述
默认端口号:53
基于UDP实现
在这里插入图片描述

golang interface(引用类型)

抽象与多态,如

  • 定义可扩展的插件系统
  • 依赖解耦与接口隔离:实现数据库操作的抽象层
type Database interface {Query(query string) ([]Row, error)Exec(query string) error
}type MySQL struct{}
func (m *MySQL) Query(query string) ([]Row, error) { /* ... */ }
func (m *MySQL) Exec(query string) error { /* ... */ }type Service struct {db Database // 依赖接口而非具体实现
}

在 Go 语言中,利用接口和直接为结构体编写函数之间有几个重要区别。以下是对这两种方法的比较:

1. 依赖注入与灵活性

  • 利用接口:

    • 依赖注入: Service 结构体依赖于 Database 接口,而不是具体的 MySQL 实现。这使得 Service 可以与任何实现了 Database 接口的类型一起工作。
    • 灵活性: 可以轻松地替换 Database 的具体实现,比如使用 MySQLPostgreSQL 或其他数据库,只需提供相应的实现而无需修改 Service 的代码。
  • 直接为结构体编写函数:

    • 紧耦合: 如果 Service 直接依赖于 MySQL,那么 Service 的实现与 MySQL 紧密耦合。这意味着如果想要更换数据库,可能需要修改 Service 的代码。
    • 难以测试: 测试 Service 时,难以使用模拟(mock)或其他数据库实现,因为它依赖于具体的 MySQL 类型。
      PS:接口nil判断需要类型和值均为nil

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词