目录
开发软件,必须开发一套"客户端"与"服务端"
寻找服务,并享受
24小时不间断提供服务
客户端
服务端
软件的使用稳定,并且可以节省网络资源
软件的每一次更新,客户端也必须跟着重新下载更新
例如:手机软件,电脑软件
浏览器(客户端)
服务端
以浏览器充当客户端,无需用户下载多个软件,也无需用户下载更新软件,直接在浏览器上访问需要使用的软件
消耗网络资源过大,当网络不稳定时,软件的使用也会不稳定
例如:在浏览器(客户端)上输入某个软件的域名
所有先进技术都源自于军事,希望通过远程获取数据,所以出现了"网络编程"
电话→电话线
大头电脑→网线,有线网卡
笔记本→网卡
网卡
人与人之间沟通的介质:交流语言
计算机之间沟通的介质:"互联网协议"
互联网协议又称为七层协议,OSI七层协议,OSI是一个世界标准组织
应用层
表示层
会话层
传输层
网络层
数据链路层
物理连接层
需要优先了解的五层协议
基于电信号发送二进制的数据
数据链路层的"以太网协议",专门用于处理基于电信号发送的二进制的数据
每一台连接网线的电脑都必须要有一块"网卡"
网卡由不同厂商生产
每一块网卡都会有世界上独一无二的12位编号"mac"地址
前6位:厂商号
后6位:流水号
可以让多台电脑连接到一起
广播
单播
广播风暴
局域网与局域网之间不能跨网通信
让局域网之间进行通信
用于标识一台计算机(局域网)的唯一地址
点分十进制:0.0.0.0~255.255.255.255
IPv4:一开始用电脑人不多,就出现IPv4
IPv6:IPv4不够用了,就出现IPv6,包含了IPv4内信息,用来扩展地址
回环地址:127.0.0.1
TCP/UDP协议,他们都是基于端口工作的
标识电脑上的某一个软件
0~65535
注意:1.操作系统中,一般0~1024的端口都被默认使用了
2.尽量使用8000之后的端口
mysql:3306
mongodb:27017
Django:8000
Tomcat:8080
Flask:5000
Redis:6379
一条是客户端往服务端发送消息的
另一条是服务端往客户端发送消息的
用于标识具有唯一标识的某一台计算机的位置
端口用于确认计算机上的应用软件
世界上某一台计算机上的软件
发送连接请求;反馈确认请求,并也发送连接请求;反馈确认连接;成功连接
建立双向通道,建立好连接
监听
确认请求建立连接
write
read
客户端往服务端发送数据,数据存放在内存中,需要服务端确认收到,数据才会在内存中释放掉.
否则,会隔一段时间在发送一次,让服务端返回确认收到.
在一段时间内,若服务端还是不返回确认收到,则取消发送,并释放内存中的数据.
发送断连接信息,反馈信息;确认信息完整,发送同意断连接信息,反馈信息;连接断开.
时间等待
socket是一个模块,可以写一套C/S架构的套接字
socket套接字会封装好各层协议的工作
可以节省开发成本
python内置模块
直接import socket使用
客户端与服务端必须遵循
一端send,另一端recv
不能两端一样
原文:https://www.cnblogs.com/793564949liu/p/11695005.html