网络编程浅析——库、工具、协议

先供上一张好图:

在这里插入图片描述

协议对应库

网络编程=“网络”+“编程”,
//互联网将所有的计算机连接起来,合体形成的计算机,内存更大,速度更快
//但本质与单个计算机并没有什么不同,不过是信息在不同主机的存储器之间传播罢了,
// ∴ \therefore 用到的库==单个计算机的系统库+网络通信库

=网络对应库

  1. 应用层:
    1. http:访问html获取信息:urllib → \rightarrow requests
    处理信息:
    a. (按照路径抓取、导航、修改XML和HTML文件目录下的对应项):lxml
    在这里插入图片描述
    +BeatuifulSoup
    b. 处理数据(为通用库,不只网络编程一个方向占有):Pandas(操作与运算数列)+Matplotlib(数据可视化)
    2. 上网至少有访问网页和登录应用两种方式,抓取应用信息的有Charlies和Fidder工具
    3. 许多网站和应用进化出了输入验证码的反爬虫机制,相应的库
    字符    ⟺    \iff tesserocr+第三方验证码+滑动窗格(webdriver,re,实现函数如下)
    在这里插入图片描述
    4. smtp(simple message transmission protocal):EmailMessage(email.message,email.policy,email.utils)+smtplib+poplib+…
    5. ftp:ftplib(这朴实无华的名字~~)
    6. RPC(remote Procedure Call,有帖子说在Harmony System上用这个可以提高华为手机的兼容性):xmlrpc
    (反正要实现什么功能就封装个库,项目就是写一堆文件然后封装成提供api的库文件供调用
  2. 传输层:socket
  3. 网络、链路、物理层好像没有协议库,因为就是语法格式呀,当然没有啦

+操作系统对应库:

1. os
2. threading
3. zmp
4. queue

网络查看工具 → \rightarrow 可视化网络连接过程

  1. Ping(自带):访问ip地址,检测是否可以链接,遵从ICMP协议
  2. Wireshark:分析网络连接的网络封包(数据包在传输过程中遵守的协议集合)
  3. telnet:访问服务器工具,当然也可以用命令行来进行,但是这个更快
  4. Apache:配置本地http服务器
  5. vsftpd:配置本地FTP服务器

概念子树(参考百度百科):

  1. DHCP:动态ip建立工具,从属于这个ip服务器下的所有客户端都可以访问

  2. ICMP协议:在主机、路由器间传送网络通不通、主机是否可达、路由是否可用等网络本身的消息,IP协议一个模块
    在这里插入图片描述

  3. BOOTP协议:用于无盘工作站的局域网中,可以让无盘工作站从一个中心服务器上获得IP地址,这样就不需要管理员去为每个用户去设置静态IP地址。

  4. ARP:ip    ⟺    \iff 物理地址 转化 的一个TCP/IP协议
    出现原因:在以太网环境中,数据的传输所依懒的是MAC地址而非IP地址,而将已知IP地址转换为MAC地址的工作是由ARP协议来完成的。
    主机发送信息时将包含目标IP地址的ARP请求广播到局域网络上的所有主机,并接收返回消息,以此确定目标的物理地址;
    收到返回消息后将该IP地址和物理地址存入本机ARP缓存中并保留一定时间,下次请求时直接查询ARP缓存以节约资源。
    类似缓存,查询域名和ip对应后也在本地存储,没有才访问DNS
    在这里插入图片描述

    建立在网络中各个主机互相信任的基础上的,

  5. DNS:域名    ⟺    \iff ip 转化

  6. SDN:软件定义网络
    诞生背景:计算机世界是垂直标准的 → \rightarrow 硬件 → \rightarrow 驱动 → \rightarrow 操作系统 → \rightarrow 应用
    而在SDN诞生前,网络仅是水平标准的    ⟺    \iff 互联网下的主机可以互联,但是没有一个应用可以自顶而下地管理这些主机的联系,路由器只是一座桥,不起管理作用。
    结构:
    数据平面由交换机等网络通用硬件组成,各个网络设备之间通过不同规则形成的SDN数据通路连接;
    控制平面包含了逻辑上为中心的SDN控制器,它掌握着全局网络信息,负责各种转发规则的控制;
    应用平面包含着各种基于SDN的网络应用,用户无需关心底层细节就可以编程、部署新应用。
    在这里插入图片描述

编程实践:

  1. 新建套接字并传播_利用TCP/UDP传输协议
  2. 编写可靠运输协议
  3. ICMP下,利用request和socket编写ping应用程序
  4. 尝试创建在多个主机间有序传播的分布式程序
posted @ 2022-09-22 18:59  clfire  阅读(40)  评论(0编辑  收藏  举报