Bootstrap

网络协议:扫盲再出发

目录

网络爬虫

搜索引擎 

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

 常见协议

;