计算机网络1-HTTP

喜欢这篇文章吗?喜欢的话去看博主的置顶博客,即可依据分类找到此文章的原版得到更好的体验,

图片及代码显示的问题,笔者深感抱歉,想要更好的体验去原博文即可。


title: 计算机网络1 - HTTP
mathjax: true
date: 2020-03-18 21:23:51
categories: [计算机网络]
tags: [计算机网络]
keywords: [计算机网络]


七层网络

  • 应用层: 针对应用程序的通信服务,大多数文件传输需要第七层
  • 表示层: 加密数据和定义数据格式(ASCII或者二进制)
  • 会话层: 将断开的数据合并,完成回话,则表示层看到的数据是连续的
  • 传输层: TCP、UDP
  • 网络层: IP
  • 链路层: 在单个链路上传输数据
  • 物理层: 传输介质等东西

UDP

  • 无连接
  • 包送达的顺序是任意的,因为包可能选择不同的路径
  • UDP发包就行了,能不能到看脸,因此不会重传数据
  • UDP的包会重复, 要是有些不敬业的程序员瞎操作,为了保证数据完整性,每个包都给你发5次,就重复了
  • 无流控制
  • 无拥塞控制

TCP

  • 面向连接,要连接和挂断
  • 可靠的发送,按顺序送达,包丢失重传,包不会重复
  • 接受用缓冲区控制速度
  • 拥塞控制

HTTP下载文件的过程

  • 获得名字所对应的地址(DNS)
  • 和地址对应的服务器建立连接(TCP)
  • 发送获取页面的请求
  • 等待响应
  • 渲染HTML等文件
  • 断开TCP连接

PLT

   page load time ,从按下到看见页面的时间,与页面内容有关,与HTTP协议有关、与网络的RTT(Round Trip Time)和带宽有关。

早期的HTTP

 &emp; 早期HTTP/1.0使用单个TCP连接获取一个WEB资源,然后就断开TCP,很容易实现,但性能堪忧。
   尽管是访问同一个服务器的不同资源,也要串行,建立了多个TCP,断开了多个TCP,这是很耗时间的。并没有高效使用网络。
   每次TCP的连接都将导致三次握手和慢启动,在高RTT的时候,三次握手很慢,在传输大文件的时候慢启动很耗时。

HTTP基本优化

  • 利用缓存和代理来避免传输相同的内容(DNS缓存和网页缓存)
  • 利用CDN让服务器里客户更近
  • 文件压缩后传输

HTTP1.1

  • 改进HTTP协议
  • 并行连接
  • 持久连接
  • 支持range头传输,即只传输文件的某一部分

HTTPS

  • HTTPS使用CA申请证书,证书一般需要交费
  • HTTPS建立在SSL/TLS上,加密
  • HTTPS使用443端口

SPDY

  • 多路复用降低延迟,多个流共享一个tcp,解决了HOL blocking(流水线会因为一个response阻塞导致全部阻塞).
  • 请求优先级,优先响应html,而后是js等
  • header压缩(DEFLATE,即LZ77+哈夫曼编码)
  • 基于HTTPS
  • 服务器推送,若客户端请求了sytle.css,服务器会吧style.js推送给客户端,

HTTP2.0

  • 基于SPDY
  • 使用明文传输
  • 使用HPACK压缩

并行连接

   让浏览器并行HTTP实例,但这导致了网络对突发带宽及丢包率

持久连接

   用一个连接处理多个HTTP请求,这时候的多个HTTP请求又可以使用流水线。这个技术被用于HTTP/1.1

持久连接的问题

   保持TCP连接多长时间?可能导致更慢。???

网页缓存

   询问服务器时间戳是否过时。

网页代理

  • 大缓存+安全检查
  • 禁止访问某些网站
    缺点:
  • 安全问题,银行不能缓存
  • 动态内容不缓存
  • 大量不常用信息在缓存中

CDN

   内容分发网络,我感觉服务器就像树根,客户端就像树的叶子,CDN就是中间的东西,从服务器向客户端传输文件的时候,没有必要每次都从根向叶子传输,可能叶子的父亲就拥有正确的文件,直接让他给你传就完事了。如下图,客户端4和客户端5先后要一个文件,我们从服务器1传个文件给CDN2,CDN2传给客户端4,当客户端5请求同一个文件的时候,服务器1没有必要再传文件给CDN2了,直接让CDN2给客户端5文件就行了。

服务器1
2
3
客户端4
客户端5
客户端6
客户端7

猜你喜欢

转载自blog.csdn.net/qq_41157212/article/details/104979856
今日推荐