一. 软件开发架构
1. 定义
什么是网络编程:我们需要编写一些基于网络传输的一些软件,而我们目前所学的都是基于本地的,不是基于网络的。我们的目的就是要让我们的项目写好之后给所有人使用,既然是所有人使用,那么就必须得把我们所写的项目上传至互联网,那么别人想使用我们的项目软件,那我们就必须开发一款客户端,然后让用户在自己的电脑上下载客户端来使用。下载完成后,还需要一个服务端,通过服务端检验后在进行注册登录等一系列的功能。
client(客户端)——————网络传输——————服务端
像这种的我们一般称这种架构为c/s架构
当我们需要下载大量软件时,会过多的占用我们大量的资源,客户端和服务端将会出现问题 ,因此这个时候,就有人开发出了浏览器,其实浏览器也是客户端,而且他还是个万能的客户端。
服务端的特征:
1. 24小时不间断的提供服务
2. 服务端要有一个公网IP(服务器部署、它就是另外一台计算机,系统:Linux系统, centos、乌班图等)
3. 常见的服务器:阿里云、腾讯云、百度云、华为云等。
2. OSI七层协议(互联网通信协议)
1. 什么是网络和上网:
上网就是上传和下载数据的过程
网络背景:
在早期时,世界范围内的计算机是不能够进行互相通讯的,当时只是在局域网中通讯,后来又在广域网中通讯,这就是互联网。
网络的组成:物理连接设备(路由器,交换机,网线等)+计算机界中的英语(互联网的通讯协议)
互联网通信协议(osi七层协议):
互联网的本质就是一系列的协议,这个协议就叫osi协议,按照功能的不同,分工不同
人为的有七层,但是实际上是不存在这七层的,没有这个概念,只是人们自己这样理解划分的,原因就是让我们明白每一层是干什么的。
什么是协议:协议就是标准
1.划分成七层的有:应用层,表示层,会话层,传输层, 网络层,数据链路层,物理层
2.划分为五层的有:应用层,,传输层,网络层, 数据层,数据链路层,物理层
3. 划分成四层的有:应用层,传输层,网络层,网络接口层
1. 物理层
物理层:他是传吗用来发送高低电频的,其实就是二进制,物理层单纯的发送电频是没有意义的,因为接受的人并不知道是什么意思,所以,需要对发送的电频进行分组,但是物理层却做不了分组。
2. 数据链路层
数据链路层: 他就是专门对物理层发送过来的数据链路层进行分组,使用的是ethernet以太网协议。
一组电信号构成一个数据报,叫做帧,或者叫数据帧,数据帧的组成:
head 包含(固定的18个字节)
发送者/源地址,6个字节
接受者/目标地址,6个字节
数据类型,6个字节
数据类型的具体内容:haed长度+date长度=最短64个字节,最长的字节有1518个字节,超过最大限制就分片发送
mac地址:以太网协议规定每个接入互联网的设备必须要一个网卡,发送端和接收端的地址
每块网卡出厂时就已经有了唯一的mac地址了,长度为48的2进制,通常由12位的16进制表示(前六位是厂商编号,后六位是流水线号)。
3. 网络层
网络层:这层使用的是ip协议,规定每一个接入互联网的计算机都必须要有一个ip地址,网络层中的数据我们称为数据包。
ip地址的组成格式:
分为IPv4和IPv6,目前大多数用的都是IPv4,但是由于IPv4的地址即将耗尽,所以其他的场景下都开始使用IPv6了。
IPv4: 0.0.0.0.------255.255.255.255
公网ip:需要购买的,阿里云、腾讯云的,人家或给你一个公网ip地址,固定的,不会变。172.0.1.200
内网ip:192.168开头的地址基本上都是局域网中得ip地址
如何查看自己的IP地址:windows:cmd+ipconfig
linux:(macos)ifconfig
通过一个ip地址就可以知道所在的局域网,IP+mac地址是可以确定世界上的任意一台计算机,原因是:arp协议,他可以通过你的IP地址计算出mac地址。
本地回环地址:127.0,0.1
192.168.1.252 127.0.0.1 localhost
4. 传输层
使用的是TCP协议,或者UDP协议,他也称之为端口协议,一个端口可以代标一个应用程序端口的范围:0--65535
0---1024是自己计算机系统所使用端口,1024--8000是常用软件使用的端口,
我们自己开发软件时,端口一般选择8000--65535,同一个端口只能代表一个应用软件,端口不能有冲突,软件一旦关闭,那么就会释放这个端口,这样别的应用程序就可以使用了。
常见的一些端口号:
应用程序: FTP TFTP TELNET SMTP DNS HTTP SSH MYSQL
端口 20,21 69 25 23 53 80 22 3306
传输层协议: TCP UDP TCP TCP TCP TCP TCP TCP
5. 应用层
Application App
这层是离用户最近一次,比如QQ,微信,支付宝等这些都是应用,都是在应用层。
1. 客户端:用什么协议都可以,自己开发的软件,自己选择。
2. 浏览器: 按照浏览器规定的协议去使用,浏览器使用的HTTP协议。
3.HTTP协议:示例:
https://www.baidu.com/
协议://域名/v1/v2?参数
HTTP协议是明文传输,不安全,而https是密文传输,相比http更安全,但是相比http速度比较慢而且https协议是需要申请的
域名解析:DNS服务器就是来解析域名的,域名的本质就是ip地址,域名比ip好记忆,最终的结果还是把域名变为ip地址
域名解析地址:1.先解析本地的hosts文件
2.去对应的平台域名表中查找
TCP协议和UDP协议
客户端与服务端:
客户端要给服务端发消息需要建立链接才可以TCP协议也称为可靠协议(三次握手),流式协议(发送数据可以分多次发送)
三次握手:建立联系
四次挥手: 断开链接
客户端给服务端发送请求后,服务端再给客户端返回信息。
客户端可以有多个而服务端只有一个
面试题:
1. TCP协议的可靠性,是因为建立了双向通道?
不是。是因为TCP协议的反馈机制
2. 四次挥手能不能省略为三次挥手?
UDP协议:
它不可靠、是因为它不建立链接,没有三次握手、四次挥手
速度快
远程控制