一。软件开发架构
在所有软件中有两种结构模式
1.c/s架构(client/server)
c代表的是客户端
s代表的是服务端
2.b/s架构(browser/server)
b代表的是浏览器
s代表的是服务端
当然,bs架构的本质也是cs架构。
在现在手机中,软件中多有网站的链接等等,是c/s中b/s的体现。
二。七层协议
应用层
表示层
会话层
传输层
网络层
数据链路层
物理层
五层协议
应用层
传输层
网络层
数据链路层
物理连接层
三。各个层的分析
1.物理连接层
在这一层,通常是指电信号的传输,以010101001010这种二进制的数据进行传输的的物理层。
2.数据链路层
这一层的协议表示的是:
1规定了电信号的分组方式
2.规定了任何一台接入互联网的计算机都有一块网卡,每一块网卡上,都刻有世界上独一无二的编号。
是由12位16进制数组成,前6位是厂商编号,后六位是流水线编号。
这十二位数共同组成了mac地址。
这种协议被称为‘以太网协议’
以太网协议通信的特点:
通信广播。就是当在局域网中以以太网进行协议传输,当用户1需要对用户2进行访问时,需要广播其请求,使得在其局域网中的所有人都收到这个请求,但是只有用户2能够响应这个访问,然后与之建立连接。
在局域网中,使用交换机进行集合,各个pc端通过交换机进行连接。交换机是基于以太网协议通信的。但是不能跨局域网进行通信。
互联网:互联网是由多个局域网彼此之间连接而成。
3.网络层
在这一层使用的协议是ip协议。
ip协议规定,只要是接入了互联网的计算机,都必须有一个ip地址。
这类IP地址类似于255.255.255.0,是由点分十进制,
最小的 是0.0.0.0,最大的是255.255.255.255。
其中有ipv4和ipv6两种协议,开发ipv6的原因是v4不够使用。
广域网与路由器。
要使得局域网与局域网之间实现通信,需要使用路由器,将交换机连接至路由器,就可以和其他连入路由器的交换机进行通信。
路由器与交换机之间有网关。
ip地址是动态分配的。每当你重新连入一次网络后,都有可能会改变。
4.传输层
tcp
udp
在这一层中使用这两种协议,这些协议都是基于端口号(port)的协议。
端口号是用来唯一表示一台计算机上的某个应用程序的。
端口范围是0——65535
假设一个pc机上有65536个应用程序启动,当启动地65537个时,会报错,因为没有端口给它使用了。
注意:0~1024这些都是操作系统默认使用的端口号
建议:使用8000之后的端口
MySQL默认端口:3306
Redis默认端口:6379
django默认端口:8000
flask默认端口:5000
tomcat默认端口号:8080
端口号也是动态分配的。
我们通常使用ip+port唯一标识接入网络的软件。
5.应用层
http协议
ftp协议
tcp协议
TCP协议时一个流式协议,是可靠的协议。
是基于TCP协议通信,必须先建立双向通信。
其中包括三次握手 和四次挥手。
三次握手:
在三次握手时,客户端先发送连接请求向服务器,当服务器接受到请求后,返回收到请求的报告,并向其发送连接请求,这两个可以一起发送,最后客户端再返回一个收到服务器请求的反馈信息。这样双向通道就建立完毕了。
四次挥手:
四次挥手是在连接断开时的动作,一开始,客户端需要向服务器发送断开连接请求,服务器收到请求后,向客户端发送收到请求的消息,但不立即发送断开服务器与客户端之间的连接,因为,数据传输工作可能没有结束,需要完成传输工作后,再发送断开连接请求,当客户端收到断开连接请求后,再向服务器发送收到断开请求的消息,这时候双向通道才算完全断开。
总共流程:
,