网络编程
1.软件开发架构:
开发软件,必须要开发一套客户端与服务端
客服端与服务端的作用
服务端 24小时不断提供给服务
客户端 如果要服务就去享受
两种架构:
C/S架构
client:客户端
server:服务端
优点:稳定,可以节约网络资源
缺点:若用户想在同一个设备上使用多个软件,必须下载多个客户端
每次软件更新,客户端必须跟着下载更新
C/S架构的软件有:
电脑上的qq,移动端的wechat等等
B/S
browser:浏览器(客户端)
server:服务器
优点:
以浏览器充当客户端,无需用户下载多个软件,也无需用户下载更新软件版本,可以直接在浏览器上访问需要使用的软件
缺点:
消耗网络资源过大,当网络不稳定时,软件的使用也会不稳定
B/S架构的软件:
例如:再浏览器上输入某个软件的域名
我玩巫师3的时候到一个小镇会跑进每一个屋子搜刮每一个亮起来的袋子……顺便看看有没有告示板上没有的任务可以接……在要塞搜刮袋子的时候还被军队围了,那些卫兵前期等级有点高……
2.后期学习
网络编程,并发编程,数据库开发 可以开发一套cs架构的软件(仿youku系统)
前端html css js web框架(网络编程,并发编程)
3.网络编程
网络编程发展历史
所有先进的技术都来源于军事.希望通过远程获取数据,所以出现了网络编程
早期如何实现远程通信:
打电话-->电话线
打屁股电脑-->网线,有线网卡
笔记本电脑-->无线网卡
要实现远程通信必须具备:
物理连接介质-->网卡...
互联网协议 发
语言
互联网协议
4.互联网协议
互联网协议有成为网络七层协议,OSI七层协议,OSI是个世界标准组织
应用层 表示层 会话ceng 传输层 网络层 数据链路层 物理连接层 需要优先了解 应用层 http ftp 传输层 tcp/udp协议,都是基于端口工作的 端口号:标识电脑上某一个软件 端口号的范围是0-65535 注意 操作系统中一般0-1024的端口都被默认使用了 尽量使用8000后的端口号 8001 mysql:3306 mongodb:27017 Django:8000 Tomcat:8080 Flask:5000 Redis:6379 若想要客户端与服务端进行通信,必须建立连接产生双向通道 一条是客户端往服务端发送消息的 另一条是服务端往客户端发送消息的 三次握手,四次挥手(***********) 三次握手建立连接 四次挥手断连接 发送数据 write read 客户端往服务端发送数据,数据存放在内存中,需要服务端确认收到,数据才会在内存中释放迪奥 否则会隔一段时间发送一次让服务端返回确认收到 再一段时间内若服务无端还是没有返回确认收到,则取消发送,并释放内存中的数据 网络层 IP地址:用于唯一识别计算机的地址 IP 点分十进制 最小值:0.0.0.0 最大值:255.255.255.255 IPV4: IPV6: 127.0.0.1-->localhost 数据链路层 数据链路层的以太网协议专门处理基于电信号发送二进制数据 以太网协议: 规定好电信号数据的分组方式 每一台连接网络的电脑都必须要有一快网卡 -网卡由不同厂商生产的 -每块网卡都有世界上独一无二的十二位编号 -前六位代表厂商号,后六位代表流水号 -交换机: 可以让多台电脑连接到一起 基于以太网协议发送数据 特点 广播,单播 弊端 广播风暴,不能跨局域网通信 物理连接层 01010101 IP用于标识某一台计算机的位置 port用于确认计算机上的一个应用软件 ip+port:世界上某一台电脑上的一个应用软件
Socket:
什么是socket
模块用于写cs套接字
为什么要用socket
socket套接字会封装好各层协议的工作
好处
可以节约开发成本.
如何使用
import socket