网络编程3

news2025/4/21 11:55:20
  • day3
    • 一、服务器模型
      • 1.循环服务器模型
        • 同一个时刻只能响应一个客户端的请求
      • 2.并发服务器模型
        • 2.1含义
          • 同一个时刻可以响应多个客户端的请求,常用的模型有多进程模型/多线程模型/IO多路复用模型。
        • 2.2多进程模型
          • 每来一个客户端连接,开一个子进程来专门处理客户端的数据,实现简单,但是系统开销相对较大,更推荐使用线程模型。
        • 2.3多线程模型(重点)
          • 每来一个客户端连接,开一个子线程来专门处理客户端的数据,实现简单,占用资源较少,属于使用比较广泛的模型。
    • 二、网络调试
      • 1.ping
        • 作为平时网络连通检测使用最多的命令,它的作用主要为:
        • ● 用来检测网络的连通情况;
        • ● 根据域名得到服务器IP;
        • ● 根据ping返回的TTL值来判断数据包经过路由器数量。
      • 2.netstat
        • 作用:测试网络状态
        • netstat -a //查看所有网络连接状态
        • netstat -at //查看tcp所有网络状态
        • netstat -au //查看udp所有网络状态
    • 三、网络协议头分析
      • 1.数据的封装与传递过程
      • 2.以太网帧完整帧格式
        • ●对于网络层最大数据帧长度是1500字节
        • ●对于链路层最大数据长度是1518字节(1500+14+CRC)
        • ●发送时候,IP层协议栈程序检测到发送数据和包头总长度超过1500字节时候,会进行自动分包处理,接收端在IP层进行包重组,然后才继续往上传递
    • 四、wireshark与包头分析
      • 1.步骤
        • 双击需要的网卡,开始抓包  
        • 捕获器选择:  
        • windows如果连接有线网络,选择本地连接/以太网;如果连接无线网络,选择WLAN;如果只是在本机上的通信,选择NPCAP Loopback apdater或Adapter for loopback traffic capture。
        • 过滤条件:  
        • 过滤端口:tcp.port == 502  
        • 过滤IP:ip.addr == 192.168.1.156(自己的ip地址)  
        • 以上条件同时过滤,通过&&连接
      • 2..wireshark与对应的OSI七层模型
      • 3.三次握手
        • 3.1过程
          • (1).第一次握手:客户端发送SYN包(SYN=1,seq=J),并进入SYN_SENT状态,等待服务器端返回确认包。
          • (2).第二次握手:服务器端收到SYN包,确认客户端的SYN,发送ACK包(ACK=1,ack = J+1),同时发送一个SYN包(SYN=1,seq=K),并进入SYN_RCVD状态。
          • (3).第三次握手:客户端收到服务器的SYN包以及ACK包,进入ESTABLISHED状态,同时向服务器端发送ACK包(ACK=1,ack=K+1)此时三次握手包发送完毕,服务器进入ESTABLISHED状态。
        • 3.2过程图
      • 4.四次挥手
        • 4.1过程
          • (1).第一次挥手:主动关闭方发送一个FIN包(FIN=1,seq=M)给被动方,进入FIN_WAIT_1状态
          • (2).第二次挥手:被动方接收到FIN包,给主动方发送一个ACK包(ACK=1,ack=M+1);并进入CLOSE_WAIT状态。主动方接收到ACK后进入FIN_WAIT_2状态.如果有数据没有发送完毕,则继续发送,直到发送完毕为止
          • (3).第三次挥手:被动方发送一个FIN包(FIN=1,seq=N),进入LAST_ACK状态。
          • (4).第四次挥手:主动方收到FIN包,回复一个ACK包(ACK=1,ack=N+1).被动方收到主动方的ACK包后关闭连接
        • 4.2过程图
          • 为什么客户端在TIME-WAIT阶段要等2MSL?
            • 为了确保服务器端能收到客户端发送的ACK,1MSL允许ACK到达服务端,另1MSL允许服务端重传的FIN到达客户端。
      • 5.TCP如何保证可靠性?
        • (1).通过三次握手建立可靠连接。
        • (2).通过应答确认机制和重传机制确认数据准确到达,通过给每个数据增加序列号,确保数据包达到不失序。
        • (3).通过四次挥手实现断开连接时数据的完整性。
    • 五、数据库编程
      • 1.手工创建
        • 使用sqlite3工具,通过手工输入SQL命令行完成数据库创建。用户在Linux的命令行界面中输入sqlite3可启动sqlite3工具
          • https://docs.qq.com/doc/DQ294RlF0YXBxTkxS?nlc=1
      • 2.代码

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2339403.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

海拔与大气压关系,大气压单位,气压传感器对比

mbmbar 毫巴(百帕) mbar 毫巴(百帕) hPa 百帕 1百帕1毫巴3/4毫米水银柱 1Kpa10百帕7.5毫米汞柱7.5mmhg 1Bar0.1MPa1000mba1000hpa100*7.5mmhg75mmhg1个大气压 HP303B HP303S HP203N BMP280

Linux 进程概念补充 (自用)

进程概念 内核进程进程状态内存泄漏进程调度。Linux真实调度算法环境变量 内核 狭义上的操作系统指的是 内核就是进程管理进程调度,文件系统等等。 广义上的操作系统其实在外壳指令这些。封装了系统调用的东西。 进程 课本概念程序的一个基本实例 内核观点&#…

PyTorch - Tensor 学习笔记

上层链接:PyTorch 学习笔记-CSDN博客 Tensor 初始化Tensor import torch import numpy as np# 1、直接从数据创建张量。数据类型是自动推断的 data [[1, 2],[3, 4]] x_data torch.tensor(data)torch.tensor([[2, 1, 4, 3], [1, 2, 3, 4], [4, 3, 2, 1]])输出&am…

Navicat、DataGrip、DBeaver在渲染 BOOLEAN 类型字段时的一种特殊“视觉风格”

文章目录 前言✅ 为什么 Boolean 字段显示为 [ ]?✅ 如何验证实际数据类型?✅ 小结 前言 看到的 deleted: [ ] 并不是 Prisma 的问题,而是数据库客户端(如 Navicat、DataGrip、DBeaver)在渲染 BOOLEAN 类型字段时的一种…

基于 Vue3 + ECharts + GeoJson 实现区域地图钻取功能详解

文章目录 前言一、实现步骤1. 项目初始化2. 准备GeoJson数据3. 创建地图组件4. 创建主页面组件5. 使用组件 二、功能亮点三、性能优化建议四、常见问题解决五、结语六、实战demo七、资源下载 前言 在数据可视化领域,地图展示是一种非常直观的表现形式。而地图钻取&…

安卓学习24 -- 网络

1 整体架构 (出处见水印) 这两张是能找到的比较清楚的图。目前可以看出,底层的网络业务,还是传统的linux内核提供。(注:这两个图我个人觉得不是非常对。。。) 在安卓上增加的两个比较重要的部…

github新建一个远程仓库并添加了README.md,本地git仓库无法push

1.本地git仓库与远程仓库绑定 2.push时报错,本地的 main 分支落后于远程仓库的 main 分支(即远程有更新,但你本地没有),需要拉取远程的仓库--->在merge合并(解决冲突)--->push 3.但是git …

Python:使用web框架Flask搭建网站

Date: 2025.04.19 20:30:43 author: lijianzhan Flask 是一个轻量级的 Python Web 开发框架,以简洁灵活著称,适合快速构建中小型 Web 应用或 API 服务。以下是 Flask 的核心概念、使用方法和实践指南 Flask 的核心特点: 轻量级 核心代码仅约…

Kotlin delay方法解析

本文记录了kotlin协程(Android)中delay方法的字节码实现,并解析了delay方法如何实现挂起操作。 一、delay方法介绍 1.1、delay方法使用举例 class TestDelay {suspend fun testDelay() {Log.d("TestDelay", "before delay")delay(1000)Log.d…

【Vulkan 入门系列】创建描述符集布局和图形管线(五)

描述符集布局定义了着色器如何访问资源(如缓冲区和图像),是渲染管线配置的关键部分。图形管线定义了从顶点数据到最终像素输出的整个处理流程,包括可编程阶段(如顶点和片段着色器)和固定功能阶段&#xff0…

mysql中in的用法详解

MySQL 中 IN 操作符用法详解 IN 是 MySQL 中用于多值筛选的高效操作符,常用于 WHERE 子句,可替代多个 OR 条件,简化查询逻辑并提升可读性。以下从基础语法、应用场景、性能优化、常见问题及高级技巧进行全方位解析。 一、基础语法与优势 1.…

MySQL为什么默认使用RR隔离级别?

大家好,我是锋哥。今天分享关于【MySQL为什么默认使用RR隔离级别?】面试题。希望对大家有帮助; MySQL为什么默认使用RR隔离级别? 1000道 互联网大厂Java工程师 精选面试题-Java资源分享网 MySQL 默认使用 RR(Repeatable Read)…

施磊老师基于muduo网络库的集群聊天服务器(二)

文章目录 Cmake简单介绍Cmake与MakefileCmake配置CmakeLists.txt 编写完整cmake例子文件夹杂乱问题多级目录Cmakevscode 极其推荐 的 cmake方式 Mysql环境与编程mysql简单使用User表Friend表AllGroup表GroupUser表OfflineMessage表 集群聊天项目工程目录创建网络模块代码Chatse…

线性DP:最长上升子序列(子序列可不连续,子数组必须连续)

目录 Q1:简单遍历 Q2:变式(加大数据量) Q1:简单遍历 Dp问题 状态表示 f(i,j) 集合所有以第i个数结尾的上升子序列集合-f(i,j)的值存的是什么序列长度最大值max- 状态计算 (其实质是集合的划分)…

C语言之文本加密程序设计

🌟 嗨,我是LucianaiB! 🌍 总有人间一两风,填我十万八千梦。 🚀 路漫漫其修远兮,吾将上下而求索。 文本加密程序设计 摘要:本文设计了一种文本加密程序,旨在提高信息安…

云效部署实现Java项目自动化部署图解

前言 记录下使用云效部署Java项目,实现java项目一键化自动化部署。 云效流程说明: 1.云效拉取最新git代码后 2.进行maven编译打包后,上传到指定服务器目录 3.通过shell脚本,先kill java项目后,通过java -jar 启动项…

0801ajax_mock-网络ajax请求1-react-仿低代码平台项目

0 vite配置proxy代理 vite.config.ts代码如下图所示: import { defineConfig } from "vite"; import react from "vitejs/plugin-react";// https://vite.dev/config/ export default defineConfig({plugins: [react()],server: {proxy: {&qu…

基于Python智能体API的Word自动化排版系统:从零构建全流程模块化工作流与版本控制研究

基于Python智能体API的Word自动化排版系统:从零构建全流程模块化工作流与版本控制实践研究 1. 引言2. 研究背景与意义3. 自动排版工作流的设计原理3.1 文档内容提取与解析3.2 样式参数与格式化规则3.3 智能体API接口调用3.4 自动生成与批量处理3.5 与生成式AI的协同4. 系统架构…

Java【网络原理】(4)HTTP协议

目录 1.前言 2.正文 2.1自定义协议 2.2HTTP协议 2.2.1抓包工具 2.2.2请求响应格式 2.2.2.1URL 2.2.2.2urlencode 2.2.3认识方法 2.2.3.1GET与POST 2.2.3.2PUT与DELETE 2.2.4请求头关键属性 3.小结 1.前言 哈喽大家好啊,今天来继续给大家带来Java中网络…

每天学一个 Linux 命令(27):head

​​可访问网站查看,视觉品味拉满: http://www.616vip.cn/27/index.html head 是 Linux 中用于查看文件开头部分内容的命令,默认显示文件前 10 行,适合快速预览文件结构或日志头部信息。 命令格式 head [选项] [文件]常用选项 选项说明-n <行数>指定显示前 N 行(如…