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