程序员在编写软件的时候应该遵循的架构设计。类似于三层架构。
C/S 架构
C:client(客户端)
S:server(服务端)
客户端相当于家里的的客人,服务端相当于招待客人的主人。打开APP其实就是客人来到住人家里,让主人招待客人。
B/S 架构
B:browser(浏览器端)
S:server(服务器端)
其实B/O架构其实也可以说是C/S架构,只不过是让浏览器的网页界面充当客户端,用户不需要下载客户端。
两种架构的优劣
C/S架构:优点是在客户端就可以定制一些需要的东西。缺点是用户只有下载才可以使用。
B/S架构:优点是无需下载,可以直接使用。劣势就是没有办法进行定制一些东西。
架构发展的趋势
目前趋势其实偏向于B/S架构,比如QQ、微信、支付宝的一些小程序。只需要下载上述几个软件就可以去访问很多小程序和数据。
网络编程的学习是基于换联网进行的,网络编程其实就是基于互联网编写代码。
学习网络编程之后就可以用于开发C/S架构的软件
网络编程技术起源于美国军方(先进的技术一般都是从部队出来的,由军用转为民用)。之前网络编程没出现的时候,数据只能用硬盘拷贝并携带。为了解决这个数据交互的快捷性,发明了网络编程。
远程通信的前提是具备一个物理连接介质(电话线,网线,网卡)
不同计算机之间实现数据交互,除了物理连接介质之外还需要一套标准,就是互联网协议:OSI七层协议
OSI七层的本质其实就是规定了数据要想基于网络发送出去必须在计算机上经历一些固定的流程。
物理链接介质,传递电信号
基于物理链接层收到一串二进制数,然后需要进行解析。
以太网协议
IP协议规定了每台计算机接入互联网都必须有一个IP地址(取决于网线)。IP地址可以唯一标识地球上的独一无二的一台介入互联网的计算机。IP地址目前有两个版本。
IPV4:点分十进制
用点分开的四个字节的二进制数组成的一串数字。最大:0.0.0.0 ;最小:255.255.255.255 。IPV4最多只能容纳4228250625台计算机。随着社会的进步,计算机的使用越来越普遍,IPV4地址不够用。
IPV6:十六进制
IPV6可以标记出地球上的每一粒尘埃。
IP地址分为公网IP和私网IP。公网IP是可以直接被浏览器访问到的,但是私网IP是不可以的。公网IP一般是收费并且需要使用实名认证并备案的。我们的计算机默认都是私网IP。
一台计算机上面可以运行很多数据交互软件(例如QQ、微信等),PORT协议可以保证从内存中正确的获取数据。端口号是用来标识一台计算机上面正在运行的应用程序。
0~~65535
0~~1024
1024~~8000
8000
以后的端口号8888
,关闭微信重新打开那么会随机分配可能还是8888
,或者也有可能是其他的。TCP协议与UDP协议都属于传输层
基于TCP协议进行数据交互之前需要做一系列复杂的操作>>>:三次握手四次挥手
不需要建立双下通道 数据的传输速度快 但是可能会丢失。qq使用的就是UDP协议 所以有时候会产生数据丢失现象。但是我们可以在UDP协议的基础之上做很多额外的扩展来保证数据的安全。
TCP协议类似于打电话:你一句我一句 你侬我侬;UDP协议类似于发短信:发了之后不管你看不看 只要发了就行
www.baidu.com
14.215.177.29:80
ip:port
www.baidu.com
解析202.108.22.5:80
完全取决于程序员:HTTP协议 HTTPS协议 FTP协议 自定义
交换机:让接入交互机的多台计算机之间彼此互联
局域网:由交换机组成的网络称之为局域网(一个区域)
广播和单播:
1. 广播:在交换机中群发
2. 单播:定向回复消息(记录mac地址)
路由器:将局域网彼此链接起来并支持数据交互。互联网其实可以看成是由多个局域网链接在一起
在局域网中可以直接基于mac地址实现数据交互。但是可能会产生广播风暴:交换机中同一时间出现太多广播操作。mac地址只能用于局域网交互数据 不能跨局域网传输
题目: TCP协议之所以比UDP协议可靠 就是因为有双向通道 对不对?
描述的不够精确 不对!!!
TCP协议之所以比UDP协议可靠 原因在于TCP协议发送消息有反馈机制
基于TCP发送的消息会在本地先保存该消息 如果地方确认收到才会删除
否则在一定的时间内会频繁的多次发送知道确认或者超时为止
UDP协议发送数据之后会立刻删除内存数据 不会保留