网络编程
软件开发架构
C/S架构(client/server)
C: 客户端
S: 服务端
客户端: 这里的客户端一般泛指客户端应用程序EXE,程序需要先安装后,才能运行在用户的电脑上,对用户的电脑操作系统环境依赖比较大
B/S架构(Browser/server)
B: 浏览器
S: 服务器
Browser浏览器,其实也是一种Client客户端,只是这个客户端不需要大家去安装什么应用程序,只需要在浏览器上通过HTTP请求服务器端相关的资源,客户端Browser浏览器就能进行增删改查
Ps: bs架构本质也是cs架构
服务端: 24小时提供不间断服务
客户端: 什么时候需要服务,就什么时候去找服务端寻求服务
网络编程的发展史
任何先进的技术最早都来源于军事
要想实现远程通信第一个需要具备的条件是:物理连接介质
人要想实现无障碍交流 必须说统一的语言 >>> 英语
计算机与计算机之间要想实现远程通信除了有物理连接介质之外还需要有一套公共的标准/协议
OSI协议
OSI七层协议
应用层
表示层
会话层
传输层
网络层
数据链路层
物理连接层
OSI五层协议
应用层
传输层
网络层
数据链路层
物理连接层
1.物理连接层
基于电信号传输0101010二进制数据
2.数据链路层
1.规定了电信号的分组方式
2.规定了任何一台接入互联网的计算机都必须有一块网卡
每一块网卡都刻有独一无二的编号(MAC地址)
12位16进制数: 前6位是厂商编号,后6位是流水线编号
PS: 以上两点合称为"以太网协议"
交换机
基于以太网协议通信,不能跨越局域网通信
互联网是有n多个局域网彼此之间连接而成
3.网络层
IP协议
规定了只要是接入互联网的计算机都必须有IP地址
IP地址的特点:点分十进制
IP地址最小:0.0.0.0 IP地址最大:255.255.255.255
IP地址目前有两个版本:IPV4 和 IPV6
IP地址是动态分配的
4.传输层
TCP\UDP都是基于端口工作的协议
端口(port)
计算机与计算机之间其实是计算机上的应用程序与应用程序之间的通讯
端口是用来唯一标识一台计算机上某个应用程序
端口号的范围: 0~65535
注意: 0~1024这些都是操作系统默认使用的端口号
MYSQL默认端口号:3306 Redis默认端口号:6379 Django默认端口号:8000 flask默认端口号:5000
端口号是动态分配的
假设第一次QQ分配到的是8989,将QQ关闭再次启动端口号可能就改变了
总结:
IP地址:用来唯一标识接入互联网的一台计算机
port端口:用来唯一标识计算机上的某个应用程序
ip + port : 唯一标识接入互联网一台计算机上的某个应用程序
5.应用层
HTTP协议 FTP协议
TCP协议又称流式协议,可靠协议,基于TCP协议通信,必须先建立双向通道
TCP传输数据可靠的原因在于它有反馈机制,发送消息之后对方必须回复确认收到消息才会将数据从内存中清空,否则在限定的时间内会每隔一段时间发送一次
洪水攻击: 服务器在同一时间接收到了大量的请求