day38 软件开发架构-客户端

day 37 网络编程

今日学习

软件开发架构

  • 1.什么是软件开发架构

编写项目之前需要遵循的代码层面上的规范(代码运行的流程,环节,步骤)
  • 2.软件开发架构

    C/S 客户端 - 服务端

    B/S 浏览器 - 服务端 本质也是c/s 架构

    客户端顾名思义就是app,服务端就是24小时不停提供服务的服务层


  • 3.服务端的特征:

    1.24小时不间断提供服务

    2.固定的地址(不能经常改变)

    3.可以同一时间服务很多人


  • 4.架构的优劣

    cs 架构

    ​ 优势:下载对应的客户端,可以在客户端软件内高度定制相关服务

    ​ 劣势:使用必须先下载客户端,比较繁琐

    bs架构

    ​ 优势: 不需要下载客户端,能够快速体验服务

    ​ 劣质:定制花里胡哨的功能较为繁琐


架构发展趋势

  • 再次申明: 上述架构与我们之前所学的三层架构其实一样

发展趋势:统一接口原则

微信
	里面有很多小程序 可以直接体验其他服务
支付宝
	里面有恁多小程序 可以直接体验其他服务

后续就是csbs交错使用 避免各自的劣势!!! 比如抖音
ps:可以方便用户使用 更重要的是可以给自己圈用户便于后期收割


网络编程简介

  • 1.如何理解网络编程

基于互联网编写代码 程序可以实现远程数据交互
  • 2.网络编程的目的

网络编程的本质是为了解决计算机之间远程数据交互
  • 3.网络编程的意义

学习完网络编程之后 我们就可以编写一个c/s架构的软件
  • 4.网络编程的起源

军事,美国军方 数据通讯
  • 5.网络编程的要求

计算机直接想要实现远程数据交互,首要条件就是要有物理连接介质

网络相关名词

  • 1交换机

    能够让接入交换机的多台计算机实现彼此互联


  • 2.以太网通信(mac通信)

    原理
    ​ 有了交换机之后 根据电脑的mac地址就可以实现数据交互

    接入交换机的设备过多可能会造成广播风暴

    一对一主机 进行数据传输 单播

    一对所有主机发送数据包 广播


  • 3.广播

    主机之间“一对所有”的通讯模式,网络对其中每一台主机发出的信号都进行无条件复制并转发,所有主机都可以接收到所有信息(不管你是否需要),由于其不用路径选择,所以其网络成本可以很低廉。有线电视网就是典型的广播型网络,我们的电视机实际上是接受到所有频道的信号,但只将一个频道的信号还原成画面。在数据网络中也允许广播的存在,但其被限制在二层交换机的局域网范围内,禁止广播数据穿过路由器,防止广播数据影响大面积的主机。


  • 4.广播风暴

    简单来说广播数据充斥网络无法处理,并且占用大量带宽,导致业务不能正常运行,甚至瘫痪

    导致原因:

    ​ 网络蠕虫,或者交换机故障,网络拓扑设计的问题


  • 5.局域网

    有某个固定区域组成的网络
    广域网可以看成是更大区域的局域网


  • 路由器

    将多个局域网连接到一起的设备


OSI七层模型

规定了计算机涉及到数据远程交互的时候 必须要经过的部件/流程
​ 所有的计算机在涉及到网络传输这块必须要有相同的零部件

osi七层模型 或者分为TCP/IP 五层 或者四层


image


image

七层协议的分层功能【从下到上】

物理层: 建立,维护,断开物理连接

数据链路层:建立逻辑链接,进行硬件地址寻址,差错校验等功能

网络层: 进行逻辑地址寻址,实现不同网络之间的路径选择

传输层: 定义传输协议端口号,流量控制和差错校验

会话层 建立,管理,中止会话

表示层: 数据的表示(文字,图片,mp4)安全,压缩

应用层: 网络服务与最终用户的一个接口


四层的传输特征 从下往上的顺序

数据发送出去的时候是从上往下走

数据接收回来的时候是从下往上走


  • 物理层

    特点:保证物理连接介质的条件 传递电信号(主要研究插网线情况)

    解决比特流的传输


  • 数据链路层

    简单理解:规定了电信号的分组方式,规定了每台计算机必须有网卡;

    流量控制,寻址,

    网上必须有一串记录 >>>: 电脑的以太网址

    mac地址 :12位16进制数组成的,前6位:产商编号 后6位:生产流水线号

    既然mac地址相当于电脑的身份证,也就意味着可以根据该地址查找计算机(基于mac地址实现数据交互)


  • 网络层

    IP协议
    规定了任何接入互联网的计算机都必须有一个IP地址(护照)

    iP地址
    
    IPV4:点分十进制
       最小: 0.0.0.0
       最大: 255.255.255.255
      ps:随着社会的发展 同时能够上网的人越来越多 上述地址不够分
    

     IPV6:
              能够给地球上每一粒沙分一个IP地址
    	IP特征
        	每个IP都自带定位
         	ps:ip代理!!!
    
    1.什么是网址
    	网址(URL):统一资源定位符
    2.url的本质
    	其实就是IP+PORT(ip:port)
        	www.baidu.com 				124.12.11.232
    
  • 传输层

    PORT协议

    端口协议:规定了一台计算机上的每一个正在运行的应用程序都必须有一个
    端口号,端口号相当于是计算机用来管理多个应用程序的标记
    

    端口号特征

    1.端口号范围:0-65535
    2.端口号是动态分配的
    3.同一时间同一台计算机端口号不能冲突
    0-1024:一般是操作系统内部需要使用的
    1024-8000:一般是常见的软件已经使用了
    8000+:我们平时写代码可以使用8000之后的端口号
    

域名解析过程

.浏览器先检查自身缓存中有没有被解析过的这个域名对应的ip地址,如果有,解析结束。

2.如果浏览器缓存中没有(专业点叫还没命中),浏览器会检查操作系统缓存中有没有对应的已解析过的结果。而操作系统也有一个域名解析的过程。在windows中可通过c盘里一个叫hosts的文件来设置,如果你在这里指定了一个域名对应的ip地址,那浏览器会首先使用这个ip地址。

但是这种操作系统级别的域名解析规程也被很多黑客利用,通过修改你的hosts文件里的内容把特定的域名解析到他指定的ip地址上,造成所谓的域名劫持。所以在windows7中将hosts文件设置成了readonly(只读),防止被恶意篡改。

3.如果至此还没有命中域名,才会真正的请求本地域名服务器(LDNS)来解析这个域名,这台服务器一般在你的城市的某个角落,距离你不会很远,并且这台服务器的性能都很好,一般都会缓存域名解析结果,大约80%的域名解析到这里就完成了。

4.如果LDNS仍然没有命中,就直接跳到Root Server 域名服务器请求解析

5.根域名服务器返回给LDNS一个所查询域的主域名服务器(gTLD Server,国际顶尖域名服务器,如.com .cn .org等)地址

6.此时LDNS再发送请求给上一步返回的gTLD

7.接受请求的gTLD查找并返回这个域名对应的Name Server的地址,这个 Name Server就是网站注册的域名服务器

8. Name Server根据映射关系表找到目标ip,返回给LDNS

9.LDNS缓存这个域名和对应的ip

10.LDNS把解析的结果返回给用户,用户根据TTL值缓存到本地系统缓存中, 域名解析过程至此结束

TCP/IP

  • TCP3次握手

所谓三次握手(Three-way Handshake),是指建立一个TCP连接时,需要客户端和服务器总共发送3个包。
三次握手的目的是连接服务器指定端口,建立TCP连接,并同步连接双方的序列号和确认号并交换 TCP 窗口大小信息.在socket编程中,客户端执行connect()时。将触发三次握手。

img

  • tcp4次挥手

三次握手是建立TCP连接,四次挥手是断开TCP连接,即客户端和服务端总共要收发4个包才能确定断开连接。

img

  • 1.为什么建立连接协议是三次握手,而关闭连接却是四次握手呢?

这是因为服务端的LISTEN状态下的SOCKET当收到SYN报文的连接请求后,它可以把ACK和SYN(ACK起应答作用,而SYN起同步作用)放在一个报文里来发送。但关闭连接时,当收到对方的FIN报文通知时,它仅仅表示对方没有数据发送给你了;但未必你所有的数据都全部发送给对方了,所以你可能未必会马上会关闭SOCKET,也即你可能还需要发送一些数据给对方之后,再发送FIN报文给对方来表示你同意现在可以关闭连接了,所以它这里的ACK报文和FIN报文多数情况下都是分开发送的。

posted @ 2022-08-04 16:54  名字长的像一只老山羊  阅读(104)  评论(0编辑  收藏  举报