当前位置: 首页 > news >正文

计网八股文

1.HTTP和HTTPS的区别

  1. 安全性

    • HTTP:是未加密的协议,意味着数据在传输过程中可以被截获、篡改或监听。它不提供任何数据加密。
    • HTTPS:在HTTP的基础上加入了SSL/TLS协议,提供了数据加密、完整性校验和身份验证。这使得传输的数据更安全,防止数据在传输过程中被窃听或篡改。
  2. 端口

    • HTTP:默认使用80端口。
    • HTTPS:默认使用443端口。
  3. URL

    • HTTP:网址以http://开头。
    • HTTPS:网址以https://开头。
  4. 性能

    • HTTP:由于不需要进行加密和解密处理,通常速度更快。
    • HTTPS:由于需要进行加密和解密处理,可能会稍微降低性能,但这种性能差异通常对用户体验影响不大。
  5. 信任和认证

    • HTTP:没有提供身份验证,用户无法确定他们正在与真正的服务器通信。
    • HTTPS:通过使用SSL/TLS证书,可以验证服务器的身份,确保用户正在与正确的服务器通信。

2.TCP和UDP的区别

  1. 连接性

    • TCP:是一种面向连接的协议。在数据传输开始之前,必须在两端建立一个连接。它通过三次握手过程来建立连接,并在数据传输完成后通过四次挥手过程来终止连接。
    • UDP:是一种无连接协议。数据传输前不需要建立连接,数据被封装成数据包发送,接收方也不需要确认这些数据包。
  2. 数据完整性

    • TCP:提供数据完整性保证。如果数据包在传输过程中丢失或损坏,TCP会重新发送数据直到接收方成功接收所有数据。
    • UDP:不保证数据完整性。如果数据包丢失或损坏,UDP不会重传,接收方可能收到不完整或损坏的数据。
  3. 传输可靠性

    • TCP:提供可靠的数据传输。它使用序列号和确认应答机制来确保数据正确无误地按顺序到达。
    • UDP:不提供可靠性保证。它只是尽可能快地发送数据包,但不保证它们会到达。
  4. 速度

    • TCP:由于需要建立连接、保证数据完整性和可靠性,TCP的传输速度相对较慢。
    • UDP:因为不需要建立连接和保证数据完整性,UDP的传输速度相对较快。
  5. 流量控制和拥塞控制

    • TCP:有流量控制和拥塞控制机制,确保网络不会过载。
    • UDP:没有这些机制,发送方可能会在不考虑网络状况的情况下发送大量数据。
  6. 头部开销

    • TCP:头部最小20字节,最大60字节(包含选项)。
    • UDP:头部大小固定为8字节。
  7. 应用场景

    • TCP:适用于需要可靠传输的应用,如网页浏览(HTTP)、文件传输(FTP)、邮件传输(SMTP)等。
    • UDP:适用于对传输速度要求高而可以容忍一定丢包率的应用,如实时视频会议、在线游戏、DNS查询等。

3.如何在UDP中实现TCP的功能

1. 可靠性

实现数据的可靠传输,确保数据不丢失、不出错。

  • 确认和超时重传:发送方为每个发送的数据包维护一个副本,接收方收到数据后发送确认。如果发送方在超时时间内没有收到确认,它会重传数据。
  • 序列号:为每个数据包添加序列号,以便接收方可以检测到丢包和乱序到达的数据包,并请求重传丢失的数据包。

2. 顺序控制

确保数据按照发送的顺序被接收。

  • 接收方缓冲:接收方需要有足够的缓冲区来存储乱序到达的数据包,直到它们可以按顺序被处理。

3. 流量控制

防止发送方压倒接收方。

  • 窗口大小:类似于 TCP 的窗口大小机制,发送方根据接收方的接收能力和缓存大小调整发送的数据量。

4. 拥塞控制

避免发送方压倒网络。

  • 发送速率调整:根据网络的拥塞情况调整发送速率,可以使用类似于 TCP 的慢启动、拥塞避免、快速重传和快速恢复算法。

5. 连接建立和终止

虽然 UDP 是无连接的,但可以在应用层模拟连接的建立和终止过程。

  • 握手协议:在数据传输前通过交换特定的控制消息来建立“连接”,传输完成后通过终止消息来关闭“连接”。

http://www.lryc.cn/news/439449.html

相关文章:

  • [001-03-007].第07节:Redis中的事务
  • WLAN实验简述
  • Docker简介在Centos和Ubuntu环境下安装Docker
  • C:字符串函数(续)-学习笔记
  • Depth靶机详解
  • go get -u @latest没有更新依赖模块
  • 介绍一些免费 的 html 5模版网站 和配色 网站
  • 【C++】入门基础(下)
  • Spring Boot 集成 MongoDB - 入门指南
  • 基于云计算的虚拟电厂负荷预测
  • Android应用性能优化
  • fiddler抓包01:工具介绍
  • Spring Boot母婴商城:打造一站式购物体验
  • 【面试八股总结】GC垃圾回收机制
  • arcgisPro修改要素XY容差
  • Java 21的Enhanced Deprecation的笔记
  • Ubuntu下Git使用教程:从入门到实践
  • 【开放词汇检测】基于MMDetection的MM-Grounding-DINO实战
  • PLC-Recorder 对西门子传动的采集方法
  • 【网络通信基础与实践第三讲】传输层协议概述包括UDP协议和TCP协议
  • centos更改静态ip
  • YOLOv5/v8 + 双目相机测距
  • 双三次插值及MATLAB实现
  • Kubernetes 持续集成与交付(CI/CD)
  • 【Rust练习】14.流程控制
  • React-Hooks-Form 集成 Zod 校验库
  • kettle从入门到精通 第八十五课 ETL之kettle kettle中javascript步骤调用外部javascript/js文件
  • 比传统机器学习更先进的深度学习神经网络的二分类建模全流程教程
  • TeamTalk梳理概括
  • 构建“零工市场小程序”,服务灵活就业“大民生”