网络协议学习笔记 · 22

学习笔记系列文章


VPN

图01
图02

作用

图03

VPN与代理的区别

  • 软件
    • VPN一般需要安装VPN客户端软件
    • 代理不需要安装额外的软件
  • 安全性
    • VPN默认会对数据进行加密
    • 代理默认不会对数据进行加密(数据最终是否加密取决于使用的协议本身)
  • 费用
    • 一般情况下,VPN比代理贵

实现原理(隧道协议)

请添加图片描述


tcpdump
tcpdump是Linux平台的抓包分析工具,Windows版本是WinDump


网络爬虫

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

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

图05

搜索引擎 图06

简易实例

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

爬取目标: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 并不是一个规范,而只是约定俗成的,所以并不能保证网站的隐私

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

图07

无线网络

图08

缓存(Cache)

图09

响应头

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

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

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

Last-Modified vs ETag

  • Last-Modified的缺陷

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

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

请求头

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)

缓存的使用流程

图10

IPv6

图11

地址格式

图12
图13

ping ::1 可以ping通本机

首部格式

有40字节的固定首部
图14
图15

Version (占4bit,0110):版本号

Traffic Class (占8bit):交通类别

  • 指示数据包的类别或优先级,可以帮助路由器根据数据包的优先级处理流量
  • 如果路由器发生拥塞,则优先级最低的数据包将被丢弃

Payload Length (占16bit):有效负载长度

  • 最大值65535字节
  • 包括了扩展头部、上层(传输层)数据的长度首部格式

Hop Limit (占8bit):跳数限制

  • 与IPv4数据包中的TTL相同

Source Address (占128bit):源IPv6地址

Destination Address (占128bit):目的IPv6地址

Flow Label (占20bit):流标签

  • 指示数据包属于哪个特定序列(流)
  • 用数据包的源地址、目的地址、流标签标识一个流

Next Header (占8bit):下一个头部

  • 指示扩展头部(如果存在)的类型、上层数据包的协议类型(例如TCP、UDP、ICMPv6)

扩展头部

图16
图17

即时通信

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

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) 的网络协议

图18

流媒体

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

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

常见协议

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

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

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

RTSP(Real-Time Streaming Protocol),实时流协议

  • 基于TCP、UDP的554端口
  • 参考:RFC 7820

RTMP(Real-Time Messaging Protocol),实时消息传输协议

  • 默认基于TCP的1935端口
  • 由Adobe公司出品

HLS(HTTP Live Streaming)

  • 基于HTTP的流媒体网络传输协议
  • 苹果公司出品,参考:RFC 821

上一篇:21. WS · HTTPDNS · FTP · 邮件


版权声明:本文为KeepPromise原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。