Day27 网络编程(一)

时间:2021-08-30 09:06:09

1.软件开发架构

  c/s架构(client/server)

    c:客户端

    s:服务端

  客户端泛指的是应用程序,程序需要先安装后,才能运行在用户的电脑上,对操作系统依赖较大

  Day27 网络编程(一)

 

  b/s架构(browser/server)

    b:浏览器

    s:服务器

  不需要安装应用程序,只需要在浏览器访问相关的网页,就能进行正常的操作.

  Day27 网络编程(一)

 

  ps:b/s架构的本质也是c/s架构

在手机端中大部分使用的都是c/s架构,但是b/s架构正在大量的运用,如:微信小程序,支付宝的接口

 

2.互联网协议

  两台计算机之间要互相连接只需要一个网线两个接口就行了,但是设备增多之后就需要增加个交换机来实现,这些连接在交换机的设备就形成了一个局域网,多个局域网通过路由器连接就形成了小型的互联网,互联网就是全世界的局域网相连

  而这些连接在互联网中的设备不可能都是制造商们按照自己的意愿设计的,他们一定是遵循了某种标准或者说协议,才能互相的进行通信,访问不同的数据.

  不同国家不同地区的人想要进行交流需要有一个统一的通信标准,这就是英语,而不同计算机之间需要通信也需要有统一的标准,这个统一的标准就是互联网协议,互联网的本质就是一系列的协议

  互联网协议的功能:定义计算机如何接入Internet,以及接入Internet的计算机通信的标准

 

3.osi七层协议

互联网协议按照功能不同分为osi七层或者tcp/ip五层或者tcp/ip四层

Day27 网络编程(一)

我们将七层协议简化为五层协议,他们分别是应用层,传输层,网络层,数据链路层,物理连接层

这几层越往上越靠近用户,越往下越靠近硬件

3.1物理层

物理层的主要功能是基于电信号的高低电平发送01010001形式二进制数据,高电平代表1,低电平代表0

3.2数据链路层

数据链路层主要规定了两个东西

  1.定义了电信号的分组方式

  单纯的电信号011001010并没有任何的意义,我们必须规定电信号多少位一组,每组的意思是什么

  2.规定接入Internet的设备必须具备网卡,并且每块网卡在出厂时都被烧制上了全世界唯一的mac地址

  mac地址通常由12位16进制数来表示,前六位是生产商编号,后六位是流水线号

  这两点合称为'以太网协议',交换机就是基于以太网协议通信,不能跨局域网通信

广播通信:当我们有了mac地址,同一网络的两台主机就可以通过arp协议进行通信了,但是只能使用广播的方式,即通信基本靠吼

Day27 网络编程(一)

 

3.3网络层

  当我们有了mac地址之后,一台计算机需要通信时,会在局域网了其他所有的计算机发送信息,而只有他需要找的那台计算机才会回复,其他计算机并不会响应,如果世界上的所有计算机都使用广播的方式进行通信,那么一台计算机发送的消息全世界都会接收到,这显然是不可取的.

Day27 网络编程(一)

  网络层引入一套新的地址来区分不同的广域网/子网,这套地址就是网络地址,规定网络地址的协议就是ip协议

  ip协议规定了只要是接入互联网的计算机都必须有一个ip地址

    ①ip地址的特点:点分十进制

    ②ip地址最小:0.0.0.0,ip地址最大:255.255.255.255

    ③ip地址有两个版本:ipv4和ipv6,由于ipv4已经不够表示目前的计算机,所以推出了ipv6

    ④ip地址是动态分配的

 

3.4传输层

  网络层的ip帮我们区分子网,以太网的mac层帮我们找到主机,但是我们使用的都是应用程序,我们找到了特定的主机之后,怎么再找到对应的应用程序,这就需要用到端口,端口就是应用程序和网卡关联的编号

  端口:用来唯一标识一台计算机上的某个应用程序

    ①端口的范围:0-65535

    ②注意:0-1023是系统的占用端口,建议使用8000以后的端口

    ③端口号是动态分配的

    ④MySQL默认端口:3306

    ⑤Redis默认端口:6379

    ⑥diango默认端口:8000

    ⑦flask默认端口:5000

传输层还有两个重要的传输协议,tcp协议和udp协议

  tcp协议:

    流式协议,可靠协议,面向连接的协议,传输效率低全双工通信,面向字节流

    使用tcp的应用:电子邮件,文件传输程序

   tcp的三次握手和四次挥手

  Day27 网络编程(一)

三次握手建立连接:客户端向服务端发起一个建立连接的请求(第一次握手),客户端回应同意并且同时也发起一个建立连接的请求(第二次握手),客户端再回复同意这个请求(第三次握手).

    Day27 网络编程(一)

四次挥手断开连接:客户端发起一个断开连接的请求(第一次挥手),服务器收到之后回复同意(第二次挥手),等到服务器传输完所有的数据之后再给客户端发送一个断开连接的请求(第三次挥手),客户端回复同意后断开连接(第四次挥手)

     Day27 网络编程(一)

三次握手是因为服务端在回复同意的时候同时发送了建立连接的请求,这两个操作合并为一次握手

四次挥手是因为服务端在回复同意的时候还要检测自己是否还有未发完给客户端的数据,只有在发完之后才会再发送请求,所以中间的两步不能合并

tcp协议可靠的原因:他有反馈机制,发送消息之后对方必须回复确认收到消息才会将数据从内存中清空,否则会在限定的时间内每隔一段时间发送一次

 

  udp协议:

    不可靠的,无连接的服务,传输效率高,面向报文,尽最大努力服务,无拥塞控制

    使用udp的应用:域名系统(DNS),视频流,ip语音(VolP)

 

3.5应用层

应用层的由来:用户使用的都是应用程序,都工作在应用层,而互联网都是开放的,大家都可以开发自己的应用程序,数据多种多样,必须规定好数据的组织形式

应用层的功能就是规定程序的数据格式

应用层的协议:HTTP协议,FTP协议