软件开发架构
1.c/s架构
c:client 客户端
s:server 服务端
可以将服务端看成店面
客户端看成店里的消费客人
服务端需要具备三个特征
1. 24小时不间断提供服务(24小时监听)
2. 固定的地址(ip地址)
3. 能够服务多个用户(高并发)
2.b/s架构
b:browser 浏览器
s: server 服务器
浏览器统一充当各个服务端的客户端
本质:bs架构本质上也是一种cs架构
网络编程前奏:
网络编程其实就是研究程序之间的数据通信
要想实现远程数据交互的前提是必须要有物理连接介质
除了要有物理连接介质之外还应该有一些能够保证数据彼此无障碍交互的东西
OSI七层协议
所有的计算机都必须要有这七层
应用层 表示层 会话层 传输层 网络层 数据链路层 物理连接层
从右到左:依次进阶
开发层可以归纳为五层
应用层 传输层 网络层 数据链路层 物理连接层
物理连接层
提供一个物理连接接口(网线口 无线网卡)
数据链路层
规定了电信号的分组方式
以太网协议
规定了计算机必须要有一块网卡 并且网卡上面要有固定的一串数字
12位16进制数
前六位:厂商编号
后六位:流水线号
上述的数字也称为计算机的mac地址(类似于身份证证号)
常见硬件
交换机:能够使接入该机器的所有计算机之间彼此互联,不冲突
局域网:有交换机组成的网络
互联网:可以简单的理解为是多个局域网之间彼此互联
路由器:能够连接多个局域网并实现局域网之间的数据传输
网络层
ip协议:规定了接入互联网的计算机都必须有一个ip地址用于唯一标识
IPV4版本
最小 0.0.0.0
最大 255.255.255.255
IPV6版本
很大很大,究竟有多大,请参考人身体有多少个细胞
#ip地址能够唯一标识接入互联网的一台独一无二的计算机
公网IP和私网IP
公网IP花钱购买并申请,可以作为服务器为大家提供访问
私网IP:自带但是无法直接基于互联网访问
arp协议
将ip地址转换成mac地址
传输层
tcp协议 UDP协议
端口协议
范围:0~~65535
特性:动态分配
eg:第一次运行微信 系统随机取一个端口号
关闭微信后重新启动,系统又随机取一个端口号
端口号基本使用
0~1024系统默认需要使用的端口号
1024~8000 常见软件端口号
我们开发的软件最后使用8000之后的端口号
#端口号(port):能够唯一标识一台计算机上面正在运行的一款应用程序
端口号在同一台计算机同一时刻不能重复
总结:
ip+port 127.0.0.1:8080
tcp协议
流式协议 可靠协议
三次握手 建立链接
重要状态
listen监听态:等待对方发请求
syc_rcvd态:忙于恢复确认建立请求,#洪水攻击:服务端在同一时间接受到了大量的要求建立链接的请求
四次挥手 断开链接
UDP协议
不可靠协议
常用:QQ
数据发送没有通道的概念,发送出去就不管了
应用层
都是人为自定义的协议标准 可遵循可不遵循
HTTP协议 FTP协议