python网络编程(一)

TCP/IP协议

TCP/IP协议的全称:Transmission Control Protocol/Internet Protocol (传输控制协议/因特网互联协议 or 网络通信协议)。TCP/IP是代表一组协议,因此TCP/IP又被称为TCP/IP协议簇。其中TCP/IP只是其中的两个比较重要的协议。

TCP/IP协议5层结构

应用层     --> 提供应用程序的网络接口 (多种协议:HTTP协议,FTP协议,SMTP协议,DNF协议,SSH协议等)
传输层     --> 建立端到端的连接 (提供应用程序之间的通信:TCP/UDP)
网络层     --> 寻址和路由选择 (IP协议)
数据链路层  --> 物理介质访问
物理层     --> 二进制数据流传输

数据链路层

数据链路层物理层也称为网络接口层,这一层主要用于主机连接网卡以及驱动程序,主要用于物理接口。

物理层传输数据

  1. 发送端把网络层发的数据会封装为,在将数据帧转换为二进制的比特流,通过物理媒介(网线光纤等)传到接收端。接收端收到比特流之后,会组装成数据帧传递到数据链路层,数据链路层会将帧中的数据取出并交给网络层。

  2. 二进制的比特流是计算机可以看懂的语言。

  3. 数据帧是给数据链路层用的语言。

数据帧的格式

Preamble(先导字段,用于同步。7个字节) + SFD(一个字节) + DestAddr(目的Mac地址,4个字节) + SrcAddr(源Mac地址,4个字节) + type(类型,标示网络层) + Data(网络层封装的数据,最小64字节,最大10500字节) + FCS(校验,判断该数据帧是否出现问题)

  • Mac地址:主机物理网卡地址,俗称网卡

    • Windows:ipconfig /all,Linux/Mac:ifconfig -a

    • 网络设备都是安装的有网络适配器,即网卡,数据是从一块网卡传送到另一块网卡。

    • 网卡地址就是数据的发送地址和接收地址,也就是数据帧所包含的Mac地址

    • Mac地址是每块网卡的身份标示,具有唯一性。Mac地址是采用了十六进制标示,共6个字节,前三个字节是厂商编号,后三个字节是网卡流水号

  • Type:IPV4:0x0800,IPv6:0x86dd,ARP:0x0806,PPPoE:0x8864

数据链路层传输数据

网络内部采用广播的形式将数据发给子网内所有主机,每台主机接收到这个包后,后回去读取数据里的目标Mac地址,然后和自己的Mac地址地址进行对比,如果相同,就继续往下走,否则就丢弃。

通信方式

  1. 主机作为数据发送方时,数据链路层负责将来自本机网络层的数据封装为数据帧进行发送,接收方在收到数据帧之后会给数据发送方发送反馈信息,如果数据传输有误,发送方需要重新发送出错的数据帧。
  2. 主机作为数据接收方时,数据链路层负责对接受到的数据帧进行CRC校验,并给数据发送方发送反馈信息,如果数据无误,会将接收到的数据帧中的目标Mac地址,源Mac地址和CRC部分去掉后递交给网络层处理。
  3. 数据链路层通信使用Mac地址识别主机,主机之间通过交换数据帧的方式进行通信。

Python plutil 获取系统信息

plutil 模块介绍

能够轻松实现获取系统运行的进程和系统利用率(包括CPU、内存、磁盘、网络等)信息。它主要应用于系统监控,分析和限制系统资源及进程的管理。

plutil 安装

pip install plutil

得到系统信息

import psutil

psutil.net_if_addrs()
# AddressFamily.AF_INET IPv4地址信息
# AddressFamily.AF_INET6 IPv6 地址信息
# AddressFamily.AF_LINK Mac地址信息
posted @ 2022-06-07 17:35  行走的世界  阅读(85)  评论(0编辑  收藏  举报