python网络编程part1
1. 网络架构
单机
单机游戏
以下两个基于网络的
CS架构
客户端游戏
cs--->client客户/server服务
你自己是客户端(消费)--->服务端(收钱)
服务端(应用程序)一个就够了,客户端(应用程序)可以有多个
服务端和客户端都是应用程序,那两者一定都可以存储数据,哪一个存储数据更好:
服务端: 很多人都可以用,它一次更新,其它人还是直接拿,还能保证数据的安全
客户端:非常快,如果本地保存账号密码,安全性非常低,客户端不联网,数据不更新
BS架构
网页游戏
bs--->browser浏览器/服务端
客户端(浏览器)/服务端,程序放在浏览器上
p地址与ip协议
- 规定网络地址的协议叫ip协议,它定义的地址称之为ip地址,广泛采用的v4版本即ipv4,它规定网络地址由32位2进制表示
- 范围0.0.0.0-255.255.255.255
- 一个ip地址通常写成四段十进制数,例:172.16.10.1
mac地址(网卡地址)
head中包含的源和目标地址由来:ethernet规定接入internet的设备都必须具备网卡,发送端和接收端的地址便是指网卡的地址,即mac地址。
mac地址:每块网卡出厂时都被烧制上一个世界唯一的mac地址,长度为48位2进制,通常由12位16进制数表示(前六位是厂商编号,后六位是流水线号)
IP地址是指互联网协议地址(英语:Internet Protocol Address,又译为网际协议地址),是IP Address的缩写。IP地址是IP协议提供的一种统一的地址格式,它为互联网上的每一个网络和每一台主机分配一个逻辑地址,以此来屏蔽物理地址的差异。 IP地址是一个32位的二进制数,通常被分割为4个“8位二进制数”(也就是4个字节)。IP地址通常用“点分十进制”表示成(a.b.c.d)的形式,其中,a,b,c,d都是0~255之间的十进制整数。例:点分十进IP地址(100.4.5.6),实际上是32位二进制数(01100100.00000100.00000101.00000110)。
"端口"是英文port的意译,可以认为是设备与外界通讯交流的出口。
路由器
局域网
局域网(Local Area Network,LAN)是指在某一区域内由多台计算机互联成的计算机组
互联网和互联网的组成
边缘部分: 客户端/服务端,这些普通的计算机,负责接收/发送数据
核心部分:传输网络的设备,路由,基站,负责数据的传输
科普版
打开浏览器(客户端)
输入www.taobao.com,----->地址指向淘宝的服务端
按enter键客户端把www.taobao.com解析成淘宝的地址(杭州.....)
发送一条指令给淘宝,让淘宝把数据发给你
客户端渲染数据
互联网的组成
硬件:提供给你网络
软件:应用程序,完成具体的任务
OSI七层协议
互联网协议按照功能不同分为osi七层或tcp/ip五层或tcp/ip四层
物理层
计算机与计算机之间传输数据
光缆/网线:传输信号,连接两台计算机,如果有一根网线能从中国连到美国,只要物理层就够了
客户端 ----00111110011111001111100111110011111001111100111110011111--->服务端
数据链路层
让同一局域网下的计算机连接在一起
把001111 100111 110011 1110011111变得有意义,分组,每几位一组
以太网协议:规定物理层中传输的0和1的格式
head:
收件人地址:
数据类型:
发件人地址:
data: 内容
发件人地址就是mac地址,计算机上网卡的地址,这个地址固定不变,并且唯一,每一台电脑有自己固定的mac地址
广播:你一定知道自己的mac地址,还有收件人的mac地址,通过某一台设备(交换机),但是交换机不知道mac地址对应的计算机是那一台,交换机就会以广播的形式发送给所有的计算机,收件人的计算机收到了就会解析这条命令,拿到内容了.之后交换机会记录两个mac地址.
以上基于局域网
网络层
让不同局域网下面的计算机连接在一起.
叫做ip地址,只只知道mac地址无法连接其他局域网内的计算机.因为mac地址只被交换机识别,然后不同局域网的交换机不一样.所以现在定义一个新的地址表名是哪个局域网,通过路由器
在数据链路层的基础上在包一层ip头.
已经知道了淘宝的ip地址和mac地址,你会吧自己的mac地址和ip地址一起发送出去,路由会接收淘宝的ip地址,路由发送淘宝的ip地址和mac地址,自带mac地址(路由器的)和ip地址(路由器的ip地址)
mac地址(局域网)+IP地址(互联网)就能找到全世界独一无二的电脑
传输层
组织网络带来的数据,
端口号,找到一个固定的应用程序,一个端口号对应一个应用程序
mac地址(局域网)+IP地址(互联网)+端口号就能找到全世界独一无二的电脑上的独一无二的应用程序
数据,0和1发给应用程序,tcp/udp协议
应用程序
0和1转换成具体的功能
抽象层
客户端和服务端的应用程序想通信,两者传输的数据必须是一样的,
socket抽象层就是写出一个全世界独一无二的计算机上的应用程序,既可以是客户端,也可以服务端
使用socket编写的客户端服务端写一个文件拷贝的cs架构的软件
serve 端
import socket
sk = socket.socket()
sk.bind(('127.0.0.1',8898)) #把地址绑定到套接字
sk.listen() #监听链接
conn,addr = sk.accept() #接受客户端链接
ret = conn.recv(1024) #接收客户端信息
print(ret) #打印客户端信息
conn.send(b'hi') #向客户端发送信息
conn.close() #关闭客户端套接字
sk.close() #关闭服务器套接字(可选)
client 端
import socket
ip_port=('127.0.0.1',9000)
udp_sk=socket.socket(type=socket.SOCK_DGRAM)
udp_sk.sendto(b'hello',ip_port)
back_msg,addr=udp_sk.recvfrom(1024)
print(back_msg.decode('utf-8'),addr)
python网络编程part1的更多相关文章
- Python 网络编程(二)
Python 网络编程 上一篇博客介绍了socket的基本概念以及实现了简单的TCP和UDP的客户端.服务器程序,本篇博客主要对socket编程进行更深入的讲解 一.简化版ssh实现 这是一个极其简单 ...
- Python 网络编程(一)
Python 网络编程 socket通常也称作"套接字",用于描述IP地址和端口,是一个通信链的句柄,应用程序通常通过"套接字"向网络发出请求或者应答网络请求. ...
- Python学习(22)python网络编程
Python 网络编程 Python 提供了两个级别访问的网络服务.: 低级别的网络服务支持基本的 Socket,它提供了标准的 BSD Sockets API,可以访问底层操作系统Socket接口的 ...
- Day07 - Python 网络编程 Socket
1. Python 网络编程 Python 提供了两个级别访问网络服务: 低级别的网络服务支持基本的 Socket,它提供了标准的 BSD Sockets API,可以访问底层操作系统Socket接口 ...
- python网络编程-01
python网络编程 1.socket模块介绍 ①在网络编程中的一个基本组件就是套接字(socket),socket是两个程序之间的“信息通道”. ②套接字包括两个部分:服务器套接字.客户机套接字 ③ ...
- 《Python网络编程》学习笔记--使用谷歌地理编码API获取一个JSON文档
Foundations of Python Network Programing,Third Edition <python网络编程>,本书中的代码可在Github上搜索fopnp下载 本 ...
- Python网络编程基础pdf
Python网络编程基础(高清版)PDF 百度网盘 链接:https://pan.baidu.com/s/1VGwGtMSZbE0bSZe-MBl6qA 提取码:mert 复制这段内容后打开百度网盘手 ...
- python 网络编程(Socket)
# from wsgiref.simple_server import make_server## def RunServer(environ,start_response):# start_resp ...
- python 网络编程 IO多路复用之epoll
python网络编程——IO多路复用之epoll 1.内核EPOLL模型讲解 此部分参考http://blog.csdn.net/mango_song/article/details/4264 ...
随机推荐
- ecshop中{$lang.}标签的修改
{$lang.}之类的文字都是在语言包里边定义的,所以要修改这些文字的话,我们只需要修改语言包里的文件.首先需要看一下你使用的语言是哪种,如果是中文的话,修改 languages/zh_cn/com ...
- GitLab权限介绍
访问权限 - Visibility Level 这个是在建立项目时就需要选定的,主要用于决定哪些人可以访问此项目,包含3种 Private - 私有,只有属于该项目成员才有原先查看 Internal ...
- 格式化LInux后开机进入grub怎么办
问题:格式化Linux系统盘之后,重启进入grub 1.grub 引导进入windows系统 进入grub grub>rootnoverify (hd0,1) [可以使用Tab键( 比如 roo ...
- 0804SHOW ENGINE INNODB STATUS
转自http://blog.csdn.net/github_26672553/article/details/52931263 innodb存储引擎在show engine innodb status ...
- 【ACM】poj_1000_A+B_201307271012
A+B ProblemTime Limit: 1000MS Memory Limit: 10000K Total Submissions: 296408 Accepted: 162241 Desc ...
- HDU 1198 Farm Irrigation (并查集优化,构图)
本题和HDU畅通project类似.仅仅只是畅通project给出了数的连通关系, 而此题须要自己推断连通关系,即两个水管能否够连接到一起,也是本题的难点所在. 记录状态.不断combine(),注意 ...
- 黑马程序猿——JAVA基础——集合
----------android培训.java培训.java学习型技术博客.期待与您交流.------------ 一.关于java中的集合类 首先看一下,大致的框架流程图 ...
- java基础开发—jstl标签库
在DRP项目中.接触到了JSTL标签库. 在未使用Jstl之前,我们使用JSP脚本实现一些声明或是表达式任务,做一些业务相关操作时,须要在页面中嵌入大量的java代码.在DRP项目开发前期.使用jsp ...
- “Parsing filters unsupported” error during extraction of RAR file
up vote 159 down vote accepted You can use: sudo apt-get install unrar or sudo apt-get install unar ...
- B1970 [Ahoi2005]Code 矿藏编码 暴力模拟
小詹从哪整出来这么多水题?%%%这个题用栈模拟一下,然后直接暴力就行了...一开始还没想到,用的dfs,我太菜了... 题干: Description 依次对每份进行编码,得S1,S2,S3,S4.该 ...