32 网络编程  (一)
一.架构
定义:程序员开发的一种模式.
分类:
C/S 架构 C/S即:Client与Server , 客户端/ 服务器模式 . 缺点 : 冗余
B/S 架构 Browser与Server, 浏览器 /服务器模式 . 优势 : 统一了应用的接口
二.网络通信编程
1.网卡 : mac地址,电脑的物理地址(真实存在的),mac地址要求全球唯一.
2.IP协议 : 规定网络地址的协议叫IP协议,它定义的地址称之为ip地址,广泛采用的v4版本即ipv4,它规定网络地址由32位2进制表示
范围0.0.0.0-255.255.255.255
IP协议的作用:
(1).一个是为每一台计算机分配IP地址.
(2).另一个是确定哪些地址在同一个子网络.
3.IP地址 : 是指互联网协议地址(Internet Protocol Address 网际协议地址),是IP Address的缩写
是IP协议提供的一种统一的地址格式,它为互联网上的每一个网络和每一台主机分配一个逻辑地址,以此来屏蔽物理地址的差异
4.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).
5.端口 : 是英文port的意译.操作系统为每一个应用程序分配一个端口号,IP+端口号唯一确定某一程序. (是一个程序唯一的标识)
6.mac地址:
每块网卡出厂时都被烧制上一个世界唯一的mac地址,长度为48位2进制,通常由12位16进制数表示(前六位是厂商编号,后六位是流水线号)
7.arp协议 (通过目标IP获取目标mac地址)
服务器 1 找到服务器 2 的mac地址步骤: (补充 组播:给一组服务器发消息.)
(1)服务器1发送请求帧给交换机;
(2)交换机以广播方式找寻服务器2:
(3)服务器2接收到请求返回给交换机;
(4)交换机以单播方式返回给服务器1.
整个过程服务器 1 通过服务器 2 的IP地址,借助交换机的功能找到服务器 2 的mac地址.
8.局域网:
局域网(Local Area Network,LAN)是指在某一区域内由多台计算机互联成的计算机组;局域网是封闭型的,
可以由办公室内的两台计算机组成,也可以由一个公司内的上千台计算机组成。
9.子网掩码:
所谓”子网掩码”,就是表示子网络特征的一个参数。它在形式上等同于IP地址,也是一个32位二进制数字,它的网络部分全部为1,主机部分全部为0。比如,
IP地址172.16.10.1,如果已知网络部分是前24位,主机部分是后8位,那么子网络掩码就是11111111.11111111.11111111.00000000,写成十进制就是255.255.255.0。
9.用网段来确定一个IP是否在当前局域网内
网段 = IP地址 & 子网掩码 ( 两个数位都为1,运算结果为1,否则为0 )
172.16.10.1:10101100.00010000.00001010.000000001
255.255.255.0:11111111.11111111.11111111.00000000
AND运算得网络地址结果:10101100.00010000.00001010.000000001->172.16.10.0 同一个局域网内.
10.广域网 : 全是通用的网络.
11.路由器 : 路由器(Router),是连接因特网中各局域网、广域网的设备,它会根据信道的情况自动选择和设定路由,以最佳路径,按前后顺序发送信号,
路由器是互联网络的枢纽,"交通警察".
12 路由器与交换机的区别:
路由和交换机之间的主要区别就是交换机发生在OSI参考模型第二层(数据链路层),而路由发生在第三层,即网络层。
这一区别决定了路由和交换机在移动信息的过程中需使用不同的控制信息,所以说两者实现各自功能的方式是不同的。
13.路由器(Router)又称网关设备(Gateway)
是用于连接多个逻辑上分开的网络,所谓逻辑网络是代表一个单独的网络或者一个子网。当数据从一个子网传输到另一个子网时,
可通过路由器的路由功能来完成。因此,路由器具有判断网络地址和选择IP路径的功能,它能在多网络互联环境中,建立灵活的连接,
可用完全不同的数据分组和介质访问方法连接各种子网,路由器只接受源站或其他路由器的信息,属网络层的一种互联设备.
14.TCP协议(通信协议一): 安全可靠的通信方式,如果发生错误会返回错误,让用于重发.
TCP(Transmission Control Protocol)可靠的、面向连接的协议(eg:打电话)、传输效率低全双工通信(发送缓存&接收缓存)
面向字节流。使用TCP的应用:Web浏览器;电子邮件、文件传输程序
TCP编程(服务器和客户端)
服务器:
import socket
sk=socket.socket(type=socket.SOCKET_STREAM) 默认tcp协议 (类似买手机)
sk.bind(("127.0.0.1",端口号)) 端口号0 - 65535 ; 0-1023 不能用; 8000-10000 常用时刻 (类似买手机卡)
sk.listen() (类似于告诉朋友手机号)
conn,addr=sk.accept() (类似于等电话)
msg=conn.recv(1024) (类似于聊天)
print((msg) 可以有参数 decode("utf-8") addr
conn.close() (类似于挂点电话)
sk.close() (类似于关机)
客户端:
import socket
sk=socket.socket()
sk.connect(("127.0.0.1",端口号)) (类似于给手机打电话)
sk.send(b'hello') 必须是字节
sk.close()
15.UDP协议(通信协议二): 不安全,不可靠的通信方式 速度快.
UDP(User Datagram Protocol)不可靠的、无连接的服务,传输效率高(发送前时延小),一对一、一对多、多对一、多对多、
面向报文,尽最大努力服务,无拥塞控制。使用UDP的应用:域名系统 (DNS);视频流;IP语音(VoIP)。 (常用于视频会议)
16.回环地址:
127.0.0.1 是一个回环地址,无论什么时候都可代表本机的IP地址(仅限在本机使用)
17.命令:
在cmd中输入命令ipconfig_all 查看ip 的相关设置
18.什么是协议
由多人制定的一种规则.
19.socket
用socket去操作tcp udp 协议

面试题:
三次握手: 必须是客户端先发起.
(1).客户端发送请求给服务器;
(2)服务器回复客户端;
(3)客户端回复服务器.
四次挥手: 谁发起都可以 其中一端连续发两条.
(1).客户端发断开请求给服务器:
(2).服务器回复确认收到请求;
(3).服务器给客户端发送准备断开;
(4).客户端断开吧.
三.互联网协议与osi模型.
1.互联网协议按照功能不同分为osi五层.
2.OSI 五层模型:
应用层 (.py文件 ,http,ftp, tftp)
传输层 (tcp , udp)
网络层 (IP协议 路由器)
数据链路层 (arp协议 ,网卡)
物理层 (网线 , 光纤 ,集线器)
必背:
arp协议
tcp udp 的区别
tcp 三次握手 四次挥手
什么是协议
tcp协议编码的流程
作业:写一个聊天程序可支持一个服务器与多个客户端通信
一个服务器多个客户端
#服务器:
# import socket
# sk=socket.socket()
# sk.bind(("127.0.0.1",8802))
# sk.listen()
# while 1:
# conn,addr=sk.accept()
# while 1:
# msg=conn.recv(1024).decode("utf-8")
# print(msg)
# if msg=="q":
# break
# content=input(">>>").encode("utf-8")
# conn.send(content)
# if content=="q":
# break
# conn.close()
# sk.close()
#客户端
# import socket
# sk=socket.socket()
# sk.connect(("127.0.0.1",8802))
# while 1:
# content=input(">>>")
# sk.send(content.encode("utf-8"))
# if content=="q":
# break
# msg=sk.recv(1024).decode("utf-8")
# print(msg)
# if msg=="q":
# break
# sk.close()
tcp协议 输出带颜色的信息
#服务器:.
import socket
sk=socket.socket()
sk.bind(("127.0.0.1",8803))
sk.listen()
dic={"alex":"\033[0;35;42m","太白":"\033[0;33;40m"}
while 1:
conn,addr=sk.accept()
while 1:
msg=conn.recv(1024).decode("utf-8")
# print(msg)
name=msg.split(":")[0].strip()
# content=msg.split(":")[-1]
color=dic.get(name,"")
print(content)
print("%s%s\033[0m" % (color,msg))
if content=="q":
break
content=input(">>>")
conn.send(content.encode("utf-8"))
if content=="q":
break
conn.close()
sk.close()
#客户端
import socket
sk=socket.socket()
sk.connect(("127.0.0.1",8803))
name=input("姓名:")
while 1:
content=input('>>>')
content1=name+":"+content
sk.send(content1.encode("utf-8"))
if content=="q":
break
mag=sk.recv(1024)
print(mag.decode("utf-8"))
if mag=="q":
break
sk.close()
												

python全栈开发 * 32知识点汇总 * 180717的更多相关文章

  1. python全栈开发 * 10知识点汇总 * 180612

    10 函数进阶 知识点汇总 一.动态参数 形参的第三种1.动态接收位置传参 表达:*args (在参数位置编写 * 表⽰接收任意内容) (1)动态位置参数def eat(*args): print(a ...

  2. python全栈开发 * 01知识点汇总 * 180530

    一 python简介. 1.创始人:  吉多 .范罗苏姆  \   (Guido van Rossum). 2.时间  :  1989年. 3.主要应用领域  :  云计算 \  WEB开发  \   ...

  3. python全栈开发 * 26知识点汇总 * 180709

    26 logging collections random 模块 一.logging低配:日志不能写入文件与显示同时进行 import logging logging.basicConfig(leve ...

  4. python全栈开发 * 12 知识点汇总 * 180530

    12 知识点总结 装饰器进阶 ⼀. 通⽤装饰器的回顾1.开闭原则: 对增加功能开放. 对修改代码封闭2.装饰器的作⽤: 在不改变原有代码的基础上给⼀个函数增加功能3.通⽤装饰器的写法:def wrap ...

  5. python全栈开发* 02 知识点汇总 * 180531

    运算符和编码 一  格式化输出 1  .输入  name ,age , job , hobby. 输出  :   ---------------  info of Mary  ------------ ...

  6. python全栈开发 * 36知识点汇总 * 180721

    36 操作系统的发展史 进程一.手工操作--穿孔卡片 1.内容: 程序员将对应于程序和数据的已穿孔的纸带(或卡片)装入输入机,然后启动输入机把程序和数据输入计算机内存,接着通过控制 台开关启动程序针对 ...

  7. python全栈开发 * 33 知识点汇总 * 180718

    33 udp协议编码 显示客户端名字,输出带颜色的内容 udp协议的时间同步机制 #一.udp 协议编码 一个服务器,多个客户端#服务器:# import socket# sk=socket.sock ...

  8. python全栈开发 * 31知识点汇总 * 180716

    31 模块和包一.模块(一)模块的种类:内置模块,自定义模块,扩展模块第三方模块(二)自定义模块 1.模块的创建 : 新建一个py文件. 2.模块名 : 模块名需要符合变量的命名规范. 3.模块的导入 ...

  9. python全栈开发 * 24 知识点汇总 * 180705

    24 模块-------序列化一.什么是模块 模块:py文件就是一个模块.二.模块的分类:(1)内置模块 (登录模块,时间模块,sys模块,os模块)(2)扩展模块 (itchat 微信有关,爬虫,b ...

随机推荐

  1. LIN 笔记

    LIN 使用了 1 根线来进行通信,但是,它必须要参考 VBat 和 GND.离开这两个参考电平,并没有办法来判断线上的 bit 状态. 另外,根据经典的 LIN 驱动电路(一个 OC 门),RX 接 ...

  2. increase the minSdkVersion to 26

    AGPBI: {"kind":"error","text":"Invoke-customs are only supported ...

  3. 处理器 趣事 CPU/GPU/TPU/DPU/BPU

    有消息称,阿里巴巴达摩院正在研发一款神经网络芯片——Ali-NPU,主要运用于图像视频分析.机器学习等AI推理计算.按照设计,这款芯片性能将是目前市面上主流CPU.GPU架构AI芯片的10倍,而制造成 ...

  4. Java数据结构之LinkedList、ArrayList的效率分析

    前言: 在我们平常开发中难免会用到List集合来存储数据,一般都会选择ArrayList和LinkedList,以前只是大致知道ArrayList查询效率高LinkedList插入删除效率高,今天来实 ...

  5. cn_windows_10_enterprise_version_1703_updated_june_2017_x64_dvd_10720588.iso

    ed2k://|file|cn_windows_10_enterprise_version_1703_updated_june_2017_x64_dvd_10720588.iso|4959832064 ...

  6. iOS--App功耗优化

    良好的用户体验需要如下要素: 电池寿命长.随着能效降低,电池寿命也会降低.但用户想让自己的移动设备全天候待命. 速度快.iOS系统处理复杂操作时仍能提供很好的性能. 响应快.同一时刻消耗太多资源会使U ...

  7. 【WCF】解析WCF服务的搭建

    WCF是.NET提供的一种服务,可以将自己写的程序(完成特定功能,比如从数据库中读取数据操作等)分装成服务以后,发布到服务器上.然后会生成一个网址,客户端在编程的时候,可以引用这个服务,使用这个服务中 ...

  8. Tomcat connectionTimeout问题定位处理

    问题现象 在某个时刻,后端收到了平时4-6倍的请求(保密起见,略去产品和事件),在10分钟后居然没有请求可以接进来 问题原因 经过分析,首先,是后端服务器的线程池满了,线程池满的原因:1.server ...

  9. Atitit s2018 s3 doc list alldvc.docx .docx s2018 s3f doc compc s2018 s3f doc homepc sum doc dvcCompc dtS312 s2018 s3f doc compc\Atitit PathUtil 工具新特性新版本 v8 s312.docx s2018 s3f doc compc\Atitit 操作日

    Atitit s2018 s3 doc list alldvc.docx .docx s2018 s3f doc compc s2018 s3f doc homepc sum doc dvcCompc ...

  10. Python实现im2col和col2im函数

    今天来说说im2col和col2im函数,这是MATLAB中两个内置函数,经常用于数字图像处理中.其中im2col函数在<MATLAB中的im2col函数>一文中已经进行了简单的介绍. 一 ...