• 网络协议:扫盲再出发


    目录

    网络爬虫

    搜索引擎 

     robots.txt

     缓存(Cache)

    缓存的使用流程

     缓存:响应头

    缓存:请求头

    缓存:Last-Modified VS ETag

    IPv6

    地址格式

     首部格式

     扩展头部

     即时通信

    XMPP

    MQTT

     流媒体

     常见协议

    网络爬虫

    • 网络爬虫(Web Crawler),也叫网络蜘蛛(Web Spider)
      • 模拟人类使用浏览器操作页面的行为,对页面进行相关的操作
      • 常用的爬虫工具:Python的Scrapy框架

    搜索引擎 

     robots.txt

    • robots.txt是存放于网站根目录下的文本文件,比如:https://www.baidu.com/robots.txt。用于告诉爬虫哪些可以爬,哪些不可以

     缓存(Cache)

    实际上,HTTP的缓存机制远远比上图的流程要复杂。通常会缓存的情况是:GET请求 + 静态资源(比如HTML,CSS,JS,图片等)。Ctrl + F5强制刷新缓存

    缓存的使用流程

     缓存:响应头

    • Pragma:作用类似于Cache-Control,HTTP/1.0的产物
    • Expires:缓存的过期时间(GMT格式时间),HTTP/1.0的产物
    • Cache-Control:设置缓存策略
      • no-storage:不缓存数据到本地
      • public:允许用户、代理服务器缓存数据到本地
      • private:只允许用户缓存数据到本地
      • max-age:缓存的有效时间,单位:秒
      • no-cache:每次需要发请求给服务器询问缓存是否有变化,再来决定如何使用缓存
    • 优先级:Pragma>Cache-Control>Expires
    • Last-Modified:资源最后一次修改的时间
    • ETag:资源的唯一标识符(根据文件内容计算出来的摘要值)
    • 优先级:ETag  >  Last-Modified

    缓存:请求头

    • If-None-Match
      • 如果上一次的响应头中有ETag,就会将ETag的值作为请求头的值
      • 如果服务器发现资源的最新摘要值跟If-None-Match不匹配,就会返回新的资源(200 OK)
      • 否则,就不会返回资源的具体数据(304 Not Modified)
    • If-Modified-Since
      • 如果上一次的响应头中没有ETag,有Last-Modified,就会将Last-Modified的值作为请求头的值
      • 如果服务器发现资源的最后一次修改时间晚于If-Modified-Since,就会返回新的资源(200 OK)

    缓存:Last-Modified VS ETag

    • Last-Modified的缺陷
      • 只能精确到秒界别,如果资源在1秒内被修改了,客户端将无法获取最新的资源数据
      • 如果某些资源被修改了(最后一次修改时间发生了变化),但是内容并没有任何变化,会导致相同的数据重复传输,没有使用到缓存
    • ETag可以办到
      • 只要资源的内容没有发生变化,就不会重复传输数据
      • 只要资源的内容发生了变化,就会返回最新的资源数据给客户端

    IPv6

    • IPv6(Internet Protocol version 6),译为:网际协议第6版
      • 用它来取代IPv4主要是为了解决IPv4地址枯竭的问题,同时它也在其他方面对于IPv4有许多改进
      • 然而长期以来IPv4在互联网流量中仍占据主要地位,IPv6的使用增长缓慢。(因为需要设备、操作系统内核升级来支持IPv6)
    • IPv6采用128位的地址,而IPv4使用32位。
      • 支持2^128个地址,约3.4 * 10^38个地址
      • 就以全球70亿人计算,每个人平均分配到4.86 * 10^28个IPv6地址

    地址格式

     首部格式

    有40字节的固定首部

    • Version(占4位,0110):版本号
    • Traffic Class(占5位):交通级别
      • 指示数据包的类别或者优先级,可以帮助路由器根据数据包的优先级处理流量
      • 如果路由器发生拥塞,则优先级最低的数据包将被丢弃
    • Payload Length(占16位):有效负载长度
      • 最大值65535
      • 包括了扩展头部、上层(传输层)数据的长度 
      • Hop Limit(占8位):跳数限制
        • 于IPv4数据包中的TTL相同
      • Source Address(占128位)
      • Destination Address(占128位)
      • Flow Label(占20位):流标签
        • 指示数据包属于哪个特定序列(流)
        • 用数据包的源地址、目标地址、流标签标识一个流

     扩展头部

    •  Next Header(占8位):下一个头部
      • 指示扩展头部(如果存在)的类型、上层数据包的协议类型(例如:TCP、UDP、ICMPv6)

    ​​​​​​​

     即时通信

    • 即时通信(Instant Messaging ,简称IM),平时使用的QQ、微信,都属于典型的IM应用
    • IM云服务:网易云信,腾讯云,环信
    • 国内的IM开发者社区:http://www.52im.net/
    • 常用的协议:XMPP、MQTT、自定义协议

    XMPP

    • XMPP(Wxtensible Messaging and Presence Protocol),译为:可扩展雄安锡于存在协议,前身是Jabber
    • 基于TCP,默认端口:5222、5269
    • 特点
      • 使用XML格式进行传输,体积较大
      • 比较成熟,开发者接入方便

    MQTT

    • MQTT(Message Queuing Telemetry Transport),译为:消息队列遥测传输
      • 基于TCP,默认端口:1883,8883(带SSL/TLS)
    • 特点
      • 开销很小,以降低网络流量,信息冗余远小于XMPP
      • 部署专门为IM设计的协议,因此很多功能需要自己去实现
      • 很多人认为MQTT是最适合物联网(IoT, Internet of Things)

     流媒体

    • 流媒体(Streaming Media),是指将一连串的多媒体数据压缩后,经过互联网分段发送数据,在互联网上即时传输影音以供观赏的一种技术。此技术使得资料数据包得以像流水一样发送,不适用此技术,就必须在使用前下载整个媒体文件

     常见协议

  • 相关阅读:
    基础篇-SpringBoot HTTP接口实战
    uni-app入门:小程序UI组件Vant Weapp
    上手之Python之文件操作
    OFDM 十六讲 2- OFDM and the DFT
    软考高级系统架构设计师系列之:计算机与网络基础知识汇总
    Oracle——行转列与列转行
    Linux进程间通信
    仙人掌之歌——投石问路(1)
    基于STM32设计的(无人)智慧超市-2023改进版
    SpringBoot解决跨域问题的六种方式
  • 原文地址:https://blog.csdn.net/weixin_62775913/article/details/126643947