网络编程
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