拿着阿里师兄精心整理 170 道 Python 面试题,我已成功上岸【综合篇:网络编程】

AI权益加码!Claude Code、Cursor等20+工具免费用! 购周边限时加赠Coding Plan Lite,畅享主流AI工具!学习进阶更高效! 阅读详情
  • 上篇:靠着阿里师兄给的170 道 Python 面试题,我已成功上岸【Python基础篇】

  • 综合篇:网络编程

    • 101. 简述 OSI 七层协议

    • 102. 三次握手、四次挥手的流程

    • 103. 什么是 C/S 和 B/S 架构

    • 104. TCP 和 UDP 的区别

    • 105. 局域网和广域网

    • 106. arp 协议

    • 107. 什么是 socket?简述基于 TCP 协议的套接字通信流程

    • 108. 简述 进程、线程、协程的区别以及应用场景

    • 109. 如何使用线程池和进程池

    • 110. 进程之间如何进行通信

    • 111. 进程锁和线程锁

    • 112. 什么是并发和并行

    • 113. threading.local 的作用

    • 114. 什么是域名解析

    • 115. LVS 是什么及作用

    • 116. Nginx 的作用

    • 117. keepalived 及 HAProxy

    • 118. 什么是 rpc

    • 119. 从浏览器输入一个网址到展示网址页面的过程

    • 120. 什么是cdn

综合篇:网络编程

101. 简述 OSI 七层协议

是网络传输协议,人为的把网络传输的不同阶段划分成不同的层次

七层划分为:应用层、表示层、会话层、传输层、网络层、数据链路层、物理层

五层划分为:应用层、传输层、网络层、数据链路层、物理层

物理层:网线,电缆等物理设备

数据链路层:Mac 地址

网络层:IP 地址

传输层:TCP,UDP 协议

应用层:FTP 协议,Email,WWW 等

102. 三次握手、四次挥手的流程

都发生在传输层

三次握手:

TCP 协议是主机对主机层的传输控制协议,提供可靠的连接服务,采用三次握手确认建立一个连接。TCP 标志位(位码),有6种标示:SYN(synchronous建立联机) ACK(acknowledgement 确认) PSH(push传送) FIN(finish结束) RST(reset重置) URG(urgent紧急) Sequence number(顺序号码) Acknowledge number(确认号码) 第一次握手:主机 A 发送位码为 syn=1,随机产生 seq number=1234567 的数据包到服务器,并进入 SYN_SEND 状态,主机 B 由 SYN=1 知道,A 要求建立联机

第二次握手:主机 B 收到请求后要确认联机信息,向 A 发送 ack number=(主机 A 的 seq+1),syn=1,ack=1,随机产生 seq=7654321 的包,并进入 SYN_RECV 状态

第三次握手:主机 A 收到后检查 ack number 是否正确,即第一次发送的 seq number+1,以及位码 ack 是否为 1,若正确,主机 A 会再发送 ack number=(主机 B 的 seq+1),ack=1,主机 B 收到后确认 seq 值与 ack=1 则连接建立成功,两个主机均进入 ESTABLISHED 状态

以上完成三次握手,主机 A 与主机 B 开始传送数据

四次挥手:

因为 TCP 连接是全双工的,因此每个方向都必须单独进行关闭。这个原则是当一方完成它的数据发送任务后就能发送一个 FIN 来终止这个方向的连接。收到一个 FIN 只意味着这一方向上没有数据流动,一个 TCP 连接在收到一个 FIN 后仍能发送数据。首先进行关闭的一方将执行主动关闭,而另一方执行被动关闭

服务器 A 发送一个 FIN,用来关闭 A 到服务器 B 的数据传送。服务器 B 收到这个 FIN,它发回一个 ACK,确认序号为收到的序号加1。和 SYN 一样,一个 FIN 将占用一个序号

服务器 B 关闭与服务器 A 的连接,发送一个 FIN 给服务器 A

服务器 A 发回 ACK 报文确认,并将确认序号设置为收到序号加1

103. 什么是 C/S 和 B/S 架构

B/S 又称为浏览器/服务器模式。比如各种网站,jupyter notebook 等。优点:零安装,维护简单,共享性好。缺点:安全性较差,个性化不足

C/S 又称为客户端/服务器模式。比如微信客户端,Oracle 客户端等。优点:安全性好,数据传输较快,稳定。缺点:对 PC 机操作系统等有要求,当客户端较多时,服务器端负载较大

104. TCP 和 UDP 的区别

TCP 和 UDP 都是 OSI 模型中运输层的协议。TCP 提供可靠的通信传输,而 UDP 则常被用于广播和细节控制交给应用的通信传输。UDP 不提供复杂的控制机制,利用 IP 提供面向无连接的通信服务。TCP 充分实现了数据传输时各种控制功能,可以进行丢包的重发控制,还可以对次序乱掉的分包进行顺序控制

TCP 应用:FTP 传输,点对点短信等

UDP 应用:媒体流等

105. 局域网和广域网

广域网(WAN,Wide Area Network)也称远程网(long haul network )。通常跨接很大的物理范围,所覆盖的范围从几十公里到几千公里,它能连接多个城市或国家,或横跨几个洲并能提供远距离通信,形成国际性的远程网络

域网(Local Area Network,LAN)是指在某一区域内由多台计算机互联成的计算机组。一般是方圆几千米以内。局域网可以实现文件管理、应用软件共享、打印机共享、工作组内的日程安排、电子邮件和传真通信服务等功能。局域网是封闭型的,可以由办公室内的两台计算机组成,也可以由一个公司内的上千台计算机组成

106. arp 协议

ARP(Address Resolution Protocol)即地址解析协议, 用于实现从 IP 地址到 MAC 地址的映射,即询问目标 IP 对应的 MAC 地址

107. 什么是 socket?简述基于 TCP 协议的套接字通信流程

socket 是对 TCP/IP 协议的封装,它的出现只是使得程序员更方便地使用 TCP/IP 协议栈而已。socket 本身并不是协议,它是应用层与 TCP/IP 协议族通信的中间软件抽象层,是一组调用接口(TCP/IP网络的API函数)

“TCP/IP 只是一个协议栈,就像操作系统的运行机制一样,必须要具体实现,同时还要提供对外的操作接口。 这个就像操作系统会提供标准的编程接口,比如win32编程接口一样。TCP/IP 也要提供可供程序员做网络开发所用的接口,这就是 Socket 编程接口。”

Server:

 import socket
 import threading
 def tcplink(sock, addr):
     print('Accept new connection from %s:%s...' % addr)
     sock.send(b'Welcome!')
     while True:
         data = sock.recv(1024)
         time.sleep(1)
         if not data or data.decode('utf-8') == 'exit':
            break
        sock.send(('Hello, %s!' % data.decode('utf-8')).encode('utf-8'))
    sock.close()
    print('Connection from %s:%s closed.' % addr)

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# 监听端口:
s.bind(('127.0.0.1', 9999))
s.listen(5)
print('Waiting for connection...')
while True:
    # 接受一个新连接:
    sock, addr = s.accept()
    # 创建新线程来处理TCP连接:
    t = threading.Thread(target=tcplink, args=(sock, addr))
    t.start()

Client:

 import socket
 s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
 # 建立连接:
 s.connect(('127.0.0.1', 9999))
 # 接收欢迎消息:
 print(s.recv(1024).decode('utf-8'))
 for data in [b'Michael', b'Tracy', b'Sarah']:
     # 发送数据:
     s.send(data)
    print(s.recv(1024).decode('utf-8'))
s.send(b'exit')
s.close()

例子来源于廖雪峰的官网

108. 简述 进程、线程、协程的区别以及应用场景

进程是具有一定独立功能的程序关于某个数据集合上的一次运行活动,进程是系统进行资源分配和调度的一个独立单位。每个进程都有自己的独立内存空间,不同进程通过进程间通信来通信

线程是进程的一个实体,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位。线程自己基本上不拥有系统资源,只拥有一点在运行中必不可少的资源(如程序计数器,一组寄存器和栈),但是它可与同属一个进程的其他的线程共享进程所拥有的全部资源

协程是一种用户态的轻量级线程,协程的调度完全由用户控制。协程拥有自己的寄存器上下文和栈

多进程:密集 CPU 任务,需要充分使用多核 CPU 资源(服务器,大量的并行计算)的时候,用多进程。 缺陷:多个进程之间通信成本高,切换开销大

多线程:密集 I/O 任务(网络 I/O,磁盘 I/O,数据库 I/O)使用多线程合适。缺陷:同一个时间切片只能运行一个线程,不能做到高并行,但是可以做到高并发

协程:又称微线程,在单线程上执行多个任务,用函数切换,开销极小。不通过操作系统调度,没有进程、线程的切换开销。缺陷:单线程执行,处理密集 CPU 和本地磁盘 IO 的时候,性能较低。处理网络 I/O 性能还是比较高

多线程请求返回是无序的,哪个线程有数据返回就处理哪个线程,而协程返回的数据是有序的

109. 如何使用线程池和进程池

池的功能是限制启动的进程数或线程数。当并发的任务数远远超过了计算机的承受能力时,即无法一次性开启过多的进程数或线程数时,就应该用池的概念将开启的进程数或线程数限制在计算机可承受的范围内

多进程

 from multiprocessing import Pool
 import os
 import time
 import random
 
 
 def long_time_task(name):
     print('Run task %s (%s)...' % (name, os.getpid()))
     start = time.time()
    time.sleep(random.random() * 3)
    end = time.time()
    print('Task %s runs %0.2f seconds.' % (name, (end - start)))


def test_pool():
    print('Parent process %s.' % os.getpid())
    p = Pool(4)
    for i in range(5):
        p.apply_async(long_time_task, args=(i,))
    print('Waiting for all subprocesses done...')
    p.close()
    p.join()
    print('All subprocesses done.')


if __name__ == '__main__':
    test_pool()

output

 Parent process 32432.
 Waiting for all subprocesses done...
 Run task 0 (15588)...
 Run task 1 (32372)...
 Run task 2 (12440)...
 Run task 3 (18956)...
 Task 2 runs 0.72 seconds.
 Run task 4 (12440)...
 Task 3 runs 0.82 seconds.
Task 1 runs 1.21 seconds.
Task 0 runs 3.00 seconds.
Task 4 runs 2.95 seconds.
All subprocesses done.

apply_async(func[, args[, kwds]]) :使用非阻塞方式调用 func(并行执行,堵塞方式必须等待上一个进程退出才能执行下一个进程),args 为传递给 func 的参数列表,kwds 为传递给 func 的关键字参数列表;close():关闭 Pool,使其不再接受新的任务;terminate():不管任务是否完成,立即终止;join():主进程阻塞,等待子进程的退出, 必须在 close 或 terminate 之后使用

也可以使用 concurrent.futures 模块提供的功能来实现

 def test_future_process():
     print('Parent process %s.' % os.getpid())
     p = ProcessPoolExecutor(4)
     for i in range(5):
         p.submit(long_time_task, i)
     p.shutdown(wait=True)
     print('Finish')
 
 
if __name__ == '__main__':
    # test_pool()
    test_future_process()

output

 Parent process 29368.
 Run task 0 (32148)...
 Run task 1 (31552)...
 Run task 2 (24012)...
 Run task 3 (29408)...
 Task 2 runs 0.52 seconds.
 Run task 4 (24012)...
 Task 3 runs 0.86 seconds.
 Task 1 runs 1.81 seconds.
Task 0 runs 1.83 seconds.
Task 4 runs 1.69 seconds.
Finish

多线程

 def sayhello(a):
     print("hello: " + a)
     start = time.time()
     time.sleep(random.random() * 3)
     end = time.time()
     print('Task %s runs %0.2f seconds.' % (a, (end - start)))
 
 
 def test_future_thread():
    seed = ["a", "b", "c", "d"]
    start = time.time()
    with ThreadPoolExecutor(3) as executor:
        for i in seed:
            executor.submit(sayhello, i)
    end = time.time()
    print("Thread Run Time: " + str(end - start))

output

hello: a
hello: b
hello: c
Task a runs 0.40 seconds.
hello: d
Task b runs 0.56 seconds.
Task d runs 1.70 seconds.
Task c runs 2.92 seconds.
Thread Run Time: 2.9195945262908936

可以看出,由于是创建了限制为3的线程池,所以只有三个任务在同时执行

110. 进程之间如何进行通信

 def write(q):
     print("write(%s), 父进程为(%s)" % (os.getpid(), os.getppid()))
     for i in "Python":
         print("Put %s to Queue" % i)
         q.put(i)
 
 
 def read(q):
     print("read(%s), 父进程为(%s)" % (os.getpid(), os.getppid()))
    for i in range(q.qsize()):
        print("read 从 Queue 获取到消息: %s" % q.get(True))


def test_commun():
    print("(%s) start" % os.getpid())
    q = Manager().Queue()
    pw = Process(target=write, args=(q, ))
    pr = Process(target=read, args=(q, ))
    pw.start()
    pr.start()
    pw.join()
    pr.terminate()

output

 (23544) start
 write(29856), 父进程为(23544)
 Put P to Queue
 Put y to Queue
 Put t to Queue
 Put h to Queue
 Put o to Queue
 Put n to Queue
 read(25016), 父进程为(23544)
read 从 Queue 获取到消息:P
read 从 Queue 获取到消息:y
read 从 Queue 获取到消息:t
read 从 Queue 获取到消息:h
read 从 Queue 获取到消息:o
read 从 Queue 获取到消息:n

Python 的 multiprocessing 模块包装了底层的机制,提供了 Queue、Pipes 等多种方式来交换数据

111. 进程锁和线程锁

进程锁:是为了控制同一操作系统中多个进程访问一个共享资源,只是因为程序的独立性,各个进程是无法控制其他进程对资源的访问的,但是可以使用本地系统的信号量控制。信号量(Semaphore),有时被称为信号灯,是在多线程环境下使用的一种设施,是可以用来保证两个或多个关键代码段不被并发调用

线程锁:当多个线程几乎同时修改一个共享数据的时候,需要进行同步控制,线程同步能够保证多个线程安全的访问竞争资源(全局内容),最简单的同步机制就是使用互斥锁。某个线程要更改共享数据时,先将其锁定,此时资源的状态为锁定状态,其他线程就能更改,直到该线程将资源状态改为非锁定状态,也就是释放资源,其他的线程才能再次锁定资源。互斥锁保证了每一次只有一个线程进入写入操作。从而保证了多线程下数据的安全性

112. 什么是并发和并行

并行:多个 CPU 核心,不同的程序就分配给不同的 CPU 来运行。可以让多个程序同时执行

并发:单个 CPU 核心,在一个时间切片里一次只能运行一个程序,如果需要运行多个程序,则串行执行

113. threading.local 的作用

ThreadLocal 叫做线程本地变量,ThreadLocal 在每一个变量中都会创建一个副本,每个线程都可以访问自己内部的副本变量,对其他线程时不可见的,修改之后也不会影响到其他线程

114. 什么是域名解析

域名解析是指将域名解析为 IP 地址。也有反向的“逆解析”,将 IP 通过 DNS 服务器查找到对应的域名地址

DNS 是域名系统 (Domain Name System),域名系统为因特网上的主机分配域名地址和 IP 地址。用户使用域名地址,该系统就会自动把域名地址转为 IP 地址

115. LVS 是什么及作用

LVS 是 Linux Virtual Server 的简写,意即 Linux 虚拟服务器,是一个虚拟的服务器集群系统,即负载均衡服务器

LVS 工作模式分为 NAT 模式、TUN 模式、以及 DR 模式

116. Nginx 的作用

Nginx 主要功能:1、反向代理 2、负载均衡 3、HTTP 服务器(包含动静分离) 4、正向代理

正向代理:某些情况下,代理用户去访问服务器,需要手动设置代理服务器的 IP 和端口号

反向代理:是用来代理服务器的,代理要访问的目标服务器。代理服务器接受请求,然后将请求转发给内部网络的服务器(集群化),并将从服务器上得到的结果返回给客户端,此时代理服务器对外就表现为一个服务器

负载均衡服务器类似于 LVS HTTP 服务器类似于 Tomcat 等

117. keepalived 及 HAProxy

HAProxy 提供高可用性、负载均衡,以及基于 TCP 和 HTTP 的应用程序代理。keepalived 是集群管理中保证集群高可用的一个服务软件,其功能类似于 heartbeat,用来防止单点故障

118. 什么是 rpc

RPC 是指远程过程调用,也就是说两台服务器 A,B,一个应用部署在 A 服务器上,想要调用 B 服务器上应用提供的函数/方法,由于不在一个内存空间,不能直接调用,需要通过网络来表达调用的语义和传达调用的数据

119. 从浏览器输入一个网址到展示网址页面的过程

浏览器通过 DNS 服务器查找到域名对应的 IP 地址

浏览器给 IP 对应的 web 服务器发送 HTTP 请求

web 服务器接收到 HTTP 请求后,返回响应给浏览器

浏览器接收到响应后渲染页面

120. 什么是cdn

CDN 的全称是 Content Delivery Network,即内容分发网络。CDN 是构建在网络之上的内容分发网络,依靠部署在各地的边缘服务器,通过中心平台的负载均衡、内容分发、调度等功能模块,使用户就近获取所需内容,降低网络拥塞,提高用户访问响应速度和命中率。CDN 的关键技术主要有内容存储和分发技术

靠着阿里师兄给的170 Python 面试题,我已成功上岸综合篇:数据库和框架】 由于文章过长,小编也贴心的把文章整理成了PDF文档,想要观看学习起来更方便的话点此下载 上篇_拿着阿里师兄精心整理 170 Python 面试题,我已成功上岸综合篇网络编程】 上上篇_靠着阿里师兄给的170 Python 面试题,我已成功上岸Python基础篇】 综合篇:数据库和框架 121. 列举常见的数据库 122. 数据库设计三大范式 123. 什么是数据库事务 124. MySQL 索引种类 .. 阅读详情

相关推荐

SRT协议包头结构

这是SRT可靠传输的基石,用于唯一标识数据包,供接收方检测丢包、乱序,并用于ACK/NAK报告。Message Number(消息编号,位47-78):唯一标识一个应用层消息。在“消息模式”下,所有属于同一消息的数据包共享相同的Message Number,即使它们被分割成多个SRT包。Packet Position Flag(包位置标志,位32-33):两位,表示此包在应用层消息中的位置。00=唯一包或中间包,01=消息的第一包,10=消息的最后一包,11=消息的唯一包(既是第一也是最后)。

weixin_44651073的博客 49

python全栈面试题_python面试题大全(一)

python面试题大全(一)最近开始整理python的资料,博主建立了一个qq群,希望给大家提供一个交流的同平台 938587844 。1. (1)python下多线程的限制以及多进程中传递参数的方式python多线程有个全局解释器锁(global interpreter lock),这个锁的意思是任一时间只能有一个线程使用解释器,跟单cpu跑多个程序一个意思,大家都是轮着用的,这叫“并发”,不...

weixin_39525255的博客 411

我的阿里面试之旅,分享内部Python面试真题(共勉)

今天给大家分享一份阿里内部面试题(共21题,含答案) 1. (1)python下多线程的限制以及多进程中传递参数的方式 (2)python多线程与多进程的区别 2.Python是如何进行内存管理的? 3.什么是lambda函数?它有什么好处? 4.如何用Python输出一个Fibonacci数列? 5.介绍一下Python中webbrowser的用法? 6.解释一下python的and-or语法 7.how do I iterate over a sequence in reverse or...

莫得感情的韭菜 561

QSFP/QSFP-DD/OSFP 通用管理接口规范(CMIS)解读:11 Page 13h II

本文主要关注光模块CMIS协议文档的 8.11 节关于 Page 13h 的内容。不仅是对文档的简单翻译,还会剖析协议规定背后的深层含义。为了方便与协议文档内容对应,本文的章节编号与协议文档保持一致。

a653952216的博客 287

Natapp 内网穿透完整实操:从注册到远程桌面公网访问全流程

内网穿透并不缺方案。自己搭建 FRP 的自由度很高,但要先有一台带公网 IP 的服务器,再部署服务端、配置客户端、开放端口,后续还要处理升级、安全和日常维护。如果只是想尽快把本地网页、远程桌面或者其他服务接到公网,这些准备工作很容易把人挡在第一步。我用 Natapp 一段时间后,最直观的感受就是省事:不用准备公网服务器,也不用维护一套服务端。注册账号、创建隧、下载,再用authtoken启动,公网入口就有了。

2301_80863610的博客 1万+

计算机网络综合实训室怎么建?2026版建设思路、云平台架构与课程体系深度拆解

平台架构自下而上分为七个部分:分组硬件设备、教学云、实训云、评测云、课程资源、管理平台和公有云。这套体系背后是"教、学、做"一体化的建设理念:实训室既是教室,也是校内生产性实训基地,学生在里面做的事,和他将来在企业里做的事,流程上应该是一致的。学生完成教师安排的教学实训内容。

whwzzc的博客 1708

开源 lwIP:单片机上的轻量 TCP/IP 协议栈

我们要的是 Linux 那套完整网络世界,还是一份能塞进 MCU 的、可裁剪的 TCP/IP?lwIP 把路走窄了,也走实了:窄在不做通用 OS 网络子系统;实在无数量产固件里默默转发每一包。它不靠刷星证明自己,靠的是——你打开厂商工程时,头文件里已经写着lwip。厂商/官方 echo 例程 → 读懂lwipopts.h→ ping 通 → 一条 TCP/UDP → 再叠 MQTT/HTTP。别第一天就对吞吐和 TLS 一起开战——先让协议栈在板上「活着」。

buhuidage的博客 178

SD-WAN网络可视化实践:如何让IT部门从救火队变成决策者?

网络可视化破解IT运维困局,将“黑盒”网络变为可监控、可管理的透明体系。通过端到端链路监控、应用级流量识别与智能告警,企业实现故障精准定位、资源科学分配与数据驱动决策。从被动救火到主动预警,从经验判断到智能优化,IT角色由“成本中心”转向“业务支撑者”。尤其对多分支企业,可视化结合SD-WAN技术,降低运维门槛,提升网络效率,正成为现代网络运维的标准配置。

OgCloud_ICT的博客 226

网络传输安全剖析:WebRTC 本地真实 IP 泄漏机制(STUN/TURN)与 Python 防护检测实战

深入剖析 WebRTC 在网络代理环境下通过 STUN/TURN/ICE 协议穿透 NAT 导致本地真实物理 IP 泄漏的底层成因,并使用原生 Python 实现 RFC 5389 二进制报文解析与穿透风险自动化检测。

etsyZS的博客 203

对称加密和非对称加密(小记)

首先来看一下什么是对称加密和非对称加密:在互联网中,一台主机可以和任意一台其他主机通信,无论是对称加密还是非对称加密,对于每一对通信我们都需要尽量使用不同的秘钥,否则一但相同秘钥的两对主机监听到了对方的消息,就会导致加密数据被泄露对于对称加密来说,它有以下缺点:而对于非对称加密来说,它有以下缺点:因此在实际使用过程中,我们一般使用非对称加密来完成对称秘钥的确定(破除循环),然后使用对称秘钥进行通信(提高性能)

2302_80221042的博客 194

PPTP和L2TP哪个更安全?老旧协议选择建议

网络通信与数据传输安全评估中,。PPTP依赖的MS-CHAP v2身份验证机制与128位RC4流加密算法已被现代密码学证实存在严重逻辑缺陷,容易遭受离线字典攻击与密钥解密;而L2TP通过与IPsec协议紧密结合,采用高强度AES对称加密算法、SHA数据完整性校验以及双向证书认证,具备完善的机密性与防篡改能力,整体防护等级远超PPTP。

Loongproxy的博客 206

大学网安方向学习路线:零基础与有基础的学习顺序整理

网络安全方向在大学阶段的学习,最怕的不是起点低,而是顺序乱。很多人一上来就刷漏洞、学渗透,结果基础不牢,越学越吃力。本文按「零基础」和「有基础」两条路径,把学习顺序整理清楚,供你参考。阶段零基础路径有基础路径第一阶段计算机基础(系统、网络、编程入门)能力自测,查漏补缺第二阶段编程与脚本能力(Python + Linux)系统学习 Web 安全(OWASP Top 10)第三阶段网络与协议深入(抓包、协议分析)内网渗透与横向移动第四阶段安全基础入门(Web 漏洞 + 靶场)

2301_77732591的博客 176

AI时代如何利用AI学好网络安全

AI时代为网络安全学习带来了全新的可能性。善用AI,可以大幅提升学习效率,加速技能成长;但也要清醒地认识到,AI只是工具,真正的核心竞争力在于扎实的基础知识、敏锐的安全思维和良好的职业德。希望每一位学习者都能在AI的助力下,走出一条属于自己的网络安全成长之路。

2301_77732591的博客 220

Linux:网络基础

我们先来看一下 TCP/IP 协议与操作系统内核的关系,TCP/IP 协议栈进行了分层部署,其中作为核心的传输层 TCP 协议与网络层 IP 协议直接集成在 Windows、Linux 等操作系统内核当中,数据链路层依靠网卡驱动实现,物理层为网卡硬件,应用层交由上层用户程序实现;

我的个人gitee仓库:https://gitee.com/chen-yukun-1030/linux_-study.git 126

手撕Reactor模型实现同步高并发服务器及Muduo网络库深入解析

本文深入解析Reactor网络模型,阐述其基于事件驱动的高并发设计思想,对比Reactor与Proactor模型的本质差异,并剖析Nginx、Netty、Muduo等工业级框架的应用。项目实现三种Reactor架构:单反应器(简单无锁但单线程)、主从多反应器(分离连接与业务,提升吞吐)、对等多反应器(均衡负载,充分利用多核)。通过epoll多路复用与非阻塞I/O,结合事件循环与回调机制,构建低延迟、高并发的同步服务器,为高性能网络编程提供坚实范式。

weixin_52198406的博客 316

网络安全漏洞综合实验场设计与开发

摘 要 随着数字化转型的深入,Web应用已成为各领域核心业务载体,SQL注入、XSS跨站脚本等安全漏洞引发的数据泄露、系统被劫持事件频发,对网络安全防护提出迫切需求。现有漏洞扫描工具存在功能单一、定制化不足、操作门槛高或成本昂贵等问题,难以适配高校教学与中小企业日常安全检测场景。为此,本研究设计并开发了一款基于Web的网络安全漏洞综合实验场,实现多类常见Web漏洞的自动化检测与可视化展示。 系统采用B/S架构与前后端分离设计模式,后端以Python Flask 3.0.0框架为核心,提供RESTful A

u013374864的博客 515

代理型人工智能与网络安全:目前的进展状况

截至 2026 年,代理型人工智能(Agentic AI)已经从“聊天/摘要”进入“可调用工具、读写数据、执行工作流”的阶段,网络安全也因此从“防模型出坏话”变成“防自主系统做坏事”。整体状态可以概括为:防御侧落地很快,攻击侧已经武器化,治理侧还在补课。

m0_65595995的博客 154

嵌入式WiFi深度原理与工业级量产稳定性白皮书(通用平台终版)

本文聚焦嵌入式WiFi量产高频稳定性难题,从802.11协议、lwIP协议栈、软硬件耦合层面,拆解假性联网、休眠断流、内存泄漏、WiFi6适配异常等五大架构级固有故障,梳理工业级优化规范与分级容错体系,提供全平台可移植代码框架,为物联网设备7×24h稳定运行提供落地解决方案。

chujing124486的博客 339

【从0开始学习计算机网络】| 三次握手:为什么是三次,不是两次或四次?

本文以电话确认场景类比TCP三次握手,揭示其背后逻辑:为确保双方同意连接、准备就绪且知晓对方初始序列号。三次握手分别完成意愿表达、双向确认与最终确认,缺一不可。两次握手无法应对延迟请求导致的资源浪费,四次握手则冗余。三次握手仅需1.5个RTT,是效率与可靠性的最优平衡。

2503_94545876的博客 1027
上一篇: 靠着阿里师兄给的170 道 Python 面试题,我已成功上岸【Python基础篇】
下一篇: 靠着阿里师兄给的170 道 Python 面试题,我已成功上岸【综合篇:数据库和框架】
python_dagren
博客等级 码龄4年 409粉丝 10原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值