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

计算网络相关知识

第二十一天

所谓的网络编程,就是编写程序,实现让同一个网络中的机器可以进行数据的传递,实现通信。

1.5层和7层的区别?

OSI 7层协议和5层协议是网络中的通信协议。

物理层:主要负责传输原始的比特流;

数据链路层:主要提供节点到节点数据传输,处理帧同步、错误检验;

网络层:负责数据包的路由和转发;

传输层:提供端到端的通信,确保数据传输的可靠性;

会话层:管理会话和连接维护;

表示层:提供数据格式的转换和加密;

应用层:提供网络服务应用接口。

而五层协议将会话层、表示层、应用层合并为应用层。多出的两层(会话层、表示层)用于会话管理,增强网络的灵活性和安全性。五层适用于大多数实际应用,而七层更加详细,适合理论研究和教学。


2.TCP的三次握手?

三次握手是为了确认双方的接收与发送能力正常,

第一次握手是客户端像服务端发送同步序列号包,目的是验证服务端验证客户端的发送能力正常和自己接受能力

第二次握手是服务端向客户端发送,同步确认包,服务端验证了服务端的接受,发送能力,和自己接受和发送能力

第三次握手是客户端向服务端发送同步确认包,服务端验证了服务端的接受能力客户端接受能力

3.为什么是三次,两次不行吗?

如果两次握手,服务端不能保证第二次发送的序列信号,客户端能否成功接收。

客户端向服务端发送两个SYN包,但网络复杂,旧的先到达。如果两次握手,服务器收到旧的SYN就会立即建立连接,那就会造成网络异常。

4.什么是四次挥手?

保证断开连接能力正常的协议。

一次挥手,客户端向服务端发送结束信号,客户端等待

第二层挥,手服务端回复确认信号,进入CLOSE_WAIT状态,可能还会传输剩余数。

第三次挥手,服务端剩余数据传送完毕,发送结束信号。

第四次挥手,客户端发送确认信号,并等待,确保服务端接收到确认信号,服务端接受到信号,断开连接,等待超时断开连接。

5.为什么是四次,不是三次?

应为tcp是全双工通信的,当客户端发送结束信号时,服务端可能还有数据要传输,所以确认信号和结束信号不能同时发送,只能先确认信号,将数据全部发送后再发送结束信号。

6.了解cs和bs架构吗?

CS架构由客户端和服务器两个部分组成,通常采用C/S模式进行通信。其中,客户端负责向用户提供界面和交互功能,而服务器则负责存储和处理数据。CS架构已被广泛应用于各种场景中,如Web应用程序。

BS架构客户端无需安装,有web浏览器即可。

7.tcp和udp的区别?

他们是传输层的协议。

tcp因为有三次握手,四次挥手,流量控制和拥塞控制机制,具有更好的安全性,可靠性.更适合文件传输。

UDP不保证数据传输的可靠性,也没有错误检测机制,所以效率高。更适合视频交互。

8.http和https的区别?

他们是应用层的协议

基于请求响应的模式,建立TCP协议之上的应用层协议。

  • HTTPS 使用 SSL 或 TLS 来加密数据传输,使数据在传输中更难以被中间人攻击窃取

  • HTTPS 需要使用数字证书

  • 网页性能比 HTTP 差一些

9.http1.0、http1.1、http2、http3区别?

他们是应用层的协议

基于请求响应的模式,建立TCP协议之上的应用层协议。

  • HTTP/1.0

    浏览器-服务器只保持短连接,请求前建立连接,请求后断开,因为需要三次握手所以性能差

  • HTTP/1.1

    在一个TCP连接可以传递多个HTTP请求,但是存在队头阻塞,因为服务端必须按照请求顺序回复,一个延迟后面全部阻塞

  • HTTP/2.0

    增加了二进制分帧,将传输的消息分割为更小的消息和帧

    因为二进制分帧解决了HTTP的队头阻塞,但是还存在TCP队头阻塞

  • HTTP/3的QUIC协议

    它解决了TCP的队头阻塞,因为它绕开了TCP,使用了UDP基于QUIC协议实现的

    虽然UDP不可靠,但在QUIC协议中对UDP做了改变,提供了包重传、拥塞控制、调整传输节奏以及TCP存在的特性

  • HTTP/3 的 QUIC 协议

    QUIC 协议实现了无序并发字节流,单个数据流是有序的但接收是无序的,快速握手和使用了 TLS 1.3 传输层安全协议(传输层安全层)

10.什么是正向代理和反向代理?

正向代理(forward proxy):是一个位于客户端和目标服务器之间的服务器(代理服务器),为了从目标服务器取得内容,客户端向代理服务器发送一个请求并指定目标,然后代理服务器向目标服务器转交请求并将获得的内容返回给客户端。所以,正向代理,其实是”代理服务器”代理了”客户端”,去和”目标服务器”进行交互。

反向代理(reverse proxy):是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet上请求连接的客户端,此时代理服务器对外就表现为一个反向代理服务器。反向代理,其实是”代理服务器”代理了”目标服务器”,去和”客户端”进行交互

11.什么是CDN,为什么他可以做缓存?

过将内容存储在全球各地的边缘节点上,以就近原则向用户提供内容。 CDN可以做缓存是因为它在全球范围内部署了多个边缘节点,这些节点分布在不同的地理位置,靠近用户所在的区域。当用户请求某个资源(例如网页、图片、视频等),CDN会根据用户的位置,将资源从最近的边缘节点提供给用户。

12.DNS 解析

1.将域名翻译成 IP 地址

2.在浏览器发送一个域名时,首先会在浏览器缓存和系统缓存中查找 IP 地址,若本地不知道,则将向根域名服务器发送请求,但它不能直接返回 IP 地址的映射而是向顶级域名服务器发送请求,顶级服务器会告诉根域名服务器对应的权威域名服务器,之后根域名服务器去权威域名服务器它会返回 IP 地址

 

13.HTTP 状态码?代表什么?

1xx 已接收继续处理 102 请求接受未完成

2xx 200 请求成功 201 建立新资源 202 未处理完成 204 未返回内容

3xx 需要客户端处理操作完成 301 资源已经永久移动到新的 URL 地址

4xx 客户端请求错误 404 资源不存在 302 使用已缓存的

5xx 500 服务器处理错误 401 未授权 403 禁止访问 408 请求超时

14.开网页发生什么?

  1. URL解析,对URL自动编码,检查长度,之后查浏览器缓存是否存在该页面

  2. DNS查询通过浏览器缓存,oshost缓存,路由缓存,ISP缓存和根域名服务器查询对应IP地址

  3. 浏览器将请求封装HTTP报文,建立客户端和服务端连接。之后将报文从外到里封装:以太网首部、IP首部、TCP首部、HTTP头部,经网关和路由器发送到服务器端

  4. 对于一些网站会先到nginx服务器进行负载均衡,之后将把报文发送给servlet容器

  5. servlet容器接收到请求会解析请求行、请求体、请求头,交给MVC处理

  6. DispatcherServlet接收到请求后通过请求路径,返回相应的拦截器和controller

  7. 在controller中进行业务处理,可能调用service和dao层进行CRUD

  8. controller进行处理后返回ModelAndView,然后通过ViewResolver进行处理返回view视图,最后渲染response

  9. 浏览器接收response,并缓存和解码

  10. 浏览器渲染页面

15.拥塞控制?

拥塞控制是网络传输中的机制,防止网络流量过载导致性能下降。它通过控制发送方传输数

据的速率来保证高效的数据传输。其目的是在不造成严重丢包和拥塞的情况下,控制发送方

的发送速率,使数据流量适应当前网络状况。CP实现拥塞控制的四种机制:慢启动(Slow Start)

拥塞避免(Congestion Avoidance)快速重传(Fast Retransmit)快速恢复(Fast Recovery)。

16.TCP的流量控制?

TCP通过滑动窗口实现流量控制。TCP连接的每一方都有固定大小的缓冲空间,TCP接收端只允许发送端发送接收端缓冲区能接纳的数据。若来不及处理,会提醒发送方降低发送速率。

滑动窗口的实现:

接收窗口:表示接收方可接收的数据范围

发送窗口:表示发送方可发送的数据范围

发送方只能在窗口范围内发送数据,接收方也只能接收窗口范围内的数据。

17.滑动窗口限流?

实现滑动窗口限流需要

  1. 建立一个时间回窗口

  2. 随时间移动窗口

  3. 维护一个计数器统计请求数

  4. 窗口移动时清除过期请求计数

  5. 若计数已满,将新请求放入等待队列

  6. 若未满则允许请求执行

  7. 这种方法能灵活应对突发流量或峰值请求,通过动态调整窗口大小来控制系统负载。

18.TCP如何保证可靠传输的?

  1. 校验和:TCP将保持头部和数据的检验和

  2. 三次握手四次挥手

  3. 流量控制

  4. 拥塞控制

  5. ARQ协议:每发完一个分组就停止等待,在收到确认后再发下一个分组

  6. 超时重传:如果收不到一个确认,重发报文段

http://www.dtcms.com/a/323605.html

相关文章:

  • 第15届蓝桥杯Scratch图形化省赛初级组2024年8月24日真题
  • 模型微调与RAG在问答系统中的对比分析
  • [激光原理与应用-205]:光学器件 - LD与DFB的比较
  • leetcode 11. 盛最多水的容器 -java
  • Kubernetes CronJob bug解决
  • B站小波变换视频笔记
  • 原创邮件合并Python工具使用说明(附源码)
  • python---变量作用域
  • 零拷贝技术:提升传统I/O的性能
  • 【C++】string 的特性和使用
  • 欢迎走进《励曼旋耕》
  • LintCode第547题-两数组的交集
  • leetcode 49. 字母异位词分组 - java
  • [激光原理与应用-202]:光学器件 - 增益晶体 - Nd:YVO₄增益晶体的制造过程与使用过程
  • vite面试题及详细答案120题(61-90)
  • 简单聊聊PowerShell
  • Effective C++ 条款32:确定你的public继承塑模出 is-a 关系
  • 【读代码】深度解析 SmolAgents Open Deep Research
  • 杰理-AW-断言-log
  • 计算机网络基础(三)
  • [Shell编程] Shell 函数
  • PyQt5技术栈简述
  • .htaccess 文件上传漏洞绕过总结
  • Linux文件操作详解:一切皆文件
  • 编辑距离-二维动态规划
  • SkyWalking-3--Java Agent开发和集成示例
  • AI智能编程工具汇总
  • ComfyUI版本更新---解决ComfyUI的节点不兼容问题
  • MySQL 主备(Master-Slave)复制 的搭建
  • SOLIDWORKS 2025对工具栏等进行了重新布局和优化