IO 多路复用、网络协议与爬虫抓包介绍

2 阅读2分钟

一、IO多路复用

一个线程一时连接管理着多个socket 通过操作系统****全局地同时监听所有socket的IO状态地 同时等待多个连接 选出其一最早有数据的 绕阻非顺地一个个执行


二、网络数据包处理的细节

  1. 一个线程在****同一瞬间 只能在执行某一行
  2. 多个客户端发送****多个请求 可以同一时刻到达服务器
  3. 网卡一个个地接收
  4. 内核放进各自socket的接收缓冲区
  5. epoll一次告诉线程 各个socket的IO状况
  6. 线程****IO复用地 选择接收缓冲区有请求数据的socket,一个个地处理写入它们socket的发送缓冲区
  7. 操作系统有一好就发它地 通过网卡返回响应

三、应用层协议

1.单元信息表示方式

1.1行文本

分隔符 + 值内容

麦当劳, 商家图片3.jpg, 5.0, 10, 快餐\n

1.2html

成对起始 固定键说明 + 成对<>分隔符 + 值内容

<table border="1">
  <tr>
    <td>商家名称</td>
    <td>图片</td>
    <td>评分</td>
    <td>销量</td>
    <td>分类</td>
  </tr>
  <tr>
    <td>麦当劳</td>
    <td><img src="商家图片3.jpg" width="80"></td>
    <td>5.0</td>
    <td>10</td>
    <td>快餐</td>
  </tr>
</table>
AI写代码html

1.3xml

成对起始 自定义键说明 + 成对<>分隔符 + 值内容

<merchant>
    <name>麦当劳</name>
    <image>商家图片3.jpg</image>
    <score>5.0</score>
    <sales>10</sales>
    <category>快餐</category>
</merchant>
AI写代码XML

1.4json

一个自定义键说明 + 分隔符 + 值内容

{
  "name": "麦当劳",
  "image": "商家图片3.jpg",
  "score": 5.0,
  "sales": 10,
  "category": "快餐"
}
AI写代码javascript
运行

1.5protobuf

二进制值内容


2.现成协议

2.1HTTP协议

约定 在应用层****构成网页的 数据格式

  1. 请求和响应****一一对应
  2. 文本内容html单元信息

四、代理

中间的代理 参与两者的发接工作


五、抓包

抓包工具 可以抓取** 网络数据包的各部分