Python教程

python认识网络编程

本文主要是介绍python认识网络编程,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

网络开发两大架构

早期数据交互的格式是没有网络的
两个文件之间的数据交互需要通过第三个文件
a,b文件同时和c文件交互,
a文件把数据先存放c文件中
b文件从c文件取,反之亦然
socket (套接字) 是一个收发数据的工具

有了网络之后
a文件中的数据,通过网络协议,转化101010...二进制进行发送
a文件借助socket发送数据
b文件借助socket接受数据

 

两大架构

c/s 架构 :
  c => client (客户端)
  王者荣耀 微信 qq wow dnf ...
  s => server (服务端)
  天河三号 (百亿亿次)

 

 

 

 

 

 

B/S 架构 :
  b => Brower (浏览器)
  谷歌,火狐,360,ie
  通过输入网址,访问对方的服务器,对方服务器响应之后,把数据返回,浏览器通过返回的数据,渲染页面,看到最后的结果
  s => server (服务端)
  一旦开启,永不关机(除非宕机)

 

 

 

 

 

在未来,更倾向于使用B/s架构,成为新的趋势
小程序: 微信小程序, 支付宝小程序
(1) 省去复杂下载安装环节,节省手机电脑的空间
(2) 因为手机带来的便捷性,随时随地使用到想要的应用,提升用户的满意度

基础概念

一台主机有两个重要标识:
(1)mac地址:标记一台机器的物理地址 (不可变)
(2)ip 地址:#标记一台机器的逻辑地址 (可变)

IP地址是指互联网协议地址(英语:Internet Protocol Address,又译为网际协议地址),是IP Address的缩写。ip地址用来标记网络上的每一台主机,方便在收发数据,网络请求时能够找到响应;

ip地址分为两种 ipv4 和 ipv6: 分类ipv4 和 ipv6:
  ipv4地址是一个32位的二进制数
  ipv6地址是一个128位的二进制数

  ipv4: 以4段点分十进制表示 X.X.X.X => 范围
    0.0.0.0 ~ 255.255.255.255 地址范围2^32-1
  ipv6 : 以8段冒分十六进制表示 X:X:X:X:X:X:X:X => 范围
    0:0:0:0:0:0:0:0 ~ FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF地址范围2^128-1

  ip地址的最后一位0或者255 两个数字不能用,一般最后一位0表达的是网段,255代表广播地址

网段 : 网段的作用,主要用来划分同一区域里的某些机器是否能够互相通信。在一个网段里可以不同过因特网,直接对话
判别的依据:如果IP地址和子网掩码相与得到的值相同就是同一网段

内网 : 以下地址为预留地址,永远不会被当做公网ip来分配
  192.168.0.0 - 192.168.255.255
  172.16.0.0 - 172.31.255.255
  10.0.0.0 - 10.255.255.255

外网 :
  在任何地方都可以访问的就是外网(排除防火墙的因素)

子网掩码:区分网段和主机
  255.255.255.0 / 255.255.0.0 / 255.0.0.0
  ip1:192.168.10.12 ip2:192.168.1.16

端口:"端口"是英文port的意译,是具体某个程序与外界通讯的出口。 取值范围:0~65535
     使用时至少8000以上          访问地址加端口:192.168.2.1:8000

局域网:在同一区域内由多台计算机互联形成通讯。【具有可重复的内网ip】
广域网:在不同区域内有多台计算机互联形成通讯。【具有唯一的公网ip】
交换机:对同一网段的不同机器之间进行数据转发的设备 [每一台机器和交换机相连,形成通信]
路由器:对不同网段的不同机器之间进行数据转发的设备 [每一个局域网和路由器相连,形成通信]

arp协议:每台主机都有arp缓存表 ,主要作用通过ip找mac的一个协议规则
  【实现方式:通过交换机一次广播,一次单播找到的】

 

局域网模型

局域网内,各个主机的通讯

 

 

 

 

广域网模型

 

 

 

 

 

 

网络的概念

网段的作用:
  主要用来划分同一区域里的某些机器是否能够互相通信。
  在一个网段里可以不同过因特网,直接对话
判别的依据:
  如果IP地址和子网掩码相与得到的值相同就是同一网段

 

"""
逻辑与
全真则真,一假则假
逻辑或
一真则真,全假则假
"""

ip1: 192.168,11.251
子网掩码:255.255.255.0
11000000 10101000 00001011 11111011
11111111 11111111 11111111 00000000
11000000 10101000 00001011 00000000 => 192.168.11.0 (网段)

ip2: 192.168,12.35
子网掩码:255.255.255.0
11000000 10101000 00001100 00100011
11111111 11111111 11111111 00000000
11000000 10101000 00001100 00000000 => 192.168.12.0 (网段)


ip1: 192.168,11.251
子网掩码:255.255.0.0
11000000 10101000 00001011 11111011
11111111 11111111 00000000 00000000
11000000 10101000 00000000 00000000 => 192.168.0.0 (网段)

ip2: 192.168,12.35
子网掩码:255.255.0.0
11000000 10101000 00001011 11111011
11111111 11111111 00000000 00000000
11000000 10101000 00000000 00000000 => 192.168.0.0 (网段)
下面的网络相同,意味着可以互相通信;

 

端口

端口:具体某个程序与外界通讯的出口   取值范围:0~65535

192.168.2.1:8000 访问这个世界上任何一个电脑里的任何一个软件
自定义端口时,最好命名8000以上的端口号
https://blog.csdn.net/l_smalltiger/article/details/81951824


20 : FTP文件传输协议(默认数据口)
21 : FTP文件传输协议(控制)
22 : SSH远程登录协议
25 : SMTP服务器所开放的端口,用于发送邮件
80 : http用于网页浏览,木马Executor开放此端口
443: 基于TLS/SSL的网页浏览端口,能提供加密和通过安全端口传输的另一种HTTP => HTTPS
3306:MySQL开放此端口

 

osi 网络七层模型

应用层 (应用层,表示层,会话层)
  封装数据:
    根据不同的协议,封装不同格式的数据
    http (超文本传输协议)
    HTTPS (加密传输的超文本传输协议)
    FTP (文件传输协议)
    SMTP (调子邮件传输协议)

传输层:
  封装端口:
    指定传输协议(TCP协议/UDP协议)

网络层:
  封装ip:
    ipv4版本 / ipv6

数据链路层:
  封装mac地址:
    指定mac地址(arp协议[ip->mac] / rarp协议[mac->ip])

物理层:
  打成数据包,变成二进制的字节流,通过网络进行传输

 

 

 

 

交换机与路由器 , 发送数据包流程

交换机: 从下到上拆2层,拆到数据链路层
路由器: 从下到上拆3层,拆到网络层(得到对应的网段)

arp协议: 通过ip -> mac
rarp协议: 通过mac -> ip
arp协议整体是通过: 一次广播 + 一次单播 实现

arp协议的完整过程:
  电脑a发现目标主机没有mac,先发送arp广播包,把mac标记成全F的广播地址
  交换机接受到arp的广播包,进行从下到上拆包,拆2层,拆到数据链路层看到全F广播地址,开始广播
  把这个广播包发送给每一台主机
  每台主机得到广播包后,都开始拆包,如果该数据包找寻的主机不是自己,自动舍弃
  路由器得到arp广播包后,从下到上拆包,拆3层,拆到网络层,得到网段信息
  通过路由器的对照信息表,找到网段对应的网关(接口)
  对应网关的这台交换机得到arp广播包后,从下到上拆包,拆2层,发现全F广播地址进行广播
  数据库主机收到广播包后,依次从下到上拆包,发现自己是目标要找的那台主机,
  把自己的ip->mac对照信息封装,变成arp响应包,发送给对应的交换机
  交换机得到arp响应包之后,依次进行单播,返回给最终的原主机
  在回来的过程中,所有得到过相应arp广播包的主机都会自动更新自己的arp解析表,方便下次使用

 

TCP/UDP协议:

TCP(Transmission Control Protocol)一种面向连接的、可靠的、传输层通信协议(比如:打电话)
优点:可靠,稳定,传输完整稳定,不限制数据大小
缺点:慢,效率低,占用系统资源高,一发一收都需要对方确认
应用:Web浏览器,电子邮件,文件传输,大量数据传输的场景


# udp
UDP(User Datagram Protocol)一种无连接的,不可靠的传输层通信协议(比如:发短信)
优点:速度快,可以多人同时聊天,耗费资源少,不需要建立连接
缺点:不稳定,不能保证每次数据都能接收到
应用:IP电话,实时视频会议,聊天软件,少量数据传输的场景


# TCP 三次握手
  客户端发送一个请求消息,与服务端建立连接
  服务端接受这个请求,发出响应消息,回应客户端,也要与客户端a建立连接(看下a是否同意)
  客户端接受服务端的响应消息之后,发送回复消息(表达同意,到此客户端与服务端建立连接成功)

 

 

 

 

# TCP 发送数据
  每次发送一次数据,都会对应一个回执消息,如果发送方没有接受到回执消息,那么该数据包在发送一次;


# TCP 四次挥手
  客户端向服务端发送一个断开连接请求(代表客户端没有数据给服务端)
  服务端接受请求,发出响应
  等到服务端所有数据发送完毕之后
  服务端向客户端发送断开连接请求
  客户端接受请求,发出响应

  等到2msl,msl(最大报文段生存时间)这么长时间之后
  客户端与服务端彻底断开连接

 

 

这篇关于python认识网络编程的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!