标签:future exec send add 报文 int 数据包 区别 没有
简述 OSI 7层模型及其作用?(2分)
应用层:要发送的数据 HTTP/https协议
表示层
会话层
传输层:定义端口,TCP/UDP协议,四层交换机,四层路由器
网络层:IP协议,路由器,三层交换机
数据链路层:mac arp协议,网卡,交换机(二层交换机)
物理层:建立,维护,断开物理连接
简述 TCP三次握手、四次回收的流程。(3分)
三次握手
client端将标志位SYN置为1,随机产生一个值sqe=J,并将该数据包发给server端,client端进入SYN_SENT状态,等待server端确认
server端收到数据包后,由SYN=1得知client要建立连接,server将标志位和ACK都置为1,确认client端的SYN(ack=j+1,ack是确认数据),随机产生一个值seq=K,将该数据包发给client端以确认连接请求,server端进入SYN_RECV状态
client端收到后,检查ack是否为J+1,ACK是否为1,如果正确,则将标志位ACK置为1,ack=k+1,并将数据包发送给server,server检查ack是否为K+1,ACK是否为1,如果正确则建立连接
四次挥手
client向server发送fin的标记报文,请求断开
server收到后,可能正在处理数据,此时向client发送ack报文
server端处理完数据后,再次向client端发送fin报文,此时可以断开连接
client端收到后,向server端发送ack报文,确认可以断开连接
TCP和UDP的区别?(3分)
TCP需要连接才能收发消息
可靠
速度慢
面向连接
全双工
流式传输
可传输大文件
适用于:文件传输,实时通信,邮件等
UDP不需要连接就可收发消息
不可靠
速度快
无链接
面向数据报
传输数据大小受限
可多次发送消息
多人通信
适用于:即时通讯工具
什么是黏包?(2分)
TCP协议特有
由于数据与数据之间是没有边界的,所以可能多个数据合在一起,叫做黏包
可能发生在:
客户端:client端处理/接收数据慢,造成多条数据黏包,或者接收的长度小于一次发送的长度
服务端:server端发送两条数据间隔时间太短,造成两条数据黏在一起
什么 B/S 和 C/S 架构?(2分)
浏览器/服务器架构:有浏览器就可以使用
也是C/S架构的一种
节省资源
不用更新
不依赖环境
客户端/服务器架构:需要下载客户端才可使用
安全性高
程序一般较大
请实现一个简单的socket编程(客户端和服务端可以进行收发消息)(3分)
# server
import socket
?
sk = socket.socket()
sk.bind(("127.0.0.1",8888))
sk.listen()
?
conn,addr = sk.accept()
msg = conn.recv(1024).decode("utf-8")
print(msg)
conn.close()
sk.close()
?
# client
import socket
?
sk = socket.socket()
sk.connect(("127.0.0.1",8888))
sk.send("你好!".encode("utf-8"))
sk.close()
简述进程、线程、协程的区别?(3分)
进程是计算机分配资源的最小单位
线程是能被cpu调度的最小单位
协程是不存在的,是程序员基于代码实现的
进程之间不能共享资源,但可以通过文件/队列/网络实现资源共享
一个进程中至少有一个线程
一个进程中可以有多个线程,同一进程中的线程可以资源共享
一个线程中可以有多个协程
计算密集型用多进程
io密集型用多协程/多线程
什么是GIL锁?(2分)
全局解释器锁
同一时刻一个进程中只有一个线程可以被cpu调度
进程之间如何进行通信?(2分)
通过文件/网络/队列实现通信
Python如何使用线程池、进程池?(2分)
from concurrent.futures import ThreadPoolExecutor
?
pool = ThreadPoolExecutor(10)
?
def func():
print(11)
for i in range(10):
pool.submit(func)
pool.shutdown(True)
from concurrent.futures import ProcessPoolExecutor
?
pool = ProcessPoolExecutor(10)
?
def func():
print(22)
for i in range(10):
pool.submit(func)
pool.shutdown(True)
标签:future exec send add 报文 int 数据包 区别 没有
原文地址:https://www.cnblogs.com/hrose/p/12371385.html