程序员在编写软件的时候应该遵循的架构设计,类似于我们写ATM和选课系统所采用的三层架构。
软件开发架构分为 C/S 架构和 B/S 架构。
C/S 架构的优势在于针对客户端可以高度定制,而劣势在于需要用户去下载才能使用。
B/S 架构的优势在于无需下载,急速体验,劣势是无法做到高度定制,体验效果较差。
目前的趋势其实更加偏向于 B/S 架构。
网络编程的研究前提就是基于互联网,网络编程就是基于互联网编写代码。
学习网络编程是为了后续开发 C/S 架构的软件打下基础。
该技术源于美国军方,军方想要实现不同计算机之间数据交互,没有网络编程技术的时候只能拿U盘拷贝并携带,为了跨区域交互数据所以发明了网络编程。
不同计算机之间要想实现无障碍交互,除了需要有物理链接介质之外还需要一套公有的标准。这个标准就是互联网协议(OSI七层协议)。
所有的计算机在生产过程中必须有相同的部分和相同的功能。分为应、表、会、传、网、数、物,分别是应用层、表示层、会话层、传输层、网络层、数据链路层、物理链接层。
上述的七层也有很多人总结为五层,应用层(三层)、传输层、网络层、数据链路层、物理链接层。
OSI七层的本质其实就是规定了数据要想基于网络发送出去必须在计算机上经历一些固定的流程。
物理链接层
物理链接介质,用于传递电信号。
数据链路层
基于物理链接层接收到一串二进制数,规定二进制数据的分组方式。
规定以太网协议,但凡能够接入互联网的计算机都必须有一块网卡,每块网卡在出厂的时候都会被烧制一个全世界独一无二的编号,该编号是由12位16进制数组成,前六位是产商编号,后六位是流水线号,这个独一无二的编号也有一个称呼 mac 地址,类似于身份证号码。基于 mac 地址就可以实现计算机之间的数据通信了。
什么是互联网
将计算机彼此链接到一起的介质。
互联网建立的目的
基于互联网进行数据交互。
上网的本质
基于网线去访问其他计算机上面的资源
其实我们的计算机也可以称之为是服务器/服务端(专门对外提供服务)
在局域网中可以直接基于mac地址实现数据交互,但是可能会产生广播风暴,即交换机中同一时间出现太多广播操作造成服务器损坏。mac地址只能用于局域网交互数据,不能跨局域网传输。
IP协议
规定了每台接入互联网的计算机都必须有一个IP地址(取决于网线),IP地址目前有两个版本。
IPV4:点分十进制
最小:0.0.0.0
最大:255.255.255.255
随着社会的进步,计算机的使用越来越普遍,IPV4 地址不够用。
IPV6:十六进制
IPV6可以表示出地球上每一粒沙子,用于表示计算机绰绰有余。
IP地址可以唯一标识地球上独一无二的一台接入互联网的计算机。
公网 IP 和私网 IP
公网 IP 是可以直接被浏览器访问到的,但是私网 IP 是不可以的,我们所有人的电脑默认使用的都是私网 IP ,公网 IP 需要花钱购买并且需要实名认证并备案,很多非法网站都是在国外注册备案。
PORT协议(端口协议)
一台计算机上面可以运行很多数据交互软件,它们都是从内存中获取数据,为什么不会错乱,就是因为端口协议的存在。
PORT 协议用于标识一台计算机上面正在运行的应用程序。
端口号的范围是:0~65535。
0~1024:系统经常使用的端口号。
1024~8000:常用软件端口号。
我们以后在写项目的时候推荐使用8000之后的端口。
同一时间同一台计算机上面端口号不能冲突
端口号是动态分配的
打开一个软件随机分配一个没有被使用的端口号如8888,关闭微信重新打开那么会随机分配可能还是8888也可能是其他。
IP+PORT
IP+PORT 能够标识全世界独一无二的一台计算机上面的某一个应用程序。
我们日常生活使用浏览器访问的各个网址其实就是IP+PORT。
因为直接使用IP地址非常难记,所以很多常见的服务端都不需要指定端口,只要访问了IP地址内部去会自动映射。
将好记的地址解析成真正的地址
www.baidu.com》》》解析》》》202.108.22.5:80
完全取决于编写代码的程序员使用什么协议。
TCP与UDP协议都属于传输层。
TCP协议
又叫流式协议、可靠协议,基于TCP协议进行数据交互之前需要做一系列复杂的操作:三次握手四次挥手。
UDP协议
又叫丢包协议、不可靠协议,不需要建立双下通道,数据的传输速度快,但是可能会丢失。
但是我们可以在UDP协议的基础之上做很多额外的扩展来保证数据的安全。
TCP 协议之所以比 UDP 协议可靠 原因在于 TCP 协议发送消息有反馈机制,基于 TCP 发送的消息会在本地先保存该消息 如果地方确认收到才会删除,否则在一定的时间内会频繁的多次发送知道确认或者超时为止,UDP 协议发送数据之后会立刻删除内存数据,不会保留。