补充知识

  • 网络爬虫
    • 网络爬虫的简易实例
    • robots.txt
  • 无线网络
  • HTTP 缓存(Cache)
    • 缓存 - 响应头
    • 缓存 - 请求头
    • 缓存的使用流程
  • 即时通信(IM)
    • XMPP
    • MQTT
  • 流媒体 - 常见协议(RTP、RTCP、RTSP、RTMP、HLS)

【网络协议从入门到底层原理】学习笔记汇总

网络爬虫

网络爬虫 (Web Crawler),也叫做网络蜘蛛 (Web Spider)

  • 模拟人类使用浏览器操作页面的行为,对页面进行相关的操作
  • 常用爬虫工具:Python 的 Scrapy框架

网络爬虫 - 搜索引擎

网络爬虫的简易实例

可以使用Java的一个小框架Jsoup爬一些简单的数据

  • jar包:jsoup、commons-io
    https://jsoup.org/packages/jsoup-1.13.1.jar
    https://mirror.bit.edu.cn/apache//commons/io/binaries/commons-io-2.8.0-bin.zip
  • 爬取目标:https://ext.se.360.cn/webstore/categor
import org.apache.commons.io.FileUtils;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;
import java.io.File;
import java.net.URL;public class Main {public static void main(String[] args) throws Exception {// 请求网站:https://ext.se.360.cn/webstore/category// Jsoup使用CSS选择器来查找元素String dir = "C:/Users/yusael/Desktop/imgs/"; // 爬取后的存放路径String url = "https://ext.se.360.cn/webstore/category";Document doc = Jsoup.connect(url).get();Elements eles = doc.select(".applist .appwrap");for (Element ele : eles) {String img = ele.selectFirst("img").attr("src");String title = ele.selectFirst("h3").text();String intro = ele.selectFirst(".intro").text();// 下载图片String filepath = dir + (title + ".png");FileUtils.copyURLToFile(new URL(img), new File(filepath));}}
}

robots.txt

robots.txt 是存放于网站根目录下的文本文件,比如 https://www.baidu.com/robots.txt

  • 用来告诉爬虫:哪些内容是不应被爬取的,哪些是可以被爬取的
  • 因为一些系统中的URL是大小写敏感的,所以 robots.txt 的文件名应统一为小写

robots.txt 并不是一个规范,而只是约定俗成的,所以并不能保证网站的隐私

  • 只能防君子,不能防小人
  • 无法阻止不讲 “武德” 的年轻爬虫爬取隐私信息

一般格式:

例如:京东的 robots.txt:https://www.jd.com/robots.txt

User-agent: *
Disallow: /?*
Disallow: /pop/*.html
Disallow: /pinpai/*.html?*
User-agent: EtaoSpider
Disallow: /
User-agent: HuihuiSpider
Disallow: /
User-agent: GwdangSpider
Disallow: /
User-agent: WochachaSpider
Disallow: /

京东不允许 EtaoSpider、HuihuiSpider、GwdangSpider、WochachaSpider 爬取网站所有网页;
京东不允许一般用户爬取根目录下pop目录里所有html网页 (Disallow: /pop/*.html),pinpai目录里所有html带?问号的页面 (Disallow: /pinpai/*.html?*);
不允许一般用户爬取根目录下带?问号的所有页面 (Disallow: /?*)。
除了这些外,其他的都可以爬取。

无线网络

HTTP 缓存(Cache)


实际上,HTTP 的缓存机制远远比上图的流程要复杂

通常会缓存的情况是:GET请求 + 静态资源(比如HTML、CSS、JS、图片等)

Ctrl + F5:可以强制刷新缓存

缓存 - 响应头

Pragma:作用类似于Cache-Control,HTTP/1.0的产物

Expires:缓存的过期时间 (GMT格式时间),HTTP/1.0的产物

在http协议中规定,所有时间都要转换为GMT时间,例如date: Sat, 19 May 2018 17:17:24 GMT

Cache-Control:设置缓存策略

  • no-storage:不缓存数据到本地
  • public:允许用户、代理服务器缓存数据到本地
  • private:只允许用户缓存数据到本地
  • max-age:缓存的有效时间(多长时间不过期),单位
  • no-cache:每次需要发请求给服务器询问缓存是否有变化,再来决定如何使用缓存

优先级:Pragma > Cache-Control > Expires

Last-Modified:资源的最后一次修改时间

ETag:资源的唯一标识(根据文件内容计算出来的摘要值)

优先级:ETag > Last-Modifie

缓存 - 请求头

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)
  • 否则,就不会返回资源的具体数据 (304 Not Modified)

Last-Modified 缺陷

  • 只能精确到级别,如果资源在1秒内被修改了,客户端将无法获取最新的资源数据
  • 如果某些资源被修改了(最后一次修改时间发生了变化),但是内容并没有任何变化
    (比如在文本中敲个空格再删除)会导致相同数据重复传输,没有使用到缓存

ETag 可以办到

  • 只要资源的内容没有变化,就不会重复传输资源数据
  • 只要资源的内容发生了变化,就会返回最新的资源数据给客户端

缓存的使用流程

即时通信(IM)

即时通信 (Instant Messaging,简称IM),平时用的QQ、微信,都属于典型的IM应用

国内的IM开发者社区:http://www.52im.net/

IM云服务:网易云信、腾讯云、环信等

常用的协议:XMPP、MQTT、自定义协议

XMPP

XMPP (Extensible Messaging and Presence Protocol)

  • 译为:可扩展消息与存在协议,前身是Jabber
  • 基于TCP,默认端口5222、5269

特点

  • 使用XML格式进行传输,体积较大
  • 专为IM而开发的、比较成熟的IM协议,开发者接入方便

MQTT

MQTT (Message Queuing Telemetry Transport),消息队列遥测传输

  • 基于TCP,默认端口1883、8883(带SSL/TLS)

特点

  • 开销很小,以降低网络流量,信息冗余远小于XMPP
  • 不是专门为IM设计的协议,很多功能需要自己实现
  • 很多人认为MQTT是最适合 物联网 (IoT,Internet of Things) 的网络协议

流媒体 - 常见协议(RTP、RTCP、RTSP、RTMP、HLS)

流媒体 (Streaming Media),又叫流式媒体

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

RTP (Real-Time Transport Protocol)实时传输协议

  • 参考:RFC 3550、RFC 3551,基于UDP

RTCP (Real-Time Transport Control Protocol)实时传输控制协议

  • 参考:RFC 3550,基于UDP,使用RTP的下一个端口

RTSP (Real-Time Streaming Protocol),实时流协议,参考:RFC 7820

  • 基于TCP、UDP的554端口

RTMP (Real-Time Messaging Protocol),实时消息传输协议,由Adobe公司出品

  • 默认基于TCP的1935端口

HLS (HTTP Live Streaming),苹果公司出品,参考:RFC 821

  • 基于HTTP的流媒体网络传输协议

网络协议从入门到底层原理(11)网络爬虫、无线网络、HTTP缓存、即时通信、流媒体相关推荐

  1. 网络协议从入门到底层原理(6)应用层 - 域名、DNS、DHCP、HTTP(ABNF、HTTP报文格式、请求方法、头部字段、状态码、跨域)、代理、CDN

    应用层 域名( Domain Name)- 顶级域名.二级域名 DNS - DNS服务器.常用命令 DHCP(DISCOVER.OFFER.REQUEST.ACKNOWLEDGE) HTTP HTTP ...

  2. 网络协议从入门到底层原理(5)传输层(UDP、TCP - 可靠传输、流量控制、拥塞控制、建立连接、释放连接)

    传输层( Transport) 传输层( Transport) UDP 协议(数据格式.检验和) 端口(Port) TCP TCP - 数据偏移.保留 TCP - 检验和( CheckSum) TCP ...

  3. 网络协议从入门到底层原理(3)网络互联模型、物理层、数据链路层(CSMA/CD协议、Ethernet V2帧、PPP协议)

    网络协议从入门到底层原理 网络互联模型(了解请求过程.网络分层) 物理层(Physical) 数字信号.模拟信号 数据通信模型 信道(单工.半双工.全双工) 数据链路层(Data Link) 封装成帧 ...

  4. 网络协议从入门到底层原理(4)网络层(版本、首部长度、区分服务、总长度、 标识、标志、片偏移生存时间、协议、首部校验和)

    网络协议从入门到底层原理 网络层 网络层首部 - 版本.首部长度.区分服务 网络层首部 - 总长度 网络层首部 - 标识.标志 [实践]ping 的几个用法.wireshark抓包 网络层首部 - 片 ...

  5. 网络协议从入门到底层原理(9)HTTP/1.1的升级改进(HTTP/2、HTTP/3)

    HTTP的升级改进 HTTP/1.1协议的不足 SPDY 协议 HTTP/2 HTTP/2的特性 - 二进制格式 HTTP/2基本概念 - 数据流.消息.帧 HTTP/2的特性 - 多路复用(Mult ...

  6. 网络协议从入门到底层原理(10)WebSocket、WebService、RESTful、HTTPDNS、FTP文件传输协议、邮件相关协议、IPv6

    其他协议 WebSocket WebSocket - 建立连接 WebService RESTful HTTPDNS FTP文件传输协议 邮件相关的协议(SMTP.POP.IMAP) POP vs I ...

  7. 网络协议从入门到底层原理(8)HTTPS(成本、通信过程、TLS1.2的连接,配置服务器HTTPS)

    HTTPS SSL / TLS OpenSSL HTTPS的成本 HTTPS的通信过程 TLS 1.2 的连接(ECDHE密钥交换算法) ① Client Hello ② Server Hello ③ ...

  8. 网络协议从入门到底层原理(7)网络安全 - 常见攻击、单向散列函数、对称加密、非对称加密、混合密码系统、数字签名、证书

    网络安全 网络层 - ARP欺骗 DoS.DDoS 介绍与防御 传输层 - SYN洪水攻击(SYN flooding attack) 传输层 - LAND攻击 应用层 - DNS劫持.HTTP劫持 H ...

  9. 网络协议从入门到底层原理(2)路由、网络常见概念(因特网, ISP, 接口, 上网方式)、公网私网、NAT

    网络协议从入门到底层原理 路由 实践1 - 让4台主机之间可以互相通信 实践2 - 让4台主机之间可以互相通信 数据包的传输过程(简) 第一个包的丢失 网络 (Network).互联网 (intern ...

最新文章

  1. 【FFmpeg】FFmpeg中操作目录、文件的接口
  2. 虚拟机服务器503解决,(图文)解决重启VCSA 6.0提示:503 Service Unavailable错误
  3. Windows组策略让你的网络系统更强壮
  4. float相乘后的类型_Psychopy | 第1期:数据类型及运算符
  5. Spark性能优化指南——基础篇
  6. JVM进阶之路, 不然又要被面试官吊打了
  7. 在线英文翻译中文比较
  8. 【JZOJ 省选模拟】6691.六道剑「一念无量劫」
  9. 计算机中硬盘隐藏,如何隐藏电脑硬盘盘符,保护个人隐私 | 我爱分享网
  10. Pr2019 安装教程
  11. linux进程调度器,Linux进程调度器基础讲解
  12. 20190919CF训练
  13. vscode安装插件以及配置anaconda
  14. 教你一键制作纯净Win10系统安装盘
  15. AAAI 2023 | 腾讯优图实验室16篇论文入选,含多标签分类、姿态估计、目标检测、HOI、小样本学习等研究方向...
  16. python生成exe启动很慢_python生成exe启动很慢|Win7电脑启动慢如何解决?Win7使用Msconfig.exe解决电脑启动慢的方法...
  17. 对话系统的设计艺术(完结)
  18. http://bbs.sjz7.com/forum.php,国内 3S 论坛集合(最新)
  19. 摆线方程推导(向量法)
  20. windows下安装nc

热门文章

  1. 你们身边成功的生意人有哪些特质
  2. 今天看到头条好多新手说摆摊不挣钱
  3. 老板为什么越来越难熬?
  4. 我发现不少大有课堂的年轻学员确实在做自媒体
  5. 操作系统————P1 概念、功能和目标
  6. Mybatis_day4_Mybatis的延迟加载
  7. sp_getapplock_sp_getapplock和sp_releaseapplock存储过程概述
  8. 繁忙SQL Server上的查询计划
  9. SQL Server中的零碎数据库还原
  10. 获取request的json数组对象