网络架构(B/S架构、C/S架构)
网络编程:
要基于网络来编写一款B/S或C/S架构的软件。 比如之前所写的ATM都是单机版本的,没有接入网络的系统,别人无法访问到。
目的:将系统编程基于网络传输的,别人想要使用,必须先将客户端下载到本地电脑上。以登录为例,用户把用户名和密码传到服务端进行用户名和密码的验证,这就是一款基于网络开发出来的软件。
C/S架构:客户端(client) ----------网络传输---------- 服务端(server)
客户端类似于用户,服务端类似于饭店中的工作人员
针对一款软件来说,客户端是可以有多个的,但是服务端只能有一个。
B/S架构:浏览器(browser)----------网络传输---------- 服务端(server)
浏览器类似于用户,服务端类似于饭店中的工作人员
由来:客户端和服务端存在的问题:当下载大量的软件的时候,会占用电脑的大量资源,时间久了,电脑就会受到影响。用户想要使用软件就必须下载,而每次下载的成本很高。
本质上B/S架构也是C/S架构。目前我们所用的软件是两者兼有的
服务器需要具备的特征:
1. 24小时不间断对外提供服务
2. 服务端要有一个公网IP(服务器:理解成是另外一台计算机而已,是需要去买的,阿里云、腾讯云之类的)
OSI七层协议
网络: 网络存在的意义就是跑地域数据传输称之为通信。上网本质其实就是:上传和下载的过程。
网络的组成部分:物理连接设备(网线、交换机、路由器等)+ 计算机通信协议
“最开始世界上的计算机是不能互相通信的,只有在局域网中通信,后来,随着技术的发展,世界范围的计算机开始通信了,通过网络来通信,这就是所说的互联网。”
互联网通信协议:
OSI的七层协议:物理层、数据链路层、网络层、传输层、 会话层、表示层、应用层
五层协议:物理层、数据链路层、网络层、传输层、应用层(会话层、表示层、应用层)
物理层: 发送高低电频(不能做分组)
数据链路层:专门用来做分组,分组之后的数据称为:数据帧(head(报头)+data(真实数据))
head部分:发送者/源地址:6字节,接受者/目标地址:6字节,数据类型:6字节
data:最短46个字节
数据报:head长度+data长度(最短64字节)
该层使用的是以太网协议,以太网协议规定,任何接入互联网的计算机都应该有一个网卡,默认的就叫以太网。
MAC地址: 每一个网卡都要有一个MAC地址,每块网卡出厂时都被烧制上一个世界唯一的,AC地址,长度为48为二进制 ,通常由12为十六进制数表示。
MAC地址可以确定局域网中唯一一台计算机。
网络层:该层使用IP协议
IP协议:规定接入互联网的计算机都必须要有一个IP地址,该层的数据称之为是数据包。IP地址分类:IPv4、IPv6
IP地址:可以确定世界范围内任意一个的局域网。
IP地址的组成:
IPv4地址的格式: 0.0.0.0 --------------------------- 255.255.255.255
对应的二进制:
00000000.00000000.00000000.00000000 --------------------------- 11111111.11111111.11111111.11111111
如何查看自己电脑的IP地址:
Windows系统:ipconfig
Linux(macOS):ifconfig
1. 公网IP:固定的,不变的,需要购买的(服务器),阿里云、腾讯云、百度云等,172.12.1.101
2. 内网IP:会变的
子网掩码:IP + 子网掩码
IP地址 + MAC地址可以确定世界范围内唯一一台计算机。
其实,只需要IP地址就可以确定世界范围内的唯一一台计算机。因为,有一个ARP协议,它能够通过IP地址计算出计算机的MAC地址。
本地回环地址:127.0.0.1(要记住!!!)
传输层:使用TCP协议和UDP协议,也称为端口协议
基于TCP协议通信之前:必须先建立一个双向通信的连接
端口:0 — 65535(一个端口表示一个正在运行的应用程序)
1. 0 —1024 之间的端口号一般都是由系统使用的,尽量不要使用。
2. 1025 — 8000 之间的端口:一般是常用软件的端口号。MySQL的默认端口:3306,Django的默认端口号:8000
3. 自己开发的软件尽量使用8000之后的端口
常用软件的端口号:
DNS:域名解析
例如:baidu.com ,域名的本质其实就是IP地址,域名最终还是要解析成对应的IP地址,才能找到IP地址对应的计算机。
文件的后缀名是给我们看的,文件可以有后缀名也可以没有,Linux中,一切皆文件.
1. 先从你自己电脑的host文件中查找的
2. 如果hosts文件没有找到对应的关系, 在去对应平台的关系中去找
3. 域名是需要去购买的,并且是需要备案的
应用层:(Application),才是跟我们程序员离的最近的一层。
1. 客户端:想用什么协议就用什么协议,客户端是我们自己开发的。
2. 浏览器:就要按照浏览器的协议(HTTP协议)
3. HTTP协议、HTTPS协议
网址:https://www.baidu.com/?tn=49055317_42_hao_pg
协议://域名:端口/v1/v2?参数
http特征:不安全、通过HTTP协议的数据都是明文传输的
https特征:安全、通过HTTPS协议的数据都是密文传输的
https = http + ssl证书(要去机构申请,需要在NGINX服务器的配置文件中配置一些代码才能使用)
TCP协议和UDP协议
TCP协议的三次握手和四次挥手
TCP协议也叫可靠协议,流式协议(数据是可以分多次发送的)
三次握手:为了建立连接 (TCP协议的反馈机制,保证了数据的安全)
四次握手:为了断开连接
面试题:
为什么建立连接的时候是三次握手,断开连接是四次挥手呢?
建立连接的时候,服务器处于LISTEN状态下,收到了建立连接请求的SYN报文后,将ACK和SYN放在一个报文里发送给客户端。而关闭连接时,服务器受到对方的FIN报文时,仅仅表示对方不再发送数据了,但是还可以接收数据,而自己也未必将全部数据都发给对方了,所以服务端可以立即关闭,也可以发送一些数据给对方后,在发送FIN报文给对方来表示同意现在关闭连接。因此,服务端ACK和FIN一般都会分开发送,从而导致多了一次。
客户端与服务端之间一定是客户端先向服务端发起请求,而不能返回来
特殊情况:服务端可以主动向客户端发起请求 websocket协议,一般用在即时通信软件中
UDP协议: 1. 不建立双向连接,也没有三次握手 2. 速度快
标签:协议,计算机,编程,网络,IP地址,服务端,客户端 From: https://www.cnblogs.com/Lucky-Hua/p/17523219.html