计算机网络开发--阻塞与非阻塞、同步与异步、http协议

devtools/2025/3/16 13:07:22/
http://www.w3.org/2000/svg" style="display: none;">

阻塞与非阻塞 和 同步与异步

典型的一次IP的两个阶段:数据就绪和数据读写

数据就绪:根据系统IO操作的就绪状态

系统就绪分为阻塞和非阻塞。

如果是阻塞操作,那么当前线程会被挂起,等待资源准备好。在此期间,CPU会切换到其他线程或程序去执行,直到资源可用,当前线程才会被唤醒并继续执行;

如果是非阻塞操作,当资源还未准备好时,线程不会被挂起,而是会立即返回一个错误或状态信息(例如“资源未就绪”)。线程可以继续执行其他任务,而不是等待资源准备好。这种方式可以让线程在等待资源的同时,去做其他有意义的工作。

数据读写:根据应用程序和内核的交互方式

数据读写分为同步和异步。

同步表示表示A向B请求调用网络接口IO的时候,数据的读写都是A自己完成的;

异步表示A向B请求调用一个网络IO接口时,只需要向B请求,A就可以进行自己的事情了,剩下的B会帮他完成。

在处理IO的时候,只有阻塞和非阻塞是同步IO,只有使用了特殊的API才是异步IO.

HTTP协议

http协议分为两部分:

http请求和http响应。

http_28">http请求

包含请求行、请求头、空行、请求的数据 四个部分

http请求中有两种提交数据的方式,使用的提交方式是在请求行中指定

  1. 请求行
    • 制定了提交数据的方式:post\get
  2. 请求头
    • 多个键值对
    • 客户端给服务器发送的数据描述符
  3. 空行 代表请求头已经结束了
  4. 请求的数据
    • 如果post提交数据,该位置有
    • 用get,该位置为空,请求的数据/提交的数据在请求行
getpost
从请求资源分请求静态资源,例如网页、图片、文件等请求动态的,例如用户的登录信息、上传和下载文件
从操作数据量上分析比较少,它请求的内容在请求行的第二部分,浏览器的地址栏存储数据需要缓存,缓存有上限,如果数据量太大,会造成数据丢失可以操作大数据,post提交的数据不会显示在地址栏中
从安全性容易泄露不会泄露,提交数据看不见

http_54">http响应

服务端给客户端回复数据使用的一种数据格式

组成部分也是四个部分:状态行、响应头、空行、相应数据

  1. 状态行
    • HTTP/1.1 200 ok
      • HTTP/1.1 http协议的版本
      • 200:状态码
      • OK:对状态码的描述
  2. 响应头(消息报头)
    • content-type:服务器给客户端回复的数据块格式(对于第四部分的描述)
    • content-length:服务器给客户端回复的数据块长度(对于第四部分的描述)
  3. 空行
  4. 响应数据

状态码:

1XX:指示信息,表示收到信息,继续处理

2XX:成功,理解,接受

3XX:重定向,默认进行新的请求自动做的

4XX:错误404、403


http://www.ppmy.cn/devtools/167563.html

相关文章

mysql经典试题共34题

1、准备数据 -- drop drop table if exists dept; drop table if exists emp; drop table if exists salgrade;-- CREATE CREATE TABLE dept (deptno int NOT NULL COMMENT 部门编号,dname varchar(14) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMM…

外星人入侵-Python-三

武装飞船 开发一个名为《外星人入侵》的游戏吧!为此将使用 Pygame,这是一组功能强大而有趣的模块,可用于管理图形、动画乃至声音, 让你能够更轻松地开发复杂的游戏。通过使用Pygame来处理在屏幕上绘制图像 等任务,可将…

Vue3 响应式中 Reflect 的作用

在 Vue 3 的响应式系统中,Reflect 主要用于配合 Proxy 实现属性的拦截和默认行为执行,确保响应式系统能够正确追踪依赖和触发更新。以下是 Reflect 在 Vue 响应式中的核心作用: 1. 与 Proxy 配合完成默认行为 Proxy 用于拦截对象操作&#x…

L1-7 整数的持续性

题目 代码 #include <iostream> // 包含输入输出流的头文件 #include <vector> // 包含向量容器的头文件 #include <algorithm> // 包含算法函数的头文件 using namespace std; // 使用标准命名空间 // 定义一个名为 calculatePersistence 的函数…

串排序(信息学奥赛一本通-2048)

【题目描述】 对给定的n(1≤n≤20)个国家名&#xff08;国家名字长度不超过20&#xff09;&#xff0c;按其字母的顺序输出。 【输入】 第一行为国家的个数n&#xff1b; 以下n行为国家的名字。 【输出】 n行&#xff0c;排序后的国名。 【输入样例】 3 Korea China Japan 【输…

Pycharm实用技巧

一、Pycharm 参数注释 在 PyCharm 中&#xff0c;在方法下输入三引号&#xff08;"""&#xff09;就能自动生成参数注释&#xff1a;def input_combo_detail(self, scale, ptype_data, ptype_info, sku_info, unit_info, price, qty):""":param…

【WPF】在System.Drawing.Rectangle中限制鼠标保持在Rectangle中移动?

方案一&#xff0c;在OnMouseMove方法限制 在WPF应用程序中&#xff0c;鼠标在移动过程中保持在这个矩形区域内&#xff0c;可以通过监听鼠标的移动事件并根据鼠标的当前位置调整其坐标来实现。不过需要注意的是&#xff0c;WPF原生使用的是System.Windows.Rect而不是System.D…

HTTP协议简介

一、HTTP协议介绍 基本介绍&#xff1a; HTTP&#xff1a;全称超文本传输协议&#xff0c;是用于从万维网服务器传输超文本到本地浏览器的传送协议。 HTTP是一种应用层协议&#xff0c;是基于TCP/IP通信协议来传输数据的&#xff0c;其中HTTP1.0、HTTP1.1、HTTP2.0均为TCP实…