【计算机网络】HTTP协议详解实战抓包分析教程

news2024/9/24 9:25:36

文章目录

  • 1.HTTP简介
  • 2.HTTP报文的结构
  • 3.HTTP协议中空行的作用
  • 4.uri和url的区别
  • 5.HTTP请求
    • 5.1 HTTP请求方法
    • 5.2 HTTP请求报头
  • 6.HTTP响应
    • 6.1 状态码
  • 7.HTTP位于应用层(基于TCP)
  • 8.非持久和持久连接
    • 8.1 非持久连接
    • 8.2 持久连接

1.HTTP简介

HTTP(Hypertext Transfer Protocol)即超文本传输协议,是互联网上应用最为广泛的一种网络协议,主要用于从WWW服务器传输超文本到本地浏览器的传输协议。它是基于客户端-服务器模型的,目的是允许浏览器(或其他HTTP客户端)从Web服务器请求资源,并且服务器能够将这些资源传回给客户端。

主要特性:

  • 无状态:HTTP协议是无状态的,这意味着每个请求都是独立的,服务器不保留关于客户的任何信息(如 cookies 可以用来维护会话状态)。
  • 媒体独立:可以传输任意类型的数据对象,不限于文本,图像、视频等多媒体文件同样可以传输。
  • 简单快速:客户端向服务器请求服务时,只需传送请求方法和路径。常用的方法有GET、POST等。
  • 灵活:HTTP允许传输数据的内容类型多样,通过Content-Type加以标记。
  • 无连接:限制每次连接只处理一个请求,之后连接就会关闭,但实际应用中常通过Keep-Alive机制保持连接打开,以便多个请求复用。

2.HTTP报文的结构

大家应该都听说过HTTP请求和HTTP响应.因此HTTP报文也分为请求报文和响应报文,但是请求报文和响应报文的结构是一样的.
如图:
image-20240509233021387
请求报文和响应报文虽然结构是一样的,但是报文首部是不同的

在请求报文中,HTTP报文首部是由方法,URI,HTTP版本和HTTP首部字段构成

image-20240509234659100

在响应报文中,HTTP报文首部是由HTTP版本,状态码和HTTP首部字段构成

image-20240509234458286

3.HTTP协议中空行的作用

因为 HTTP 协议并没有规定报头部分的键值对有多少个. 空行就相当于是 “报头的结束标记”, 或者

是 “报头和正文之间的分隔符”.

HTTP 在传输层依赖 TCP 协议, TCP 是面向字节流的. 如果没有这个空行, 就会出现 “粘包问题”.

4.uri和url的区别

URI(Uniform Resource Identifier,统一资源标识符)和URL(Uniform Resource Locator,统一资源定位符)都是用于标识网络资源的字符串,但它们在概念和用途上有所区别:

  1. URI 是一个更广泛的概念,它是用于标识互联网上或计算机系统中任何资源的字符串。URI 包括了定位资源的地址(即URL),也包括仅用于命名或识别资源但不提供直接访问方式的标识符(例如URN,Uniform Resource Name)。URI 的目的是确保每一个资源都有一个唯一的标识,无论这个资源是可以获取的还是仅仅被命名的。
  2. URL 是 URI 的一个子集,它是一种特定类型的 URI,不仅标识了资源,还提供了定位和访问该资源的方法。URL 包含了访问资源所需的全部信息,比如协议类型(http、https)、主机名、路径(/path/to/resource)以及可能的查询字符串(?key=value)等。简而言之,当你能通过某个地址在互联网上找到一个资源时,那个地址就是一个以及可能的查询字符串(?key=value)等。简而言之,当你能通过某个地址在互联网上找到一个资源时,那个地址就是一个) URL。

总结来说,所有 URL 都是 URI,因为它们都能标识资源,但不是所有的 URI 都是 URL,有的 URI 只是用来命名资源而不提供定位信息(例如URN)。在实际应用中,我们通常所说的网址就是 URL,它是 URI 实际应用中最常见的一种形式。

5.HTTP请求

5.1 HTTP请求方法

HTTP协议定义了一系列请求方法,用于指示客户端希望服务器对资源执行的操作。以下是HTTP/1.1中定义的8种主要请求方法,每种方法都有其特定的用途和特点:

  1. GET:用于请求指定的资源。请求的数据会附加在URL(query string)之后,以查询字符串的形式传递。GET请求是最常见的,用于获取资源,应是安全和幂等的。
  2. POST:用于向指定资源提交数据,请求服务器进行处理(例如提交表单或者上传文件)。数据包含在请求正文(body)中,POST请求不是幂等的,多次请求可能会产生不同结果。
  3. PUT:用于替换指定资源的全部内容。客户端提供更新后的资源,要求服务器存储。此方法是幂等的,多次执行具有相同效果。
  4. DELETE:请求服务器删除指定的资源。此方法也是幂等的,多次请求删除同一资源的结果是一致的。
  5. HEAD:类似于GET方法,但服务器只返回响应头,不返回响应主体,用于检查资源的存在性、类型、大小等元数据,而不需要传输整个内容。
  6. OPTIONS:用于获取服务器支持的HTTP请求方法和其他通信选项,可用于检测服务器功能或测试权限。
  7. TRACE:客户端发送一个请求,服务器会将收到的请求原样返回,主要用于诊断和测试目的,查看请求在到达服务器前经过的路径上的改动。
  8. CONNECT:用于建立一个到由目标资源标识的服务器的TCP连接通道,通常用于代理服务器中,实现对HTTPS等需要通过隧道协议进行安全传输的请求。

关于Query String和Param(Parameters)

  • 查询字符串(Query String)是指URL中跟在问号(?)后面的部分,用于携带额外的信息,特别是作为HTTP GET请求的一部分传递参数给服务器。它由一系列键值对组成,键值对之间用等号(=)连接,不同的键值对之间用和号(&)分隔。例如,在URL https://example.com/search?q=query+term&sort=date 中,q=query+termsort=date 就是查询字符串中的两个参数。

  • 参数(Params)是查询字符串中具体键值对的统称。在上述例子中,qsort 是参数名,query+termdate 是对应的参数值。这些参数让服务器知道客户端请求的具体细节,比如搜索关键词、排序方式等。

5.2 HTTP请求报头

HTTP请求报头(Request Headers)是一系列键值对,位于请求行之后,请求主体之前,每一行代表一个报头字段。

以下是我用Fiddler抓的一个包

image-20240510142355886

具体内容如下:

GET https://www.baidu.com/ HTTP/1.1
Host: www.baidu.com
Connection: keep-alive
sec-ch-ua: "Chromium";v="124", "Microsoft Edge";v="124", "Not-A.Brand";v="99"
sec-ch-ua-mobile: ?0
sec-ch-ua-platform: "Windows"
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0.0.0 Safari/537.36 Edg/124.0.0.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7
Sec-Fetch-Site: none
Sec-Fetch-Mode: navigate
Sec-Fetch-User: ?1
Sec-Fetch-Dest: document
Accept-Encoding: gzip, deflate, br, zstd
Accept-Language: zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6
Cookie: BIDUPSID=DD7326D9CB3E780AE232E272F9988EF1; PSTM=1700320963; BAIDUID=CB65E88DF6D23B274067D86F39E33F91:FG=1; H_WISE_SIDS=40171_40369_40376_40398_40416_40305_40458_39662_40511_40512_60044_60026_60035_60048_60058; H_WISE_SIDS_BFESS=40171_40369_40376_40398_40416_40305_40458_39662_40511_40512_60044_60026_60035_60048_60058; BAIDUID_BFESS=CB65E88DF6D23B274067D86F39E33F91:FG=1; COOKIE_SESSION=130_0_8_3_5_14_1_1_8_6_1_3_56_0_0_0_1713166585_0_1713181572%7C9%23580281_10_1665372810%7C4; BAIDU_WISE_UID=wapp_1713714319309_20; H_PS_PSSID=40305_40080_60138_60186; BDUSS=2R5UzNPZzZ3ai1kNVlXcEZjVWc4ZnctT3ZVRmdGQllvOXpCb0JZNGljanFmMWxtRVFBQUFBJCQAAAAAAAAAAAEAAAA1MYH4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOryMWbq8jFmc; BDUSS_BFESS=2R5UzNPZzZ3ai1kNVlXcEZjVWc4ZnctT3ZVRmdGQllvOXpCb0JZNGljanFmMWxtRVFBQUFBJCQAAAAAAAAAAAEAAAA1MYH4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOryMWbq8jFmc; ZFY=DAt6xuFJrVO9Vof3C8Wq3xMauOxCp4CYAj4HYxdRdyg:C

第一行GET https://www.baidu.com/ HTTP/1.1是方法,URI,HTTP版本.就不多说了

  • Host: www.baidu.com:请求的服务器的域名和(可选的)端口号,用于虚拟主机的识别。没写端口就是默认值
    • HTTP默认端口是80
    • HTTPS默认端口是443

Content-Length和Content-Type在请求中不一定存在(请求没有body(GET请求)情况下就不存在),像上面我抓的这个包就是GET请求,里面就没有这两个字段.它们俩是成对出现的,只要有其中一个,另一个必定存在.

  1. Content-Length: 当请求包含实体内容时,表示实体内容的字节大小,有助于服务器正确处理请求体。
  2. Content-Type: 描述请求主体的MIME类型,如 application/x-www-form-urlencoded 表示表单数据,multipart/form-data 用于文件上传。application/json 表示数据为 json 格式
  • User-Agent: 客户端的用户代理信息,包括浏览器类型、版本、操作系统等,帮助服务器提供定制化的响应或统计分析。
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0.0.0 Safari/537.36 Edg/124.0.0.0

分析图:

image-20240510144930879

  • Referer: 发起请求的页面地址,用于追踪用户是从哪个页面链接过来的。这个在HTTP请求头中可有可没有

  • Cookie: 发送给服务器的Cookie信息,用于维持用户会话状态或个性化设置,是浏览器本地数据存储的一种机制。

Cookie: BIDUPSID=DD7326D9CB3E780AE232E272F9988EF1; PSTM=1700320963; BAIDUID=CB65E88DF6D23B274067D86F39E33F91:FG=1; H_WISE_SIDS=40171_40369_40376_40398_40416_40305_40458_39662_40511_40512_60044_60026_60035_60048_60058; H_WISE_SIDS_BFESS=40171_40369_40376_40398_40416_40305_40458_39662_40511_40512_60044_60026_60035_60048_60058; BAIDUID_BFESS=CB65E88DF6D23B274067D86F39E33F91:FG=1; COOKIE_SESSION=130_0_8_3_5_14_1_1_8_6_1_3_56_0_0_0_1713166585_0_1713181572%7C9%23580281_10_1665372810%7C4; BAIDU_WISE_UID=wapp_1713714319309_20; H_PS_PSSID=40305_40080_60138_60186; BDUSS=2R5UzNPZzZ3ai1kNVlXcEZjVWc4ZnctT3ZVRmdGQllvOXpCb0JZNGljanFmMWxtRVFBQUFBJCQAAAAAAAAAAAEAAAA1MYH4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOryMWbq8jFmc; BDUSS_BFESS=2R5UzNPZzZ3ai1kNVlXcEZjVWc4ZnctT3ZVRmdGQllvOXpCb0JZNGljanFmMWxtRVFBQUFBJCQAAAAAAAAAAAEAAAA1MYH4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOryMWbq8jFmc; ZFY=DAt6xuFJrVO9Vof3C8Wq3xMauOxCp4CYAj4HYxdRdyg:C

我们也可以在浏览器中看到有哪些cookie数据

image-20240510145718964

请求报头有很多,还有其它的一些如下所示:

  1. Accept: 指定客户端能够接收的内容类型(MIME类型),例如 text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8,表示优先接收HTML,然后是XML,最后是任何类型。
  2. Accept-Encoding: 客户端支持的内容编码方式,如gzip、deflate等,用于请求压缩内容以减少传输量。
  3. Accept-Language: 客户端期望接收的内容语言,如 en-US,en;q=0.5 表示首选英语(美国),其他英语也接受,但优先级较低。
  4. Authorization: 用于HTTP身份验证,包含用户的认证信息,如 Basic YWxhZGRpbjpvcGVuc2VzYW1lBearer your_token_here
  5. Cache-Control: 控制请求和响应的缓存机制,如 no-cache 表示不要使用缓存副本,必须从服务器重新获取。
  6. Connection: 指示对于当前事务完成后,是否关闭网络连接还是继续保持打开状态,如 keep-alive 表示持久连接。
  7. If-Modified-Since: 客户端缓存的资源最后修改时间,询问服务器资源是否有更新,用于条件请求。

6.HTTP响应

下图是刚才HTTP请求的响应报文

image-20240510151452242

内容如下:

HTTP/1.1 200 OK
Connection: keep-alive
Content-Encoding: gzip
Content-Security-Policy: frame-ancestors 'self' https://chat.baidu.com http://mirror-chat.baidu.com https://fj-chat.baidu.com https://hba-chat.baidu.com https://hbe-chat.baidu.com https://njjs-chat.baidu.com https://nj-chat.baidu.com https://hna-chat.baidu.com https://hnb-chat.baidu.com http://debug.baidu-int.com;
Content-Type: text/html; charset=utf-8
Date: Fri, 10 May 2024 07:14:05 GMT
Isprivate: 1
Server: BWS/1.1
Set-Cookie: H_PS_PSSID=40305_40080_60138_60237_60270_60275; path=/; expires=Sat, 10-May-25 07:14:05 GMT; domain=.baidu.com
Traceid: 1715325245044552423416257137435173222985
X-Ua-Compatible: IE=Edge,chrome=1
X-Xss-Protection: 1;mode=block
Transfer-Encoding: chunked

HTTP/1.1 200 OK:表示HTTP版本,状态码.

6.1 状态码

HTTP状态码是由三位数字组成的代码,服务器通过这些代码来告知客户端关于HTTP请求的状态。

  • 1xx (Informational - 信息性状态码): 这些状态码表示接收的请求正在处理,通常客户端不需要对它们做出进一步的动作。例如,100 Continue 表示客户端应继续其请求。
  • 2xx (Successful - 成功状态码): 表示请求已成功被服务器接收、理解,并接受了。最常见的状态码是 200 OK,表示请求已成功处理。
  • 3xx (Redirection - 重定向状态码): 表示需要客户端采取进一步的操作才能完成请求。例如,301 Moved Permanently 表示请求的资源已被永久移动到了新的URL。
  • 4xx (Client Error - 客户端错误状态码): 这类状态码指出客户端的请求有误,服务器无法处理。最熟知的例子是 404 Not Found,意味着请求的资源未找到。
  • 5xx (Server Error - 服务器错误状态码): 表示服务器在处理请求时发生错误。例如,500 Internal Server Error 指服务器遇到了未知错误,无法完成请求。

状态码有很多,熟悉常见的即可:

状态码含义
200 (OK)成功
301 永久重定向请求的资源已被永久的移动到新URI,返回信息会包括新的URI,浏览器会自动定向到新URI。
302 临时重定向与301类似。但资源只是临时被移动。客户端应继续使用原有URI
403 阻止访问客户端已知但没有访问权限
404 Not Found未找到请求的资源
405 方法不被允许不支持使用的请求方法,例如,表单需要使用 POST 但使用 GET 代替。
500 内部服务器错误服务器遇到某种问题、并且没有更好或更具体的错误代码
504 网关超时服务器处于请求中间状态。但是没有收到来自它路由到的服务器的及时响应

7.HTTP位于应用层(基于TCP)

HTTP(超文本传输协议)位于TCP/IP模型的应用层。这意味着它是建立在传输层协议之上,特别是基于TCP(传输控制协议)来实现数据的传输。TCP是一种面向连接的、可靠的传输协议,它保证了数据包的顺序传输和错误校验,确保数据的完整性。HTTP利用TCP提供的这些特性来确保从Web服务器到客户端(如浏览器)的请求和响应能够准确无误地传达。

当一个HTTP请求从客户端发出时,首先会通过TCP建立一个从客户端到服务器的连接(这通常涉及到TCP的三次握手过程)。接着,HTTP请求消息通过这个TCP连接发送到服务器,服务器处理请求后,再通过同一个TCP连接将HTTP响应消息返回给客户端。一旦数据交换完成,TCP连接可以被断开.

8.非持久和持久连接

HTTP协议中的非持久连接(Nonpersistent Connections)和持久连接(Persistent Connections)主要区别在于它们管理TCP连接的方式以及如何处理连续的请求和响应。

8.1 非持久连接

在HTTP的早期版本中,如HTTP/1.0,默认使用非持久连接。在这种模式下:

  • 每个HTTP请求/响应事务都使用一个新的TCP连接。
  • 服务器发送完响应后立即关闭TCP连接,不保留任何状态。
  • 如果客户端需要请求多个资源(如图片、CSS文件等),每一个都需要独立建立和关闭TCP连接,这导致了较高的延迟,因为每次连接都需要进行TCP的三次握手和四次挥手过程。
  • 这种方式增加了网络负担,因为每个连接都需要分配系统资源,且每次请求都包含了TCP连接的建立和拆除开销。

8.2 持久连接

随着HTTP协议的发展,特别是在HTTP/1.1中,持久连接成为了默认行为,显著提高了效率:

  • 一个TCP连接可以用于发送多个HTTP请求和接收多个响应,而不是每个请求都新建连接。
  • 服务器在发送完一个响应后,保持TCP连接的开启状态,允许同一个客户端发送额外的请求。
  • 这种模式减少了建立和关闭连接的开销,提高了整体性能,降低了延迟,特别是在请求多个资源的场景下更为明显。
  • 持久连接有两种形式:
    • 无流水线(Non-pipelined)持久连接:客户端需等待前一个请求的响应到达后,才能发送下一个请求。每个对象传输大约需要1个RTT(往返时间)。
    • 流水线(Pipelining)持久连接:理论上允许客户端在收到前一个响应之前发送多个请求,这样可以进一步减少延迟,但在实践中由于存在一些问题(如头部阻塞)并未广泛使用。

HTTP协议版本:

  • HTTP/1.0:较早的版本,每次请求响应都会建立新的TCP连接。
  • HTTP/1.1:引入了持久连接(Keep-Alive),提高了效率,支持管道化处理请求。
  • HTTP/2:进一步优化性能,支持多路复用、二进制分帧、头部压缩等特性。
  • HTTP/3:基于QUIC传输协议,改善了延迟和安全性,特别是在高延迟或不可靠的网络环境中。

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

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

相关文章

【考研数学】跟「武忠祥」真不如「张宇」吗??

现在是张宇老师强势版本! 24年之前,你说跟武忠祥老师好,我非常赞成,但是24年很多同学考完出来都说,早知道跟张宇了,都说24年考研数学偏,怪,难,计算量还大。 武忠祥老师…

刷题之字母异位词(leetcode 哈希表)

https://leetcode.cn/problems/group-anagrams/ class Solution { public:vector<vector<string>> groupAnagrams(vector<string>& strs) {unordered_map<string,vector<string>>map;//哈希表键为排序后或者处理后的字符串&#xff0c;值为某…

Web课外练习7

<!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>照片墙</title><style>body {display: …

P9748 [CSP-J 2023] 小苹果:做题笔记

目录 P9748 [CSP-J 2023] 小苹果 思路 代码 P9748 [CSP-J 2023] 小苹果 P9748 [CSP-J 2023] 小苹果 思路 先写几个看看规律 题意我们能看出来是三个三个一组的&#xff0c;然后每次取走的都是三个里面的第一个。我们应该很容易想到如果一轮的总数是三的倍数的话&#xff0…

Linux查看进程命令ps和top

Linux 是一种自由和开放源代码的操作系统&#xff0c;它的使用在全球范围内非常广泛。在 Linux 中&#xff0c;进程是操作系统中最重要的组成部分之一&#xff0c;它代表了正在运行的程序。了解如何查看正在运行的进程是非常重要的&#xff0c;因为它可以帮助你了解系统的运行状…

langchain_community FAISS保存与加载faiss index

参考: https://github.com/langchain-ai/langchain/issues/18285 https://api.python.langchain.com/en/latest/vectorstores/langchain_community.vectorstores.faiss.FAISS.html#langchain_community.vectorstores.faiss.FAISS 1、保存save_local import pandas as pd ##…

抓住无人直播带货风口,开启创业新机遇

无人直播带货&#xff0c;这一近年来在互联网浪潮中崭露头角的创业模式&#xff0c;正以其独特的魅力和优势&#xff0c;吸引着越来越多的创业者投身其中。在这个数字化、智能化的时代&#xff0c;无人直播带货 keJ0277 不仅降低了创业的门槛&#xff0c;还为创业者提供了全新的…

淘宝扭蛋机小程序:开启虚拟世界的惊喜之旅

随着科技的飞速发展&#xff0c;微信小程序已经成为了我们日常生活中不可或缺的一部分。淘宝扭蛋机小程序&#xff0c;作为这一潮流中的一颗璀璨新星&#xff0c;凭借其独特的创意和便捷的购物体验&#xff0c;迅速在电商领域崭露头角。 淘宝扭蛋机小程序的核心魅力在于其结合…

Cannot read properties of undefined (reading ‘init‘)报错

出现这个报错是印象项目没有引echarts包 npm i echarts 下包 然后在main.js中引入 import echarts from echarts Vue.prototype.$echarts echarts 如果还不行 import * as echarts from echarts; 更改一下引入方式 ok了

【Redis】数据类型

Redis数据类型&#xff08;5 3 1&#xff09; 五种基本数据类型 String字符串 特点 二进制安全&#xff0c;可以包含任何数据&#xff0c;如数字&#xff0c;字符串&#xff0c;jpg图片或者序列化的对象 应用场景 缓存&#xff1a; redis作为缓存层&#xff0c;mysql做持…

Nginx配置文件conf解释

系列文章目录 文章目录 系列文章目录前言 前言 前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到网站&#xff0c;这篇文章男女通用&#xff0c;看懂了就去分享给你的码吧。 Nginx(“engine x”…

全域运营平台是什么?优缺点有哪些?

当下&#xff0c;全域运营赛道逐渐兴盛&#xff0c;全域运营服务商的数量也开始呈现爆发趋势。在此背景下&#xff0c;很多人都对某些品牌的全域运营平台优缺点产生了浓厚的兴趣。由于小编只使用过微火全域运营平台&#xff0c;因此&#xff0c;本期会着重分析微火运营平台的优…

白鹿以前的短视频:四川京之华锦信息技术公司

白鹿以前的短视频&#xff1a;时光剪影中的创意火花与成长轨迹 在短视频风起云涌的互联网时代&#xff0c;每一位创作者的早期作品都如同时间胶囊&#xff0c;封存着最初的创意与梦想。提及“白鹿”这一名字&#xff0c;不少人心中会立刻浮现出那个凭借独特风格和不懈努力&…

OpenAI新模型GPT-4o“炸裂登场” 响应速度堪比真人 关键还免费!

GPT-4o模型基于来自互联网的大量数据进行训练&#xff0c;更擅长处理文本和音频&#xff0c;并且支持50种语言。更值得一提的是&#xff0c;GPT-4o最快可以在232毫秒的时间内响应音频输入&#xff0c;几乎达到了人类的响应水平。 GPT-4o有多“炸裂”&#xff1f;核心能力有三 G…

【制作100个unity游戏之26】unity2d横版卷轴动作类游戏4(附带项目源码)

最终效果 系列导航 文章目录 最终效果系列导航前言添加敌人受击动画第一种 配置闪烁动画第二种 受伤击退效果人物死亡源码完结 前言 欢迎来到【制作100个Unity游戏】系列&#xff01;本系列将引导您一步步学习如何使用Unity开发各种类型的游戏。在这第26篇中&#xff0c;我们将…

多元化、高辨识显示丨基于G32A1445的汽车尾灯解决方案

由刹车灯、倒车灯、转向灯、雾灯等组成的汽车尾灯&#xff0c;既能在光线低暗时发出照明信息&#xff0c;也可向周围环境传递车辆的行驶状态与意图信号&#xff0c;对于行车安全起着至关重要的作用。与传统尾灯相比&#xff0c;贯穿式汽车尾灯更加醒目、美观、安全&#xff0c;…

2024年将改变人类生活的七大技术

有没有想过未来会是什么样子&#xff1f;那么&#xff0c;不必等太久&#xff0c;因为2024年将会是充满惊人创新的一年&#xff0c;让你大开眼界。以下是七大新兴的科技创新趋势&#xff0c;它们无疑将在2024年改变我们的生活。 1. 人工智能技术 从智能手机、智能扬声器等日…

HI-TOP网关HT3S-DPM-ECS实现PROFIBUS DP大功率变频器与青岛港口汇川EtherCAT主站PLC通讯互联的案例研究

一、引言 随着工业自动化技术的不断发展&#xff0c;青岛港口寻求提升其物流自动化系统&#xff0c;以提高效率和可靠性&#xff0c;不同品牌和协议的工业设备之间的通讯互联成为了技术实现的重要挑战。在青岛港口&#xff0c;作为该系统核心的变频器和PLC之间需要无缝通讯&…

unity 学习笔记

一、 事件顺序 gameObjet Instantiate gameObjet.自定义函数 gameObjet.Start 二、预设体使用 例子&#xff1a;Button 点击创建 预设体 BagPanel

探索未来:Google I/O 2024 AI重磅发布一览

亲爱的读者们&#xff0c;大家期待已久的Google I/O开发者大会终于到来了&#xff01;今年的大会尤为特别&#xff0c;Google在发布会上大力强调了人工智能&#xff08;AI&#xff09;的重要性&#xff0c;可以说AI成为了绝对的主角。为了让大家快速了解今年的重点内容&#xf…