第二部分--网络编程和并发解答
1. 简述 OSI 七层协议。

2. 什么是C/S和B/S架构?
- C/S架构(需要安装应用程序使用的软件) c client 客户端 s server 服务端 - B/S架构(可以通过浏览器使用的) b broser 浏览器 s server 服务端 不需要额外的安装客户端了,只需要一个网址就可以访问 轻量级,使用成本低
3. 简述 三次握手、四次挥手的流程。
建立TCP连接的三次握手: 首先Client端发送连接请求报文,Server段接受连接后回复ACK报文,并为这次连接分配资源。Client端接收到ACK报文后也向Server段发送ACK报文,并分配资源,这样TCP连接就建立了。 断开连接的四次挥手: 第一次挥手:假设Client端发起中断连接请求,也就是发送FIN报文。Server端接到FIN报文后,意思是说"我Client端没有数据要发给你了",但是如果你还有数据没有发送完成,则不必急着关闭Socket,可以继续发送数据。 第二次挥手:server端送ACK,"告诉Client端,你的请求我收到了,但是我还没准备好,请继续你等我的消息"。这个时候Client端就进入FIN_WAIT状态,继续等待Server端的FIN报文。 第三次挥手:当Server端确定数据已发送完成,则向Client端发送FIN报文,"告诉Client端,好了,我这边数据发完了,准备好关闭连接了"。 第四次挥手:Client端收到FIN报文后,"就知道可以关闭连接了,但是他还是不相信网络,怕Server端不知道要关闭,所以发送ACK后进入TIME_WAIT状态,如果Server端没有收到ACK则可以重传。“,Server端收到ACK后,"就知道可以断开连接了"。Client端等待了2MSL后依然没有收到回复,则证明Server端已正常关闭,那好,我Client端也可以关闭连接了。Ok,TCP连接就这样关闭了!
4. 什么是arp协议?
ARP:地址解析协议(网络层)
作用:将逻辑IP地址解析为物理地址的协议(将IP地址翻译为以太网的MAC地址)
在局域网中,网络中实际传输的是“帧”,帧里面是有目标主机的MAC地址的。
在以太网中,一个主机要和另一个主机进行直接通信,必须要知道目标主机的MAC地址。
IP地址在OSI模型的第三层(网络层),MAC地址在第二层(数据链路层),
所谓“地址解析”就是主机在发送帧前将目标IP地址转换成目标MAC地址的过程。
ARP协议的基本功能就是通过目标设备的IP地址,查询目标设备的MAC地址,以保证通信的顺利进行。
逆向地址解析协议——RARP:在知道物理地址而不知道IP地址时,应该使用RARP。
5. TCP和UDP的区别?
tcp协议(传输控制协议)
全双工的通信协议
建立了专门穿送数据的通道(连接),是一个长连接
面向流的传输
传输速率比udp协议慢
数据安全不容易丢失(是一种可靠的传输)
大文件算法自己拆包编号发送
建立连接的 三次握手
断开连接的 四次挥手
udp协议(用户数据报协议)
是面向文件的传输,
是一种不可靠的
不需要建立连接,直接传送(传输通道)
传输速率比tcp协议高
不适合大文件的传输(文件过大会报错)
6. 什么是局域网和广域网?
局域网和广域网是按规模大小而划分的两种计算机网络。
范围在几千米以内的计算机网络统称为局域网(LAN、私网、内网)
而连接的范围超过10千米的,则称为广域网,因特网(Intenet)就是目前最大的广域网。(WAN、公网、外网、因特网)
7. 为何基于tcp协议的通信比基于udp协议的通信更可靠?
因为TCP协议建立了专门穿送数据的通道(连接),是一个长连接
UDP不需要建立连接,直接传送(传输通道)
只要不得到确认,就重新发送数据报,直到得到对方的确认为止。
通过三次握手建立连接,四次挥手断开连接,确保了数据的安全可靠,避免丢包
8.什么是socket?简述基于tcp协议的套接字通信流程。
#服务端:socket(),bind(),listen(),accept(),recv(),send(),close() 创建套接字 绑定IP和端口 监听 accept等待连接 通信(收recv、发send) #客户端:socket(),connect(),send(),recv(),close() 创建套接字 绑定IP和端口 链接服务器 通信(收revc、发send)
基于TCP的Socket示例9.什么是粘包? socket 中造成粘包的原因是什么? 哪些情况会发生粘包现象?
1.什么是黏包: 数据粘在一起 2.为什么会出现黏包现象: 首先只有在tcp协议中才会出现黏包现象 是因为tcp协议是面向流传输的协议,UDP协议是面向文件的传输 在发送数据传输的过程中还有缓存机制来避免数据丢失 因此在连续发送小数据的时候,以及接收大小不符合的时候都容易出现黏包现象 本质还是因为我们在接收数据的时候不知道发送的数据的长短 3.解决黏包问题的方案: a、在传输大量数据之前先高数接收端要发送的数据的大小 b、通过struct模块来定制协议
10.IO多路复用的作用?
# IO多路复用分为时间上的复用和空间上的复用, # 空间上的复用是指将内存分为几部分,每一部分放一个程序,这样同一时间内存中就有多道程序; # 时间上的复用是指多个程序需要在一个cpu上运行,不同的程序轮流使用cpu, # 当某个程序运行的时间过长或者遇到I/O阻塞,操作系统会把cpu分配给下一个程序, # 保证cpu处于高使用率,实现伪并发。
11.什么是防火墙以及作用?
# 什么是防火墙? 防火墙是一个分离器,一个限制器,也是一个分析器, 有效地监控了内部网和Internet之间的任何活动,保证了内部网络的安全。 # 作用 防火墙可通过监测、限制、更改跨越防火墙的数据流, 尽可能地对外部屏蔽网络内部的信息、结构和运行状况,以此来实现网络的安全保护。
12.select、poll、epoll 模型的区别?
select本质上是通过设置或者检查存放fd标志位的数据结构来进行下一步处理。这样所带来的缺点是: 1.单个进程可监视的fd数量被限制 2.需要维护一个用来存放大量fd的数据结构 这样会使得用户空间和内核空间在传递该结构时复制开销大 3.对socket进行扫描时是线性扫描 poll本质上和select没有区别,它将用户传入的数组拷贝到内核空间, 它没有最大连接数的限制,原因是它是基于链表来存储的但是同样有一个缺点: 大量的fd的数组被整体复制于用户态和内核地址空间之间,而不管这样的复制是不是有意义。 epoll支持水平触发和边缘触发,最大的特点在于边缘触发, 它只告诉进程哪些fd刚刚变为就需态,并且只会通知一次。
13. 简述 进程、线程、协程的区别 以及应用场景?
14. GIL锁
15. Python中如何使用线程池和进程池?
16. threading.local的作用?
17. 进程之间如何通信
进程间通讯有多种方式,包括信号,管道,消息队列,信号量,共享内存,socket等
18. 什么是并发和并行
并发:同一时刻只能处理一个任务,但一个时段内可以对多个任务进行交替处理(一个处理器同时处理多个任务)
并行:同一时刻可以处理多个任务(多个处理器或者是多核的处理器同时处理多个不同的任务)
类比:并发是一个人同时吃三个馒头,而并行是三个人同时吃三个馒头。
19. 进程锁和线程锁的作用?
20. 解释什么是异步非阻塞
21.路由器和交换机的区别
22. 什么是域名解析
23. 如何修改本地host文件
24. 生产者消费者模型应用场景及优势
25.什么是cdn
26. LVS是什么及作用
27.Nginx是什么及作用
28. Keepalived是什么及作用

浙公网安备 33010602011771号