软件开发架构
cs架构与bs架构
c: client 客户端
b: broswer 浏览器
s: server 服务端
bs本质也是cs
优缺点:
cs可以高度化定制内容,但是没有bs简洁
架构发展趋势:
cs与bs交错使用,取长补短,都要遵循接口统一
网络编程:
目的是为了解决计算机的数据交互,起源于美军
需要基于互联网编程,程序实现了远程数据交互。其首要的条件就是要有物理连接介质
意义:
为了编写cs架构的软件
OSI七层协议
1.应用层
2.表示层 (表示层与会话层X)
3.会话层 精简后的五层
4.传输层
5.网络层
6.数据链路层
7.物理连接层
各层特征
1.物理连接层 保证物理连接介质的条件,传递电信号
2.数据链路层 规定了电信号的分组方式(电脑上的以太网地址由12位16进制数组成)
3.网络层 IP协议: 任何接入互联网的计算机都必须有一个IP地址
IP地址:IPV4 / IPV6
4.传输层 PORT(端口)协议:计算机上的每一个正在运行的应用程序都必须有一个端口号
1.端口号范围:0-65535
2.端口号是动态分配的
3.同一时间同一台计算机端口号不能冲突
4. 0-1024 一般是操作系统内部需要使用的
1024-8000 一般是常见的软件已经使用了
8000+ 我们平时写代码可以使用8000之后的端口号
5.IP+PORT:标识全世界任意一台接入互联网的计算机上的某一个具体的程序
url = IP+PORT (统一资源定位符)
*Tcp协议:
三次握手(建立双向通道),四次挥手(断开双向通道)
*Udp协议:
基于Udp发送数据,没有任何通道与限制,没有二次确认机制,不及Tcp安全
5.应用层(取决于程序员用什么)
sockle 套接字
- 套接字家族
- 文件类型的: AF_UNIX
- 网络类型的: AF_INET
- 服务端启动之后,客户端才能够运行起来
- 半连接池
- 黏包问题
- recv
- 需要接收的数据量是未知的,所以才会有黏包的现象,知道的话就不会产生黏包了