网络协议及原理

1、C/S和B/S架构

C/S:客户端-服务器架构

B/S:浏览器-服务器架构

2、URL是什么

统一资源定位符

  • 标准格式: 协议://服务器IP:端⼝/路径1/路径N ?key1=value1 & key2=value2
  • 协议:不同的协议有不同的解析⽅式
  • 服务器ip: ⽹络中存在⽆数的主机,要访问的哪⼀台,通过公⽹ip区分
  • 端⼝: ⼀台主机上运⾏着很多的进程,为了区分不同进程,⼀个端⼝对应⼀个进程,http默认的端⼝是80
  • 路径: 资源N多种,为了更进⼀步区分资源所在的路径(后端接⼝,⼀般称为 “接⼝路径”,“接⼝”)

3、http 超文本传输协议

协议:协议是⼀种约定,规定好⼀种信息的格式,如果发送⽅按照这种请求格式发送信息,那么接收端就要按照这样的格式解析数据,这就是协议

4、什么是http协议

超文本传输协议,是建立在tcp协议上的一种应用

显著特点是客户端发送的每次请求都需要服务器返回,从建立连接到关闭连接的过程称为一次连接

特点:

        应用层协议,使用tcp进行数据传输

        简单、灵活,多种语言具有http专门接口

        无状态,数据传输过程中不记录传输内容

        有丰富的请求类型

        可以传输多种数据类型

5、响应码

1xx:信息

2xx:200成功,请求正常

3xx:重定向

4xx:客户端错误404 not found

        服务器无法找到被请求的页面

5xx:服务器错误503,服务器挂了或者不可用

        服务器502网关错误

6、HTTP和HTTPS的关系

主要组成:http+SSL/TLS

比http安全,可防止数据在传输过程中部被窃取、修改,确保数据的完整性,增加破解成本

缺点:相同网络环境,HTTPS协议使页面的加载时间延长,增加额外的计算机资源消耗,不过利大于弊

如果是软件压测:直接压力测试内网IP,通过压测公⽹域名,不管是http还是https,都会带来额外的损耗导致结果不准确

7、http协议的请求结构

(1)请求行:具体请求类别和请求内容

	GET         /        HTTP/1.1
	请求类别   请求内容     协议版本

(2)请求头:对请求的进一步解释和描述

accept

content-type

语言

host

connection   

(3)空行

(4)请求体

8、http协议的响应结构

(1)响应行:反馈基本的响应情况

(2)响应头:对响应内容的描述

date

content-type

(3)空行

(4)响应体:响应的主体内容

9、http协议的九种请求方法介绍

http1.0定义了三种:

GET: 向服务器获取资源,⽐如常⻅的查询请求

POST: 向服务器提交数据⽽发送的请求Head: 和get类似,返回的响应中没有具体的内容,⽤于获取报头

http1.1定义了六种

PUT:⼀般是⽤于更新请求,⽐如更新个⼈信息、商品信息全量更新

PATCH:PUT ⽅法的补充,更新指定资源的部分数据

DELETE:⽤于删除指定的资源

OPTIONS: 获取服务器⽀持的HTTP请求⽅法,服务器性能、跨域检查等

CONNECT: ⽅法的作⽤就是把服务器作为跳板,让服务器代替⽤户去访问其它⽹⻚,之后把数据原原本本的返回给⽤户,⽹⻚开发基本不⽤这个⽅法,如果是http代理就会使⽤这个,让服务器代理⽤户去访问其他⽹⻚,类似中介

TRACE:回显服务器收到的请求,主要⽤于测试或诊断

10、OSI七层模型

 tcp/ip模型

11、什么是网络协议

网络数据传输中,需要遵循的一种执行规则

ipv4  ipv6

  • IP地址 : 即在网络中标识一台计算机的地址编号。

  • IP地址分类

    • IPv4 : 192.168.1.5
    • IPv6 :fe80::80a:76cf:ab11:2d73
  • IPv4 特点

    • 分为4个部分,每部分是一个整数,取值分为0-255
  • IPv6 特点(了解)

    • 分为8个部分,每部分4个16进制数,如果出现连续的数字 0 则可以用 ::省略中间的0

12、查看IP地址的命令

Linux系统:ifconfig、ping[ip]

windows:ipconfig

端口号

网络地址的一部分,0-65535,tcp有65536个端口,udp也是65535

2的16次方个

13、UDP协议传输特点

可能会出现数据丢失

传输过程简单,实现起来容易

数据以数据包的形式传输

数据传输效率高

14、TCP协议传输特点

面向连接的传输服务

        传输特征:可靠数据传输,可靠性指的是数据无丢失、无失序、无差错、无重复

        可靠性如何保证:通信前建立连接、确认应答机制、通信结束正常断开连接

15、三次握手(建立连接)

        客户端向服务器发送消息报文syn请求连接

        服务器接收请求后,回复报文syn+ack,确定可以连接

        客户端收到回复报文,发送最终报文连接建立

16、 四次挥手(断开连接)

客户端和服务端都可以是主动方,另一方就是被动方

主动方发送报文给被动方,请求断开连接

被动方接收报文,立即回复,准备断开连接

被动方准备完成,再次发送报文表示可以断开了

主动方收到确认可以断开后,发送最终报文完成断开

17、tcp粘包

原因:tcp是字节流数据传输,数据在传输过程中,收发的速度不一致导致

发送时没有消息边界

解决办法:人为的添加消息边界,分割消息,控制发送的速度

18、TCP和UDP对比

可靠数据传输不可靠的数据传输
字节流数据包
需要建立连接不需要建立连接

数据量大而且准确的场景

文件传输

邮件收发

点对点传输

传输数据小,对可靠性要求低的场景

视频流传输如直播、视频聊天

广播如网络广播

实时传输如游戏的画面

19、什么是进程

程序在计算机中一次执行过程,是动态的过程描述

20、进程模块

multiprocessing

21、进程的状态

三态

        就绪:进程具备执行的条件,等待系统调度分配CPU资源

        运行:进程占用CPU正在运行

        等待:进程被阻塞,此时让出CPU资源

五态

        新建:创建一个进程,获取资源的过程

        终止:结束一个进程,释放资源的过程

22、常用的进程命令

ps -aux

  • USER : 进程的创建者
  • PID : 操作系统分配给进程的编号,大于0的整数,系统中每个进程的PID都不重复。PID也是重要的区分进程的标志。
  • %CPU,%MEM : 占有的CPU和内存
  • STAT : 进程状态信息,S I 表示阻塞状态 ,R 表示就绪状态或者运行状态
  • START : 进程启动时间
  • COMMAND : 通过什么程序启动的进程

进程树形结构展示

pstree

23、什么是孤儿进程

父进程在子进程之前退出,子进程就变成孤儿进程

系统进程自动收养子进程,孤儿进程退出系统进程会自动处理

24、什么是僵尸进程

子进程在父进程之前退出,父进程又没有处理子进程的退出,子进程就变成僵尸进程

僵尸进程太多会浪费大量的系统资源

25、如何避免僵尸进程产生

使用join()回收

在父进程使用signal方法处理

26、为什么要创建进程池

单个进程创建和销毁消耗的资源多

任务很多而且任务在短时间完成,需要频繁创建和销毁

导致计算机压力大,进程池能解决此问题

27、进程池的原理

创建一定数量的进程来处理多个事件,事件处理完进程不退出,继续处理事件,直到所有的事件都处理完成,统一退出进程,降低资源消耗/28进程如何通信

进程空间独立,资源不共享,如果要在进程间进行数据传输就需要特殊手段

比如消息队列、套接字等

29、什么是线程

线程被称为轻量级的进程

也可以利用计算机的多CPU资源

线程可以理解为进程中的分支任务

30、线程的特征

一个进程包含多个线程

线程也是动态的,一种运行行为,消耗计算机资源

一个进程中的多个线程,共享此进程的资源

多个线程之间各自独立运行,互不影响

线程创建和销毁的资源远小于进程

31、线程的模块

threading

32、线程如何通信

线程之间使用全局变量进程通信

33、共享资源争夺

多个进程或线程都能操作的资源被称为共享资源,对共享资源操作的代码被称为临界区

带来的影响:对共享资源的无序操作会带来混乱,或者操作错误,需要同步互斥机制协调顺序

34、同步互斥机制

同步:多进程或多线程之间协调,按照必要的步骤有序执行操作,协助关系

互斥:当进程或线程正在使用资源的时候,会对资源加锁,其他的进线程就无法操作,直到解锁,制约关系

35、死锁的概念

死锁:指的是两个或多个线程在执行过程中,竞争资源或者彼此通信造成的阻塞现象,如果没有外力干扰,都会被阻塞的状态被称为死锁状态

36、什么条件下会产生死锁

互斥条件:线程使用互斥方法,使用资源并加锁

请求和保持条件:线程在操作一个资源的同时,还去操作另外的资源,在获取新资源时不释放自己保持的资源

不剥夺条件:没有线程外部干扰,比如系统强制终止线程

环路等待:发发生死锁,线程之间必然存在一个资源的环形链,如 T0正在等待一个T1占用的资源;T1正在等待T2占用的资源,……,Tn正在等待已被T0占用的资源。

37、如何避免死锁

逻辑清晰,不要同时出现死锁的4个条件

测试工程师进行死锁检测

38、GIL全局解释器锁

什么是GIL

由于python解释器设计中加入了解释器锁,导致python解释器同一时刻只能解释执行一个线程,大大降低了线程的执行效率

导致后果 因为遇到阻塞时线程会主动让出解释器,去解释其他线程。所以python多线程在执行多阻塞任务时可以提升程序效率,其他情况并不能对效率有所提升

结论

  • GIL问题与Python语言本身并没什么关系,属于解释器设计的历史问题。
  • 在无阻塞状态下,多线程程序执行效率并不高,甚至还不如单线程效率。
  • Python多线程只适用于执行有阻塞延迟的任务情形

39、进程与线程的区别及关系

两者都都是多任务编程方式,可以使用计算机多核资源

进程的创建销毁消耗的资源远大于线程

进程空间独立,数据互不干扰,专门通信办法如消息队列、套接字;线程通信使用全局变量

一个进程可以有多个分支线程,包含关系

多个线程共享进程资源,在操作共享资源时存在同步互斥机制

Python存在GIL全局解释器锁,进程没有

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值