网络编程和并发编程

软件开发架构

网络编程:

        我们要给予网络来编写一款B/S或者是C/S架构的软件,比如:ATM,我们前面写的ATM系统都是单机版本,没有接入网络的系统,别人无法访问到

目的:

        以ATM为例,现在我们想把之前写的ATM系统编程基于网络传输的,如果别人想用,就需要把客户端下载到本地电脑上,一登录为例,把用户名和密码在客户端输入完成,然后,把用户名和密码传到服务端进行用户名和密码的验证,这就是一款基于网络开发出的软件

客户端(C)——————————网络传输————————服务端(S)

(B/S)的由来

客户端和服务端存在的问题:当我们下载大量的软件的时候会占用用户电脑的大量资源,时间长了之后,电脑就会受影响,用户想要使用软件就必须下载,而每次下载都是成本很高的

B/S

浏览器————————网络传输————————服务端

        由于之前客户端都需要让用户去下载,所以,后来就有人站出来,开发出来了一款浏览器,以后你在开发软件直接可以在浏览器打开,不用下载任何的客户端,浏览器我们也称之为是万能客户端,超级客户端

B/S:

        浏览器(browser):就类似于用户

        服务端(server):饭店中的工作人员

C/S:

        客户端(client):就类似于用户

        服务端(server):饭店中的工作人员

————客户端是可以有多个的,服务端一般只有一个(针对一款软件)——————

# 本质上B/S架构也是C/S架构!

————目前我们使用的软件是二者兼有!!!————

服务端所要具备的特征:

        1.  24小时不间断对外提供服务

        2.  服务端要有一个公网 ‘ip’(服务器:理解成是另外一台计算机而已,是需要去买的,阿里云,腾讯云之类的)

        

OSI七层协议   

1. 什么是网络?

        上网的本质其实就是:上传和下载数据的过程

***

        最开始的时候,世界上的计算机是不能互相通信的,只是在局域中通信,后来,随着技术发展,世界范围内的计算机开始通信了,通过网络来通信,这就是我们现在所说的互联网

***

        网络的组成部分:物理连接设备(网线,交换机,路由器等)+ 计算机通信协议(英语)

      

2. 互联网通信协议:

        # OSI的七层协议(从下往上)

          应用层

          表示层

          会话层

          传输层

           网络层  

           数据链路层

           物理层

        # 五层协议  

          应用层

          传输层

           网络层  

           数据链路层

           物理层

物理层:

        它是专门用来发送高低电频,  0111010101011101011

         ~~单纯的发送高低电频是没有意义的,余姚对电频进行分组,来表示不同的意思~~

        # 物理层是不能做分组的

**************************************************************************************************************

数据链路层:专门用来做分组使用的

         该层的数据称之为是一个数据帧,数据帧有两部分组成   :head(报头)+data(真实数据) 

       head部分(固定18个字节):

               * 发送者 / 原地址,6个字节

               * 接受者 / 目标地址, 6个字节

                * 数据类型,6个字节

        data:

                最短46字节

        # 数据报的具体内容:head长度 + data长度 = 最短64字节

        ~~ 该层是用以太网协议,以太网协议规定:任何接入互联网的计算机都应该有一个网卡,默认就叫以太网 ~~

        Mac地址:每块网卡出厂时都被烧制上一个世界唯一的mac地址,长度为48位2进制,通常由12位16进制数表示(前六位是厂商编号,后六位是流水线号)

        # Mac地址可以确定局域网中唯一一台计算机

**************************************************************************************************************

网络层:

        这一层使用的是 ‘IP’协议,该协议 规定接入互联网的计算机都必须要有一个IP地址,该层的数据称之为数据包,

         IP地址:ip地址可以确定世界范围内任意的一个局域网

         IP地址的组成:

                        # ipv4地址的格式:

                        0.0.0.0(最小地址)---------------------------->255.255.255.255(最大地址,十进制表示的)

                        00000000.00000000.00000000.00000000-->11111111.11111111.11111111.11111111

                        10进制转二进制:11111111(2)= 1*2**7 + 1*2**6+·······

        如何查看自己电脑的IP地址:

                        windows系统:ipconfig

                        linux系统(macOS):ifconfig

                1. 公网ip:固定的,不变,需要购买的(服务器)

                2. 内网ip: 192.168.1.63,会变的

子网掩码:ip + 子网掩码

~~  ip地址+Mac地址可以确定世界范围内唯一一台计算机~~

# 其实,这里只需要IP地址就可以确定世界范围内的唯一一台计算,为什么?

因为:有一个叫arp协议,可以根据IP地址计算出来Mac地址,所以,有了IP地址就相当于有了Mac地址

        需要记忆:本地回环地址:127.0.0.1(就是找自己的电脑)

传输层:

        该层使用的是TCP协议和UDP协议,也称为是端口协议,我们一般使用端口来表示一个个的应用程序

        #  一个端口表示一个正在运行的程序

        端口:0-65535,

                ******

                        1.   0- 1024之间的端口号一般是系统使用的,我们尽量不要使用,否则可能会造成两端口冲突 

                        2.  1025-8000之间的端口号一般是常用软件软件的端口号

                                        MySQL的默认端口号:3306

                                        Django的默认端口号:8000

                        3. 以后我们自己开发的软件,尽量使用8000之后的

常有软件的端口号:

应用程序

FTP(上传软件的)

TFTP

TELNET(连接的时候用)

SMTP(邮件,邮箱)

DNS(域名解析)

HTTP(浏览器)

SSH(终端连接工具)

MYSQL

熟知端口

21,20

69

23

25

53

80

22

3306

DNS:域名解析

        baidu.com

        jd.com

        ~~ 域名的本质其实就是IP地址,域名最终还是要解析成对应的IP地址,才能找到IP地址对应的计算机~~

# 文件的后缀名是给我们看到,文件可以有后缀名也可以没有,linux中,一切皆文件

        1. 先从你自己电脑上的host文件中查找

        2. 如果host文件没有找到对应的关系,在去对应平台的关系中去找

        3. 域名是需要去购买的,并且是需要备案的

应用层:

        才是跟我们程序员离的最近的一层

        1. 客户端,想用什么协议就用什么协议,客户端使我们自己开发的

        2. 浏览器,我们就不能随便使用协议了,就要按照浏览器协议,HTTP协议

        3. HTTP协议

            HTTPS协议

                网址:https://www.baidu.com/?tn=49055317_42_hao_pg

                            (协议: / /  域名:端口/v1/v2?参数)与上解释

                 http特征:

                                 1. 不安全,因为经过http协议的数据都是明文传输的

                  https特征:

                                   2. 安全,经过https协议传输的数据都是密文传输

                                https = http + ssl 证书

·                                ssl证书:要去机构申请,国际组织,怎么用呢?

                                NGINX服务器,需要在nginx服务器的配置文件中配置一些代码才能使用

                        

TCP协议和UDP协议(重要):

 TCP协议的三次握手和四次挥手

TCP协议也叫可靠协议,流式协议(数据是可以分多次发送的)

        三次握手------------------>为了建立连接

        四次挥手------------------->断开连接

TCP协议的三次握手为什么可以保证数据安全?是因为建立了双向通道吗?

        原因:TCP协议的反馈机制

  ~~  客户端与服务器之间一定是客户端先向服务端发起请求,而不能反回~~

# 特殊情况:服务端可以主动向客户端发起请求   websocket协议,一般用在即时通信软件中

UDP协议:

        1. 不建立双向链接,也没有三次握手

        2. 速度快

面式题:

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值