目录
- 网络编程(一)
网络编程(一)
一 网络架构
单机架构
应用领域
植物大战僵尸; office
cs架构
1.用户操作系统安装客户端;产商操作系统部署服务端
2.每个用户都需要独立安装软件,服务端升级也要每个用户升级
应用领域
QQ; 大型网络游戏
服务端(server):
统一管理数据库的主机中的软件就叫做服务端,再后来 服务端不只是管理数据,外加处理业务逻辑.(24小时不间断提供服务)
客户端(client):
用户安装的软件;(如果想要服务,随时都可以去寻找服 务享受)
优点:
软件使用稳定,并且可以节省网络资源;
缺点:
1.若用户想在同意设备上使用使用多个软件,必须下载多个客户端;
2.软件的每一次更新,客户端也必须跟着从新下载更新.
BS架构
b/s架构
browser: 浏览器(客户端)
server: 服务端
应用领域
例如浏览器,直接输入域名,得到你想要的......
优点:
以浏览器充当客户端,无需用户下载多个软件,也无需用户下载更新 版本
缺点:
消耗网络资源过大,当网络不稳定时,软件的使用也会不稳定.
二 网络编程发展史
所有网络编程的先进技术都是源于军事,希望通过远程获取数据,所以出现了"网络编程".
早期如何实现远程通信:
--打电话--->电话线
--纯平电脑(大屁股电脑)---> 网线,有线网卡
--笔记本电脑-->有线网卡,无线网卡
实现远程通信的必须具备:
1.物理连接介质---->网卡....
2.互联网协议
-人与人之间沟通的介质:中文,英文
-计算机之间沟通的介质:'互联网协议"
互联网协议
互联网协议又称为七层协议,OSI七层协议,OSI是一个世界标准组织
OSI七层协议:
--应用层
--表示层
--会话层
--传输层
--网络层
--数据链路层
--物理连接层
学习由下到上:
需要优先了解的一共五层:
==物理连接层==
基于电信号发送二进制的数据0101010111.
010: 你 you
101: 我 l
==数据链路层==
数据链路层的"以太网协议",专门处理基于电信号发送二进制的数 据
以太网协议
1.规定好电信号数据的分组方式.
2.每一台连接网线的电脑都必须要有一块"网卡"
3.网卡由不同厂商生产的,每块网卡都会有世界上独一无二12位 的编号"mac"地址;前六位:厂商号,后六位:流水号
4.交换机:可以让多台电脑连接到一起.
基于以太网协议发送数据:
特点:广播,单播
弊端:广播风暴,不能跨局域网通信
5.互联网:让局域网之间进行通信.
==网络层==
IP地址: 用于标识唯一的一台计算机(局域网)的地址
IP: 点分十进制
最小值: 0.0.0.0
最大值: 255.255.255.255
IPV4(了解):一开始用电脑的人不多,所以出现IPV4的协议版本
IPV6(了解):回环地址 127.0.0.1--->localhost
==传输层==
TCP/UDP协议,他们都是基于端口工作的.
端口号:标识电脑上某一个软件.
端口号范围:0-65535
==注意==:
1.操作系统中,一般0-1024的端口都被默认使用了(0-1024)不要动
2.尽量使用8000后的端口号:
开发中常用软件的默认端口号(==重要==):
mysql: 3306
mongodb: 27017
Django: 8000
Tomcat: 8080
Flask: 5000
Redis: 6379
若想要服务端与客户端进行通信,必须要建立连接,产生双向通道.
一条是客户端往服务端发送消息的.
另一条是服务端往客户端发送消息的.
==应用层==
http
ftp
==小结==:
IP:用于唯一标识某一台计算机的位置
port:端口用于确认计算机的一个应用软件.
IP + port:世界上某一台电脑的一个应用软件
TCP协议工作原理:
TCP是一个流式协议
三次握手,四次挥手:
三次握手建立连接
建立双向通道,建立好连接.
listen:监听
established:确认请求建立连接
发送数据
write
read
客户端王服务端发送数据,数据存放在内存中,需要服务端确认收到,数据才会在内存中释放掉.否则,会隔一段时间发送一次,让服务端返回确认收到.
在一段时间内,若服务端还是不返回确认收到,则取消发送.并释放内存中的数据
四次挥手断连接
TIME_WAIT:时间等待
socket
什么是socket
socket是一个模块,可以写一套c/s架构的套接字.
为什么要使用socket?
socket套接字会封装好各层协议的工作
好处:可以节省开发成本
如何使用
import socket
==注意==:客户端与服务端必须遵循:
一段send,另一端recv
不能两端同时send或recv