计算机网络篇

计算机网络篇

网络模型

OSI模型

OSI 模型
底——————————————>高

物理层、数据链路层、网络层、传输层、会话层、表示层、应用层

TCP/IP模型

网络接口层、网络层、传输层、应用层

TCP、IP层位于哪一层?

TCP位于传输层。IP位于网络层。

应用层

Http常用的状态码?

  • 1XX 提示信息

  • 2XX 处理成功

  • 3XX 客户端请求资源发生了变动,需重定向

  • 4XX 客户端发送的报文有误,服务器无法处理。

  • 5XX 服务端处理发生了错误。

HTTP返回状态301、302

  • 301 Moved Pemanently表示永久重定向,表示资源不存在了,需要改用新的URL再次访问。
  • 302 Found 表示临时重定向,请求资源还在,但需要另一个URL来访问。

HTTP 502和504的区别?

502 Bad Gateway:作为网关或者代理工作的服务器尝试请求,服务器无响应。

504 Gateway Time-out:作为网关或者代理工作的服务器尝试请求,服务器超时。

GET和POST的使用场景

一般来说。

  • GET 从服务器获得指定资源。GET方法安全且幂等。请求可以由浏览器缓存下来。返回URL。
  • POST 新增或提交数据。GET不安全不幂等。一般浏览器不会缓存。返回请求体(JSON,form,二进制..)

何时用哪一个(实战建议)

  • GET:查询列表/详情、带筛选排序分页(可书签、可缓存)。
  • POST:创建资源、提交表单/登录、复杂查询超长参数、上传文件、执行动作(结算、导出生成等)。

HTTP短连接和长连接?

短连接:建立TCP->请求资源->响应资源->释放连接。
建立连接方式:TCP三次握手,断开连接::四次挥手
长连接:建立TCP->(请求资源->响应资源->)*N…释放连接。

http和https默认端口?

http:80,https:443.

HTTP1.1怎么对请求做拆包?

请求头包含字段”Content-Length”,该字段用来描述请求内容的长度。依据此长度,服务器就知道请求正文的长度。

HTTP断点重传是什么?

断点重传是:客户端下载当前的下载进度,并在需要续传的时候通知服务端本次需要下载的内容片段。

客户端发送含Range头的请求告诉服务端。Range头包含开始位置-结束位置。

服务端发送Content-Range,Content-Length,accepted-ranges。

HTTP和HTTPS的区别?

  • HTTP,超文本传输协议,信息是明文传输,存在安全风险。HTTPS是在TCP和HTTP网络层之间加入了SSL/TLS安全协议,加密传输。
  • HTTP连接建立简单,TCP三次握手便可传输。HTTPS在三次握手后还需进行SSL/TLS的握手过程。

HTTP1.1和2.0的区别?

  • 头部压缩
  • 二进制格式,帧
  • 并发传输
  • 服务端可主动向客户端发送消息

DNS的全称了解么?

DNS是DomainNameSystem(域名系统)。

类似于树形结构。

  • 根DNS服务器(.)
  • 顶级域DNS服务(.com)
  • 权威DNS服务器(server.com)

DNS的默认端口是53.

DNS的底层使用的是UDP

DNS基于UDP协议实现。

  • 低延迟:无需连接
  • 简单快速,没有连接管理和流量控制
  • 轻量级:头部较小。

HTTP是静态的(无状态)

HTTP每次请求都是独立的,服务器不会记录状态。

token,cookie和session的区别

  • session存储于服务器,拥有一个唯一的状态识别符号sessionId,通常放于cookie中。服务器收到cookie后解析出sessionId,再从session列表中查找,才能找到对应的session。依赖于cookie.
  • cookie类似一个令牌,装有sessionId,存储再客户端,浏览器通常自动添加。cookie存储容量小,通常是几KB。
  • token也类似一个令牌,无状态,服务器分发,用来记录用户信息。

什么数据应该存在到cookie,什么数据存放到 Localstorage

  • Cookie 适合用于在客户端和服务器之间传递数据、跨域访问和设置过期时间。
  • 而 LocalStorage 适合用于在同一域名下的不同页面之间共享数据、存储大量数据和永久存储数据。

JWT令牌

JWT令牌是基于加密算法生成的令牌,服务端依据密钥对用户信息等进行加密发送给浏览器。可在请求头携带。

  • 无状态性:JWT是无状态的令牌
  • 安全性:JWT使用密钥对令牌进行签名。有效放置了CSRF(跨站请求伪造)。
  • 跨域支持:只要在请求头携带上JWT。多个服务器集群可以共同处理JWT。

JWT令牌有哪些字段?

三部分:头部(Header),载荷(Payload),签名(Signature)。头部和荷载均为JSON格式,使用Base64编码进行序列化。

Header记录加密算法和令牌类型。

PayLoad记录用户信息。

签名对头部、载荷、和密钥进行签名的结果

JWT令牌如果泄露了,怎么解决,JWT是怎么做的?

  • 及时失效令牌

  • 刷新令牌

  • 使用黑名单

HTTP长连接与WebSocket有什么区别?

  • 全双工和半双工:TCP协议本身支持全双工,但HTTP1.1是半双工的。对于大部分需要服务器主动推送数据到客户端的场景,Websocket协议更友好。
  • 应用场景:HTTP1.1,客户端不问,服务端就不答。HTTP1.1,可以使用定时轮询长轮询实现服务端推送的效果。
    WebSocket用于频繁交互的复杂场景。

WebSocket有什么特别的点?

  1. 全双工、低开销:
    建立后是持续通道,双方都能主动发送消息。
    帧头只有几个字节。
  2. 服务端可主动推送
  3. 实现、运维友好:
    Android 原生/第三方库直接支持;Node.js事件驱动模型擅长大量长连接
    反向代理支持Upgrade即可如NGINX.
  4. 消息协议可控:
    我们在 WS 之上自定义“房间/对局/落子/聊天/心跳”等消息类型;可用 JSON 快速开发,或用 Protobuf 做二进制以降带宽。
  5. 低延迟

我们选择 WebSocket,因为它在一个持久连接上提供双向、低延迟、可推送的通信,恰好匹配对战类应用“落子即时同步 + 服务器仲裁”的需求;同时部署简单、移动端兼容好,整体体验和成本更优。

Nginx有哪些负载均衡算法?

  • 轮询
  • IP哈希
  • URL哈希
  • 最短响应时间
  • 加权轮询

传输层

TCP三次握手

img

  • 第一个报文:客户端会随机初始化序列号(client_isn),SYN=1,发送给服务端,客户端置于SYN-SENT状态。
  • 第二个报文:服务端接收SYN报文,服务端初始化自己的序号(server_isn),放入[序列号],把TCP首部的[确认序列号]填入client_isn+1,SYN=1,ACK=1,发送给客户端。服务端置于SYN-RCVD状态。
  • 第三个报文:客户端接收到服务端报文后,回应报文。ACK=1,[确认应答号]=server_isn+1,此时可以携带数据。客户端置于ESTABLISHED状态。
  • 服务端接收后,也置于ESTABLISHED状态。

此时客户端和服务端都置于ESTABLISHED状态,连接已经建立完成,相互都可以发送数据了。


计算机网络篇
http://example.com/2025/08/25/计算机网络篇/
作者
Luogic
发布于
2025年8月25日
许可协议