计算机网络相关知识点
基础
- OSI模型(7层)
- 应用层、表示层、会话层、传输层、网络层、 链路层、物理层
- TCP/IP模型(4层)
- 应用层、传输层、网络层、链路层
- 五层TCP/IP模型
- 应用层
- 协议类型:HTTP、SMTP、FTP等
- 传输层
- 协议类型:TCP、UDP
- 网络层
- 协议类型:IP
- 链路层
- 物理层
- 应用层
HTTP协议
- 状态码
- 1xx:提示信息,一般是处理的中间状态,很少用到。
- 2xx:响应成功
- 200:OK
- 204:NOT CONTENT 不含body数据
- 206:PARTIAL CONTENT 部分数据,常用于断点续传
- 3xx: 重定向
- 301:MOVE PERMANENTLY url永久移动,需要使用新url访问
- 302:FOUND 临时重定向
- 304:NOT MODIFIED 资源未修改,重定向至已经缓存的文件
- 4xx:客户端报文错误
- 400:BAD REQUEST
- 403:FORBIDEN
- 404:NOT FOUND
- 5XX:服务器内部出现错误
- 500:INTENAL SERVER ERROR
- 501:NOT IMPOLEMENT
- 502:BAD GATEWAY 网关或者代理出现错误
- 503:SERVICE UNAVAILBLEE 服务器忙,暂时无法响应
- 组成
- header:key-value键值对
- body:传输的信息,主要是html和json格式比较多一些
- 版本:
- HTTP1.0
- 【请求-应答】模式:即一条请求必须得到回应后,才会继续发送第二个请求。
- HTTP1.1
- 优点:
- 增加长连接功能:避免每条请求都要使用tcp三次握手建立连接、四次挥手中断连接
- 支持管道传输
- 缺点:
- header未经压缩就发送,首部信息越多延迟越大,只能压缩body部分
- 经常会发送相同的header
- 队头阻塞:服务器是按请求的顺序响应的,如果服务器响应慢,后面的请求也会阻塞。
- 无请求优先级控制
- 请求只能从客户端开始,服务器只能被动响应
- 优点:
- HTTP2.0
- 是在HTTPS上进行改进
- 优点:
- 头部压缩
- HPACK压缩算法
- 二进制格式
- Header -> Header Frame
- Data -> Data Frame
- 数据流
- 每个请求或回应的所有数据包,称为一个数据流
- 客户端发出的数据流编号为奇数,服务器发出的数据流编号为偶数。
- 客户端可以指定数据流的优先级
- 多路复用
- 可以一个连接中并发多个请求或回应,不用按照顺序一一对应
- 服务器推送
- 服务器可以主动发送消息,发送css,js等静态文件
- 头部压缩
- 缺点:
- 多路复用导致多个HTTP请求在一个tcp连接中,但是tcp并不知道有多少个http请求在该连接上,一旦发生丢包,则会阻塞所有的http请求,所有的http请求都必须等待这个丢了的包被重传回来
- HTTP3.0
- 将运输层协议改为UDP协议(基于QUIC)
- QUIT有一套机制可以保证传输的可靠性。当某个流发生丢包时,只会阻塞这个流,其他流不会收到影响。
- 将运输层协议改为UDP协议(基于QUIC)
- HTTP1.0
- HTTPS-安全PLUS
- 在HTTP和TCP之间加入SSL/TLS,保证通信安全
- 保证安全性的方法:
- 混合加密:使用对称加密和非对称加密
- 摘要算法:验证数据一致性
- 数字证书
TCP 协议
- header:至少20个字节
- 三次握手的原因
- 浅层:为了保证连接双方具有接收和发送的能力。
- 深层:用于保证维护可靠性和流量控制的信息
- 可以阻止重复历史连接的初始化(首要原因)
- 可以同步双方的初始化序列号
- 避免资源浪费
- 四次挥手:为什么要有2MSL的time-wait
- 防止具有相同四元组的旧数据包被收到
- 保证 被动关闭连接 的一方能被正确的关闭
- 如何保证可靠性
- 校验和
- 重传
- 流量控制
- 控制接受窗口和发送窗口的大小
- 拥塞控制
- 拥塞窗口大小可变
- 步骤:
- 慢启动:指数增长
- 拥塞避免:超过阈值,线性增长
- 拥塞发生
- 超时重传:从慢启动开始
- 快速重传:使用 快速恢复算法
TCP沾包和拆包
- 沾包
- 产生原因:
- socket缓冲区与滑动窗口
- MSS/MTU限制
- Nagle算法
- 解决办法:
- 产生原因:
- 拆包
- 产生原因
转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 525244039@qq.com
文章标题:计算机网络相关知识点
文章字数:1.1k
本文作者:Zikun
发布时间:2021-08-30, 16:27:49
最后更新:2021-08-30, 16:27:49
原始链接:http://zikun97.github.io/2021/08/30/%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C%E7%9B%B8%E5%85%B3%E7%9F%A5%E8%AF%86%E7%82%B9/版权声明: "署名-非商用-相同方式共享 4.0" 转载请保留原文链接及作者。