1. 网络编程基础
1.1 介绍
- 网络编程基础
(1)OSI
模型和TCP/IP
协议
计算机网络、OSI
七层模型、TCP/IP
模型、TCP/IP
各层实现的协议
(2) 网络设备
终端设备、移动设备、家用网络设备、通信线缆、企业级网络设备、运营商级网络设备、数据中心
(3) 网络模拟软件Packet Tracer
软件介绍安装、构建网络扑图、配置网络拓扑信息、实现网络拓扑的信息传递 - 网络编程进阶
(1) 数据链路层
通过Packet Tracer
查看数据帧
使用psutil
模块获取当前通信网卡的MAC
地址
(2) 网络层
IP
地址介绍,IP
地址划分,子网掩码的作用
路由介绍,设备路由配置
网络层协议ARP
,ICMP
,通过Scapy
模块实现ARP
,ICMP
通信协议
(3) 传输层
UDP
协议、TCP
协议
TCP
三次握手、四次挥手
通过UDP
协议实现简单的网络聊天室
通过TCP
协议实现简单的TCP
服务器和客户端
(4) 应用层
HTTP
协议、DHCP
协议、SMTP
协议、TELNET\SSH
协议
通过TCP
协议实现简单的静态HTTP
服务器
打开网页的过程
连接WIFI
的过程
通过Python
发送邮件
在网络设备中配置TELNET
和SSH
1.2 TCP/IP协议
1.2.1 网络和OSI七层模型
- 网络
计算机网络,就是把分布在不同地理区域的计算机以及专门的外部设备利用通信线路互联成一个规模大、功能强的网络系统,从而使众多的计算机可以方便的互相传递信息,共享信息。 - 网络的演进
1960
年-1970
年:简单连接
1970
年-1980
年:基于网络的连接
1980
年 - 现在:网络互联 - 网络分类
(1) 局域网LAN
通常指几公里以内的,通过某种介质互联的计算机、打印机或其他设备的集合。
特点:距离短、延迟小、数据速率高、传输可靠
(2) 城域网MAN
一种比局域网更大的网,通常覆盖一个城市,从几十公里到一百公里不等,可能会有多种介质,用户的数量也比局域网更多。
特点:连接范围可以在1-100
公里。
(3) 广域网WAN
这种网络也被称为远程网,覆盖的范围比城域网(MAN
)更广,一般是在不同城市之间的局域网(LAN
)或者城域网(MAN
)互联,地理范围可从几百公里到几千公里。因为距离较远,信息衰减严重,所以一般要租用专线。
特点:传输距离从几百公里到几千公里,信息衰减严重
(4) 互联网Internet
网络规模最大的网络,也被称为Web
、WWW
和万维网等。全球计算机的互联。
特点:不定性、信息量大、传播广 -
OSI
参考模型介绍
OSI
是国际标准化组织(ISO
)研究出的一种用于开放系统互联的体系结构。
两个遵循OSI
模型的系统可以互联。 -
OSI
七层模型
七层模型:物理层、数据链路层、网络层、传输层、会话层、表示层、应用层
最前三层是底层,负责网络数据传输。
最后三层是高层,负责主机之间的数据传输。
(1) 物理层
比特流传输。
(2) 数据链路层
提供介质访问,链路管理。
(3) 网络层
寻址和路由选择。
(4) 传输层
建立主机端到端的连接。
(5) 会话层
建立、维护和管理会话。
(6) 表示层
处理数据格式、数据加密等。
(7) 应用层
提供应用程序间的通信。 -
数据封装和解封装过程
1.2.2 TCP/IP参考模型
-
TCP/IP
协议
五层模型:物理层、数据链路层、网络层、传输层、应用层
其中,物理层、数据链路层有时被统称为网络接口层。
相对于OSI
参考模型,TCP/IP
协议是工业标准,是当前的事实标准。
TCP/IP
协议中的应用层对应OSI
参考模型中的应用层、表示层、会话层三层。
(1) 物理层
二进制数据流传输。
(2) 数据链路层
物理介质访问。
(3) 网络层
寻址和路由选择。
(4) 传输层
建立端到端的连接。
(5) 应用层
提供应用程序网络接口。 -
模型对比
1.2.3 TCP/IP各层实现的协议
- 应用层
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
是目前较可靠,专为远程登录会话和其他网络服务提供安全性的协议。 - 传输层
TCP
:传输控制协议。一种面向连接的、可靠的、基于字节流的传输层通信协议。
UDP
:用户数据报协议。一种面向无连接的通信协议,不可靠的,基于报文的传输层通信协议。
SCTP
:流量传输控制协议。一种面向连接的流传输协议。在首发两端有多条路径,但实际只是使用一条路径传输,当该条路径出现故障时,不需要断开连接,而是转移到其他路径。
MPTCP
:多路径传输控制协议。TCP
的多路径版本。MPTCP
真正意义上实现了多路径并行传输,在连接建立阶段,建立多条路径,然后使用多条路径同时传输数据。 - 网络层
IP
:Internet
协议。通过路由选择将下一条IP
封装后交给接口层。IP
数据包报无连接服务。
ICMP
:Internet
控制报文协议。是网络层的补充。用于在P
主机、路由器之间传递控制消息,检测网络通不通、主机是否可达、路由是否可用等网络本身的消息。
例如:ping
命令。
ARP
:地址解析协议。通过目标设备的IP
地址,查询目标设备的MAC
地址,以保证通信的顺利进行。
注释:MAC
地址在某一个厂商中是唯一的。
RARP
:反向地址解析协议。
1.3 常见网络设备
- 网络设备
网络设备实现了TCP/IP
协议,并提供服务。
(1) 家用
网络层:笔记本电脑、手机、电视盒子、网络摄像头、无线路由器。
数据链路层和网络层:交换机
物理层:网线、光纤
(2) 企业
网络层:企业级路由器、企业级交换机、服务器、存储服务器、硬件防火墙、入侵检测系统、入侵防御系统、VPN
设备
(3) 运营商
运营商级路由器、运营商级交换机、数据中心
注释:二层交换机工作在数据链路层,三层交换机工作在网络层。
1.4 网络模拟软件Packet Tracer
-
Packet Tracer
Cisco Packet Tracer
是由思科(Cisco
)公司发布的一个辅助学习工具,为学习思科网络课程的初学者去设计、配置、排除网络故障提供了网络模拟环境。 - 软件登录
用户名:dazhuang_python@sina.com
密码:Dazhuang123()
-
构建网络拓扑图
2. 网络编程进阶
2.1 介绍
- 数据链路层编程
数据链路层桢格式
MAC
地址与ARP
协议
通过psutil
模块获取通信主机的MAC
地址 - 网络层编程
IP
协议概述
IP
地址的划分、子网掩码的作用
路由器配置路由实例演示
什么是ICMP
协议
通过scapy
模块实现ARP
、ICMP
扫描局域网主机存活状态 - 传输层编程
UDP
协议和TCP
协议概述、区别
服务器、客户端通信,模型
TCP
三次握手、四次挥手
通过UDP
协议实现简单聊天室
通过TCP
协议实现简单服务器、客户端通信模型 - 应用层编程
HTTP
协议概述、请求格式、方法、状态码
通过TCP
实现简单静态WEB
服务器,并通过浏览器访问
从客户端打开浏览器到服务器返回网页中间过程
DHCP
协议、TELNET\SSH
协议,SMTP
协议
2.2 数据链路层编程
-
TCP/IP
协议5
层结构
(1) 应用层
提供应用程序网络接口
(2) 传输层
建立端到端连接
(3) 网络层
寻址和路由选择
(4) 数据链路层
物理介质访问
(5) 物理层
二进制数据流传输 - 数据链路层概述
数据链路层和物理层也称为网络接口层,该层包括主机用于连接网络的网络接口卡(网卡)及驱动程序,主要处理与传输媒介(如网线、光纤、无线电波等)的物理层接口细节。 - 物理层传输数据
发送终端要发的数据会转换为010101
的比特流,通过网线、光纤、无线电波传到很远的目的地。接收终端接收到010101
的比特流后,组装成数据帧传递到数据链路层。 - 数据链路层传输数据
网络设备都安装了网络适配器,即网卡,数据是从一块网卡传送到另一块网卡。
网卡地址就是数据的发送地址和接收地址,也就是数据帧所包含的MAC
地址。
MAC
地址是每块网卡的身份标识,具有全球唯一性。MAC
地址采用十六进制标识,共6
个字节,前三个字节是厂商编号,后三个字节是网卡流水号,例如:4C-0F-6E-12-D2-19
。 - 数据链路层传输数据
有了MAC
地址以后,网络内采用广播形式,把数据发给该子网内所有主机,子网内每台主机在接收到这个包以后,都会读取数据内的目标MAC
地址,然后和自己的MAC
地址进行对比,如果相同就做下一步处理,如果不同,就丢弃这个包。 - 数据以数据帧形式进行通信
主机作为数据发送方时,数据链路层负责将来自本机网络层的数据封装为数据帧进行发送,接收方在收到数据帧后会给数据发送方发送反馈信息,如果数据传输有误,发送方需要重新发送出错的数据帧。
主机作为数据接收方时,数据链路层负责对接收到的数据帧进行CRC
校验,并给数据发送方发送反馈信息,如果数据无误,会将接收到的正确帧数据的目标MAC
地址,源MAC
地址和CRC
部分去掉后递交为网络层处理。
数据链路层通信使用MAC
地址识别主机,主机之间交换数据帧。 -
psutil
模块
能够轻松实现获取系统运行的进程和系统利用率(包括CPU
、内存、磁盘、网络等)信息。它主要应用于系统监控,分析和限制系统资源及进程的管理。
pip3 install psutil
2.3 网络层编程
- 网络层概述
网络层负责获取和维护主机的IP
地址,IP
地址用于主机间进行网络互联的标识,网络层负责给数据包选择路由路径。
负责点到点的传输(这里的点指主机或路由器)。 - 网络层协议
IP
网际协议、ARP
地址解析协议、ICMP
网际控制消息协议。 -
IP
网际协议
IP
协议位于网络层,它是TCP/IP
协议族中最为核心的协议,所有的上层协议如TCP
、UDP
数据都以IP
数据包格式传输。 -
IP
协议特征
不可靠(unreliable
)、无连接(connnectionless
) -
IP
协议版本
(1)IPV4
IPV4
是互联网协议的第四版,也是第一个被广泛使用,构成现今互联网技术的基础协议,是TCP/IP
协议簇中的核心协议。
(2)IPV6
IPV6
是互联网协议的第六版,是新一代的互联网技术的基础协议,目前正在推广中。 -
IPV4
协议格式
IPV4
使用4
个字节及32
个二进制位表示一个地址,通常采用点分十进制方法表示,例如192.168.1.1
。也可以通过二进制表示。
地址分成两个部分:网络地址和主机地址,各占16
位。
192. 168. 1. 1
11000000.10101000.00000001.00000001
-
IP
地址划分
A
类地址(0.0.0.0 - 127.255.255.255
)以0
开头,网络端长度为8
位,其中可变部分的长度为7
位;主机段长度为24
位。7
位的可变网络段可识别2^7 = 128(0-127)
个网络,其中0
和127
另有用途,故只有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
个。 - 公有
IP
地址和私有IP
地址
公有地址在Internet
中使用,可以在Internet
中随意访问。
私有IP
地址无法在Internet
中使用,只能在内部使用。 - 私有
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
来表示。 - 子网掩码
用网线直接连接的计算机要能够相互通讯,计算机必须要在用一个网络。
他们的网络地址必须相同,而且主机地址必须不一样。
子网掩码就是判断网络中的计算机在不在同一网络。 - 子网掩码计算规则
IP
地址1
:192. 168. 1. 1
11000000. 10101000. 00000001. 00000001
IP
地址2
:192. 168. 1. 200
11000000. 10101000. 00000001. 11001000
子网掩码:255. 255. 255. 0
11111111. 11111111. 11111111. 00000000
将IP
地址与子网掩码进行与运算,如果结果相同,则可以通讯。
- 路由器
路由器(Router
)又称为网关设备(Gateway
),用于连接多个逻辑上分开网络的一种设备,当数据从一个子网传输到另一个子网时,可以通过路由器的路由功能完成。
- 路由表
直连路由:设备和设备接口间相连的路由
静态路由:手动配置的路由
动态路由:通过动态路由协议学习的路由 -
ARP
协议
ARP
(Address Resolution Protocol
)是个地址解析协议。
在网络通讯时,源主机的应用程序知道目的主机的IP
地址和端口号,却不知道目的主机的硬件地址,而数据包首先是被网卡接收到再去处理上层协议的,如果接收到的数据包的硬件地址与本机不符,则直接丢弃。因此在通讯前必须获得目的主机的硬件地址。
在局域网中,网络中实际传输的是“帧”,帧里面有目标主机的MAC
地址。
在网络中,一个主机要和另一个主机进行通信,必须要知道目标主机的MAC
地址。
地址解析:主机在发送帧前将目标IP地址转换成目标MAC
地址的过程。
当主机A
向本局域网上的某个主机B
发送IP
数据包时,先在自己的ARP
缓冲表中查看有无主机B
的IP
地址。
如果有,就可以查出其对应的硬件地址,再将此硬件地址写入MAC
帧,然后通过以太网将数据包发送到目的主机中。
如果查不到主机B
的IP
地址的表项。可能是主机B
才接入网络,也可能是主机A
和主机B
没有通信过,这时想要通信,则必须通过ARP
协议解析。
ARP
进程在本局域网上广播一个ARP
请求。ARP
请求的主要内容是表明: 我的IP
地址是192.168.1.1
,我的硬件地址是00-00-C0-15-AD-18
。我想知道IP
地址为192.168.1.100
的主机的硬件地址。
在本局域网上的所有主机都收到此ARP
请求。
主机B
在ARP
请求中见到自己的IP
地址,就向主机A
发送ARP
响应,并写入自己的硬件地址。其余的所有主机都不理睬这个ARP
请求。
虽然ARP
请求是广播发送的,但ARP
响应是普通的单播,即从一个源地址发送到一个目的地址。