Python爬虫 - 网络编程

1. 网络编程基础

1.1 介绍

  1. 网络编程基础
    (1) OSI模型和TCP/IP协议
    计算机网络、OSI七层模型、TCP/IP模型、TCP/IP各层实现的协议
    (2) 网络设备
    终端设备、移动设备、家用网络设备、通信线缆、企业级网络设备、运营商级网络设备、数据中心
    (3) 网络模拟软件Packet Tracer
    软件介绍安装、构建网络扑图、配置网络拓扑信息、实现网络拓扑的信息传递
  2. 网络编程进阶
    (1) 数据链路层
    通过Packet Tracer查看数据帧
    使用psutil模块获取当前通信网卡的MAC地址
    (2) 网络层
    IP地址介绍,IP地址划分,子网掩码的作用
    路由介绍,设备路由配置
    网络层协议ARPICMP,通过Scapy模块实现ARPICMP通信协议
    (3) 传输层
    UDP协议、TCP协议
    TCP三次握手、四次挥手
    通过UDP协议实现简单的网络聊天室
    通过TCP协议实现简单的TCP服务器和客户端
    (4) 应用层
    HTTP协议、DHCP协议、SMTP协议、TELNET\SSH协议
    通过TCP协议实现简单的静态HTTP服务器
    打开网页的过程
    连接WIFI的过程
    通过Python发送邮件
    在网络设备中配置TELNETSSH

1.2 TCP/IP协议

1.2.1 网络和OSI七层模型

  1. 网络
    计算机网络,就是把分布在不同地理区域的计算机以及专门的外部设备利用通信线路互联成一个规模大、功能强的网络系统,从而使众多的计算机可以方便的互相传递信息,共享信息。
  2. 网络的演进
    1960年-1970年:简单连接
    1970年-1980年:基于网络的连接
    1980年 - 现在:网络互联
  3. 网络分类
    (1) 局域网LAN
    通常指几公里以内的,通过某种介质互联的计算机、打印机或其他设备的集合。
    特点:距离短、延迟小、数据速率高、传输可靠
    (2) 城域网MAN
    一种比局域网更大的网,通常覆盖一个城市,从几十公里到一百公里不等,可能会有多种介质,用户的数量也比局域网更多。
    特点:连接范围可以在1-100公里。
    (3) 广域网WAN
    这种网络也被称为远程网,覆盖的范围比城域网(MAN)更广,一般是在不同城市之间的局域网(LAN)或者城域网(MAN)互联,地理范围可从几百公里到几千公里。因为距离较远,信息衰减严重,所以一般要租用专线。
    特点:传输距离从几百公里到几千公里,信息衰减严重
    (4) 互联网Internet
    网络规模最大的网络,也被称为WebWWW和万维网等。全球计算机的互联。
    特点:不定性、信息量大、传播广
  4. OSI参考模型介绍
    OSI是国际标准化组织(ISO)研究出的一种用于开放系统互联的体系结构。
    两个遵循OSI模型的系统可以互联。
  5. OSI七层模型
    七层模型:物理层、数据链路层、网络层、传输层、会话层、表示层、应用层
    最前三层是底层,负责网络数据传输。
    最后三层是高层,负责主机之间的数据传输。
    (1) 物理层
    比特流传输。
    (2) 数据链路层
    提供介质访问,链路管理。
    (3) 网络层
    寻址和路由选择。
    (4) 传输层
    建立主机端到端的连接。
    (5) 会话层
    建立、维护和管理会话。
    (6) 表示层
    处理数据格式、数据加密等。
    (7) 应用层
    提供应用程序间的通信。
  6. 数据封装和解封装过程


    数据封装和解封装过程

1.2.2 TCP/IP参考模型

  1. TCP/IP协议
    五层模型:物理层、数据链路层、网络层、传输层、应用层
    其中,物理层、数据链路层有时被统称为网络接口层。
    相对于OSI参考模型,TCP/IP协议是工业标准,是当前的事实标准。
    TCP/IP协议中的应用层对应OSI参考模型中的应用层、表示层、会话层三层。
    (1) 物理层
    二进制数据流传输。
    (2) 数据链路层
    物理介质访问。
    (3) 网络层
    寻址和路由选择。
    (4) 传输层
    建立端到端的连接。
    (5) 应用层
    提供应用程序网络接口。
  2. 模型对比


    模型对比

1.2.3 TCP/IP各层实现的协议

  1. 应用层
    HTTP:超文本传输协议,基于TCP,使用80号端口,是用于从WWW服务器传输超文本到本地浏览器的传输协议。
    SMTP:简单邮件传输协议,基于TCP,使用25号端口,是一组用于由源地址到目的地址传递邮件的规则,用来控制通信的发送、中转。
    FTP:文件传输协议,基于TCP,一般上传下载用FTP服务,数据端口是20号端口,控制端口是21号端口。
    TELNET:远程登录协议,基于TCP,使用23号端口,是Internet远程登录服务的标准协议和主要方式。为用户提供了在本地计算机上完成远程主机工作的能力。在终端使用者的电脑上使用telnet程序连接服务器。使用明码传送,保密性差,简单方便。
    DNS:域名解析,基于UDP,使用53号端口,提供域名到IP地址之间的转换。
    SSH:安全外壳协议,基于TCP,使用22号端口,为建立在应用层和传输层基础上的安全协议。SSH是目前较可靠,专为远程登录会话和其他网络服务提供安全性的协议。
  2. 传输层
    TCP:传输控制协议。一种面向连接的、可靠的、基于字节流的传输层通信协议。
    UDP:用户数据报协议。一种面向无连接的通信协议,不可靠的,基于报文的传输层通信协议。
    SCTP:流量传输控制协议。一种面向连接的流传输协议。在首发两端有多条路径,但实际只是使用一条路径传输,当该条路径出现故障时,不需要断开连接,而是转移到其他路径。
    MPTCP:多路径传输控制协议。TCP的多路径版本。MPTCP真正意义上实现了多路径并行传输,在连接建立阶段,建立多条路径,然后使用多条路径同时传输数据。
  3. 网络层
    IPInternet协议。通过路由选择将下一条IP封装后交给接口层。IP数据包报无连接服务。
    ICMPInternet控制报文协议。是网络层的补充。用于在P主机、路由器之间传递控制消息,检测网络通不通、主机是否可达、路由是否可用等网络本身的消息。
    例如:ping命令。
    ARP:地址解析协议。通过目标设备的IP地址,查询目标设备的MAC地址,以保证通信的顺利进行。
    注释:MAC地址在某一个厂商中是唯一的。
    RARP:反向地址解析协议。

1.3 常见网络设备

  1. 网络设备
    网络设备实现了TCP/IP协议,并提供服务。
    (1) 家用
    网络层:笔记本电脑、手机、电视盒子、网络摄像头、无线路由器。
    数据链路层和网络层:交换机
    物理层:网线、光纤
    (2) 企业
    网络层:企业级路由器、企业级交换机、服务器、存储服务器、硬件防火墙、入侵检测系统、入侵防御系统、VPN设备
    (3) 运营商
    运营商级路由器、运营商级交换机、数据中心
    注释:二层交换机工作在数据链路层,三层交换机工作在网络层。

1.4 网络模拟软件Packet Tracer

  1. Packet Tracer
    Cisco Packet Tracer是由思科(Cisco)公司发布的一个辅助学习工具,为学习思科网络课程的初学者去设计、配置、排除网络故障提供了网络模拟环境。
  2. 软件登录
    用户名:dazhuang_python@sina.com
    密码:Dazhuang123()
    image.png
  3. 构建网络拓扑图


    拓扑图

2. 网络编程进阶

2.1 介绍

  1. 数据链路层编程
    数据链路层桢格式
    MAC地址与ARP协议
    通过psutil模块获取通信主机的MAC地址
  2. 网络层编程
    IP协议概述
    IP地址的划分、子网掩码的作用
    路由器配置路由实例演示
    什么是ICMP协议
    通过scapy模块实现ARPICMP扫描局域网主机存活状态
  3. 传输层编程
    UDP协议和TCP协议概述、区别
    服务器、客户端通信,模型
    TCP三次握手、四次挥手
    通过UDP协议实现简单聊天室
    通过TCP协议实现简单服务器、客户端通信模型
  4. 应用层编程
    HTTP协议概述、请求格式、方法、状态码
    通过TCP实现简单静态WEB服务器,并通过浏览器访问
    从客户端打开浏览器到服务器返回网页中间过程
    DHCP协议、TELNET\SSH协议,SMTP协议

2.2 数据链路层编程

  1. TCP/IP协议5层结构
    (1) 应用层
    提供应用程序网络接口
    (2) 传输层
    建立端到端连接
    (3) 网络层
    寻址和路由选择
    (4) 数据链路层
    物理介质访问
    (5) 物理层
    二进制数据流传输
  2. 数据链路层概述
    数据链路层和物理层也称为网络接口层,该层包括主机用于连接网络的网络接口卡(网卡)及驱动程序,主要处理与传输媒介(如网线、光纤、无线电波等)的物理层接口细节。
  3. 物理层传输数据
    发送终端要发的数据会转换为010101的比特流,通过网线、光纤、无线电波传到很远的目的地。接收终端接收到010101的比特流后,组装成数据帧传递到数据链路层。
  4. 数据链路层传输数据
    网络设备都安装了网络适配器,即网卡,数据是从一块网卡传送到另一块网卡。
    网卡地址就是数据的发送地址和接收地址,也就是数据帧所包含的MAC地址。
    MAC地址是每块网卡的身份标识,具有全球唯一性。MAC地址采用十六进制标识,共6个字节,前三个字节是厂商编号,后三个字节是网卡流水号,例如:4C-0F-6E-12-D2-19
  5. 数据链路层传输数据
    有了MAC地址以后,网络内采用广播形式,把数据发给该子网内所有主机,子网内每台主机在接收到这个包以后,都会读取数据内的目标MAC地址,然后和自己的MAC地址进行对比,如果相同就做下一步处理,如果不同,就丢弃这个包。
  6. 数据以数据帧形式进行通信
    主机作为数据发送方时,数据链路层负责将来自本机网络层的数据封装为数据帧进行发送,接收方在收到数据帧后会给数据发送方发送反馈信息,如果数据传输有误,发送方需要重新发送出错的数据帧。
    主机作为数据接收方时,数据链路层负责对接收到的数据帧进行CRC校验,并给数据发送方发送反馈信息,如果数据无误,会将接收到的正确帧数据的目标MAC地址,源MAC地址和CRC部分去掉后递交为网络层处理。
    数据链路层通信使用MAC地址识别主机,主机之间交换数据帧。
  7. psutil模块
    能够轻松实现获取系统运行的进程和系统利用率(包括CPU、内存、磁盘、网络等)信息。它主要应用于系统监控,分析和限制系统资源及进程的管理。
    pip3 install psutil

2.3 网络层编程

  1. 网络层概述
    网络层负责获取和维护主机的IP地址,IP地址用于主机间进行网络互联的标识,网络层负责给数据包选择路由路径。
    负责点到点的传输(这里的点指主机或路由器)。
  2. 网络层协议
    IP网际协议、ARP地址解析协议、ICMP网际控制消息协议。
  3. IP网际协议
    IP协议位于网络层,它是TCP/IP协议族中最为核心的协议,所有的上层协议如TCPUDP数据都以IP数据包格式传输。
  4. IP协议特征
    不可靠(unreliable)、无连接(connnectionless)
  5. IP协议版本
    (1) IPV4
    IPV4是互联网协议的第四版,也是第一个被广泛使用,构成现今互联网技术的基础协议,是TCP/IP协议簇中的核心协议。
    (2) IPV6
    IPV6是互联网协议的第六版,是新一代的互联网技术的基础协议,目前正在推广中。
  6. IPV4协议格式
    IPV4使用4个字节及32个二进制位表示一个地址,通常采用点分十进制方法表示,例如192.168.1.1。也可以通过二进制表示。
    地址分成两个部分:网络地址和主机地址,各占16位。
    192. 168. 1. 1
    11000000.10101000.00000001.00000001
    IPV4协议格式
  7. IP地址划分
    A类地址(0.0.0.0 - 127.255.255.255)以0开头,网络端长度为8位,其中可变部分的长度为7位;主机段长度为24位。7位的可变网络段可识别2^7 = 128(0-127)个网络,其中0127另有用途,故只有126个可用的A类网络地址。
    B类地址(128.0.0.0 - 191.255.255.255)以10开头,网络端长度为16位,其中可变部分的长度为14位;主机段长度为16位。14位的可变网络段可识别2^14个网络,因此一个B类网络可以分配地址有2^16个。
    C类地址(192.0.0.0 - 223.255.255.255)以110开头,网络端长度为24位,其中可变部分的长度为21位;主机段长度为8位。21位的可变网络段可以识别的网络数为2^21个。可分配的主机地址是2^8个。
    D类地址(224.0.0.0 - 239.255.255.255)为组播地址,使用1110开头,不分网络段和主机段,有2^28个组播地址。用于标识预先定义的一组主机。主机使用组播通信时,可以将组播数据报一次性发送给所有同组的主机。
    E类地址(240.0.0.0 - 255.255.255.255)是保留地址,用于研究使用。以1111开头,不区分网络段和主机段,其中32位全1代表本网络内广播,因此E类地址共有2^28-1个。
  8. 公有IP地址和私有IP地址
    公有地址在Internet中使用,可以在Internet中随意访问。
    私有IP地址无法在Internet中使用,只能在内部使用。
  9. 私有IP地址和特殊IP地址
    A类:10.0.0.0/8 10.0.0.0 - 10.255.255.255
    B类:172.16.0.0/12 172.16.0.0 - 172.31.255.255
    C类:192.168.0.0/16 192.168.0.0 - 192.168.255.255
    本地回环地址指的是以127开头的地址(127.0.0.1 - 127.255.255.254),通常使用127.0.0.1来表示。
  10. 子网掩码
    用网线直接连接的计算机要能够相互通讯,计算机必须要在用一个网络。
    他们的网络地址必须相同,而且主机地址必须不一样。
    子网掩码就是判断网络中的计算机在不在同一网络。
  11. 子网掩码计算规则
    IP地址1192. 168. 1. 1
    11000000. 10101000. 00000001. 00000001
    IP地址2192. 168. 1. 200
    11000000. 10101000. 00000001. 11001000
    子网掩码:255. 255. 255. 0
    11111111. 11111111. 11111111. 00000000
    IP地址与子网掩码进行与运算,如果结果相同,则可以通讯。
    image.png
  12. 路由器
    路由器(Router)又称为网关设备(Gateway),用于连接多个逻辑上分开网络的一种设备,当数据从一个子网传输到另一个子网时,可以通过路由器的路由功能完成。
    image.png
  13. 路由表
    直连路由:设备和设备接口间相连的路由
    静态路由:手动配置的路由
    动态路由:通过动态路由协议学习的路由
  14. ARP协议
    ARP(Address Resolution Protocol)是个地址解析协议。
    在网络通讯时,源主机的应用程序知道目的主机的IP地址和端口号,却不知道目的主机的硬件地址,而数据包首先是被网卡接收到再去处理上层协议的,如果接收到的数据包的硬件地址与本机不符,则直接丢弃。因此在通讯前必须获得目的主机的硬件地址。
    在局域网中,网络中实际传输的是“”,帧里面有目标主机的MAC地址。
    在网络中,一个主机要和另一个主机进行通信,必须要知道目标主机的MAC地址。
    地址解析:主机在发送帧前将目标IP地址转换成目标MAC地址的过程。
    当主机A向本局域网上的某个主机B发送IP数据包时,先在自己的ARP缓冲表中查看有无主机BIP地址。
    如果有,就可以查出其对应的硬件地址,再将此硬件地址写入MAC帧,然后通过以太网将数据包发送到目的主机中。
    如果查不到主机BIP地址的表项。可能是主机B才接入网络,也可能是主机A和主机B没有通信过,这时想要通信,则必须通过ARP协议解析。
    ARP进程在本局域网上广播一个ARP请求。ARP请求的主要内容是表明: 我的IP地址是192.168.1.1,我的硬件地址是00-00-C0-15-AD-18。我想知道 IP地址为192.168.1.100的主机的硬件地址。
    在本局域网上的所有主机都收到此ARP请求。
    主机BARP请求中见到自己的IP地址,就向主机A发送ARP响应,并写入自己的硬件地址。其余的所有主机都不理睬这个ARP请求。
    虽然ARP请求是广播发送的,但ARP响应是普通的单播,即从一个源地址发送到一个目的地址。

2.4 传输层编程

2.5 应用层编.

推荐阅读更多精彩内容