TCP 的其他机制

TCP头部的标志位

SYN:请求建立连接标志位

ACK:响应报文标志位

PSH:携带数据标志位,通知接收方该从缓冲区读数据

FIN:请求断开连接标志位

RST:复位标志位

URG:紧急数据标志位

安全可靠机制

  1. 三次握手和四次挥手机制

  2. 应答机制

    • TCP对于每一包数据都会给出相应的应答。

    • 发送数据时序列号表示这包数据的起始编号,响应报文中的确认号是接收方收到的最后一个字节编号+1。

  3. 超时重传机制

    • 当数据发送出去等待指定时间没有收到响应,此时认为这包数据丢失,则进行重传。

  4. 滑动窗口机制

    • 一段缓冲区,缓存TCP已发送未收到响应、准备发送等数据。

提高效率机制

  1. 延迟应答机制:发送数据的同时可以等待应答。

  2. 流量控制机制:结合TCP头部的窗口大小,动态调整发送速率。

  3. 捎带应答机制:ACK报文可能和应用层的数据同时发送。

HTTP 协议

WWW(万维网)

  1. 万维网服务器后台如何标记万维网数据

    • URL:统一资源定位符

  2. 万维网客户端与万维网服务器之间通信方式

    • HTTP:超文本传输协议

  3. 万维网客户端如何展示请求的数据

    • HTML:超文本标记语言

示例 URL:

https://www.baidu.com/
百度主页
https://www.baidu.com/s?wd=%E7%89%B9%E6%9C%97%E6%99%AE%E5%B7%A6%E6%89%8B%E5%8F%88%E6%B7%BB%E2%80%9C%E6%96%B0%E6%B7%A4%E9%9D%92%E2%80%9D+%E7%99%BD%E5%AE%AB%E5%9B%9E%E5%BA%94&sa=fyb_n_homepage&rsv_dl=fyb_n_homepage&from=super&cl=3&tn=baidutop10&fr=top1000&rsv_idx=2&hisfilter=1

HTTP 协议基本信息

应用层协议

端口:80

备用端口:8080

基于传输层的TCP协议

HTTP通信过程

1.HTTP的报文格式

(1)开始行,用于区分是请求报文还是响应报文。在请求报文中的开始行叫做请求行(Request-Line),而在响应报文中的开始行叫做状态行(Status-Line)。在开始行的三个字段之间都以空格分隔开,最后的“CR”和“LF”分别代表“回车”和“换行”。

(2)首部行,用来说明浏览器、服务器或报文主体的一些信息。首部可以有好几行,但也可以不使用。在每一个首部行中都有首部字段名和它的值,每一行在结束的地方都要有“回车”和“换行”。整个首部行结束时,还有一空行将首部行和后面的实体主体分开。

(3)实体主体(entity body),在请求报文中一般都不用这个字段,而在响应报文中也可能没有这个字段。

2. HTTP 请求报文
GET / HTTP/1.1\r\n
Host: news.sohu.com\r\n
User-Agent: Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:109.0) Gecko/20100101 Firefox/113.0\r\n
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8\r\n
Accept-Language: en-US,en;q=0.5\r\n
Connection: keep-alive\r\n
\r\n

 

2.1HTTP 请求报文分析
GET / HTTP/1.1\r\n

GET:请求方法,表示客户端要获取资源。

/:请求的资源路径,这里是网站根目录。

HTTP/1.1:使用的 HTTP 协议版本。

Host: news.sohu.com\r\n

Host:指定请求的目标主机域名(HTTP/1.1 必须带)。

User-Agent: Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:109.0) Gecko/20100101 Firefox/113.0\r\n

User-Agent:客户端软件信息,通常用来识别浏览器类型、操作系统。

Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8\r\n

Accept:客户端能接收的数据类型(MIME 类型),并带权重(q=0.9 表示优先级)。

Accept-Language: en-US,en;q=0.5\r\n

Accept-Language:客户端支持的语言,优先 en-US(美式英语),其次 en。

Connection: keep-alive\r\n

Connection:连接方式。

        keep-alive:保持长连接,复用 TCP 连接,提升效率。

        close(如果是)表示请求完成后关闭连接。

\r\n

空行:分隔 请求头部请求体

GET 请求一般没有请求体。

3. HTTP 响应报文
HTTP/1.1 200 OK\r\n
Date: Mon, 25 Aug 2025 06:14:56 GMT\r\n
Content-Type: text/html;charset=utf-8\r\n
Server: openresty\r\n
Vary: Accept-Encoding\r\n
Vary: Origin\r\n
Vary: Access-Control-Request-Method\r\n
Vary: Access-Control-Request-Headers\r\n
Trace-Id: 15e6e7862abd49fdb1c327a6dbeb200d.10490.17561024969448219\r\n
Data-Source:\r\n
X-Content-Type-Options: nosniff\r\n
X-XSS-Protection: 0\r\n
S-REQ-ID: 17348448226369344247\r\n
S-REQ-TYPE: 0\r\n
X-Cache-Lookup: Cache Miss\r\n
Content-Encoding: gzip\r\n
Cache-Control: no-cache\r\n
Transfer-Encoding: chunked\r\n
X-NWS-LOG-UUID: 17348448226369344247\r\n
Connection: keep-alive\r\n
X-Cache-Lookup: Cache Miss\r\n
\r\n
<!DOCTYPE html>
<html>
<head>
<script>
if(window&&window.performance&&typeof window.performance.now==='function'){!window.MptcfePerf?window.MptcfePerf={headst:+new Date()}:window.MptcfePerf.headst=+new Date()
}
</script>
<meta charset=utf-8>
<meta http-equiv=X-UA-Compatible content="IE=edge">
<meta http-equiv=x-dns-prefetch-control content=on>
<meta name

 

3.1HTTP 响应报文分析
HTTP/1.1 200 OK\r\n

HTTP/1.1:协议版本。

200 OK:状态码 + 状态描述,表示请求成功。

Date: Mon, 25 Aug 2025 06:14:56 GMT\r\n

Date:服务器生成响应的时间(GMT)。

Content-Type: text/html;charset=utf-8\r\n

Content-Type:响应内容的类型(这里是 HTML),编码方式为 UTF-8。

Server: openresty\r\n

Server:服务器软件信息(这里是 openresty)。

Vary: Accept-Encoding\r\n
Vary: Origin\r\n
Vary: Access-Control-Request-Method\r\n
Vary: Access-Control-Request-Headers\r\n

Vary:缓存相关头部,表示缓存时需考虑不同的请求头差异。

Trace-Id: 15e6e7862abd49fdb1c327a6dbeb200d.10490.17561024969448219\r\n

Trace-Id:请求跟踪 ID,方便排查问题。

Data-Source:\r\n

Data-Source:可能是内部使用的字段,这里没有值。

X-Content-Type-Options: nosniff\r\n

X-Content-Type-Options:安全相关,阻止浏览器 MIME 类型猜测。

X-XSS-Protection: 0\r\n

X-XSS-Protection:是否启用 XSS 防护(0 = 关闭)。

S-REQ-ID: 17348448226369344247\r\n
S-REQ-TYPE: 0\r\n

S-REQ-ID / S-REQ-TYPE:服务器自定义字段,用于内部请求标记。

X-Cache-Lookup: Cache Miss\r\n

X-Cache-Lookup:缓存命中情况,这里是未命中(Miss)。

Content-Encoding: gzip\r\n

Content-Encoding:传输时采用 gzip 压缩。

Cache-Control: no-cache\r\n

Cache-Control:缓存控制,这里禁止缓存。

Transfer-Encoding: chunked\r\n

Transfer-Encoding:分块传输编码,适合动态内容。

X-NWS-LOG-UUID: 17348448226369344247\r\n

X-NWS-LOG-UUID:日志追踪 ID。

Connection: keep-alive\r\n

Connection:响应后的 TCP 连接状态,这里保持长连接。

\r\n

空行:分隔 响应头部响应体

<!DOCTYPE html><html><head>...

响应体:实际的网页 HTML 内容。

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

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

点评《JMeter核心技术、性能测试与性能分析》一书

《JMeter核心技术、性能测试与性能分析》深度评价‌该书作为清华大学出版社2025年推出的性能测试领域新作&#xff0c;展现了鲜明的技术深度与实践导向性&#xff0c;具体评价如下&#xff1a;‌1. 内容体系&#xff1a;系统性与前沿性兼备‌‌知识架构完整‌&#xff1a;覆盖J…

深入解析:为什么应该避免使用 atoi、atol 和 atof 函数

问题本质深度分析 简化源码展示&#xff1a;看清本质 atoi 的典型实现&#xff1a; // atoi 的简化实现 - 看清问题所在 int atoi(const char *str) {int sign 1;int result 0;// 跳过空白字符while (isspace(*str)) {str;}// 处理符号if (*str -) {sign -1;str;} else if …

计算机网络:HTTP、抓包、TCP和UDP报文及重要概念

一、http超文本传输协议&#xff08;应用层&#xff09;&#xff08;一&#xff09;万维网1.工作过程&#xff08;二&#xff09;统一资源定位符&#xff08;URL&#xff09;http的默认端口号是80&#xff08;三&#xff09;HTTP报文结构请求报文&#xff1a;客户端-->服务器…

three.js+WebGL踩坑经验合集(8.3):合理设置camera.near和camera.far缓解实际场景中的z-fighting叠面问题

本篇延续上篇内容&#xff1a; three.jsWebGL踩坑经验合集(8.2):z-fighting叠面问题和camera.near的坑爹关系-CSDN博客 笔者也是狠佩服自己&#xff1a;一个还没划上句号的文章都能拖了半年才继续写。这次也是运气好&#xff0c;工作上再次遇到叠面问题&#xff0c;可以借这机…

记一次生产环境Hbase填坑之路、Hbase客户端登陆、kerberos认证、端口列表、Pod上手撕代码【Hbase最佳实践】

背景 1、软件系统&#xff08;转储系统&#xff09;需要向生产环境迁移&#xff1a;迁到国产操作系统、国产资源池&#xff08;Hbase存储不变&#xff09; 2、老环境上的转储系统本身存在写入hbase的性能问题、及部分省份写入hbase失败的问题&#xff08;20%失败&#xff09;…

C++知识杂项搜集

C使用如下库优化事件的注册和发布&#xff0c;ZeroMQzmqpp 通信机制&#xff0c;请求-应带方式&#xff0c;push-pull方式&#xff0c;publisher-subcriber发布-订阅模式eventpp 事件注册和回调sockpp tcp/udp封装threadpool 线程池Jinja 一个 python 的模板实现配置是实现…

连锁零售排班难?自动排班系统来解决

零售、连锁企业门店多、员工杂、班次密&#xff0c;排班时总有绕不开的问题&#xff1a;跨门店调人成本怎么算&#xff1f;节假日高峰期人手怎么补&#xff1f;全职兼职混合排班怎么平衡&#xff1f;其实&#xff0c;这些场景化难题&#xff0c;盖雅自动排班系统早就有了针对性…

Android用Coil 3检查媒体资源是否有效,Kotlin

Android用Coil 3检查媒体资源是否有效&#xff0c;Kotlin WorkerThreadfun checkImage(ctx: Context, uri: Uri): Boolean {val t System.currentTimeMillis()val request ImageRequest.Builder(ctx).data(uri).memoryCacheKey(uri.toString()).precision(Precision.INEXACT)…

Seaborn数据可视化实战:Seaborn数据可视化入门-绘制统计图表与数据分析

使用Seaborn绘制统计图表&#xff1a;从入门到精通 学习目标 通过本课程的学习&#xff0c;你将掌握如何使用Seaborn库绘制各种统计图表&#xff0c;包括直方图、密度图和箱形图。你将了解这些图表在数据分析中的应用&#xff0c;以及如何通过图表来更好地理解数据。 相关知识点…

​Mac用户安装JDK 22完整流程(Intel版dmg文件安装指南附安装包下载)​

一、准备工作 ​确认你的 Mac 是 Intel 芯片的​ 如果你的 Mac 是 2020 年及之前出的&#xff0c;大概率是 Intel 芯片&#xff0c;可以用这个 ​jdk-22_macos-x64_bin.dmg。如果是 2020 年之后出的 M1 或 M2 芯片的 Mac&#xff08;就是 Apple 芯片&#xff09;&#xff0c;那…

C语言——链表指定区间反转

目录 1.创建一个链表 1.链表节点定义 2.创建新节点 3.链表生成&#xff08;输入&#xff09; 4.链表输出 2.链表指定区间反转函数 1.创建哑节点 2.找到第m-1位的节点&#xff0c;开始 反转 3.连接反转后的链表与未反转的链表 3.未使用哑节点的运行结果 这段代码可以…

设计一个完整可用的 Spring Boot Starter

目录 1. 创建项目结构 2. 添加核心依赖 (pom.xml) 3. 实现核心组件 (1) 配置属性类 (2) 服务实现类 (3) 自动配置类 4. 注册自动配置 5. 配置元数据支持 6. 打包发布 7. 其他项目引用 (1) 添加依赖 (2) 配置参数 (3) 使用服务 设计要点 要设计一个完整可用的 Spr…

Bright Data 代理 + MCP :解决 Google 搜索反爬的完整方案

个人主页&#xff1a;chian-ocean 专栏 引言 人工智能技术和大数据的发展&#xff0c;实时访问网页数据成为许多应用的核心需求。相比传统方案依赖静态或定期更新的数据&#xff0c;AI可以实时抓取和分析网页上的及时更新的信息&#xff0c;迅速适应变化的环境&#xff0c;提…

Java基础第4天总结(多态)

package com.itheima.duotai;public class Animal {String name "动物";public void run(){System.out.println("动物会跑~~~");} }package com.itheima.duotai;public class Wolf extends Animal{String nama "狼";Overridepublic void run(…

Git克隆时遇到“Filename too long“错误的完美解决方案

Git克隆时遇到"Filename too long"错误的完美解决方案 问题描述 在使用Git克隆项目时&#xff0c;你是否遇到过这样的错误&#xff1a; $ git clone gitexample.com:project.git Cloning into project... remote: Enumerating objects: 1883, done. remote: Count…

分享一个基于Python与spark大数据的护肤品市场用户行为分析与可视化平台,基于hadoop的护肤品使用行为追踪与分析可视化平台的设计与实现

&#x1f495;&#x1f495;作者&#xff1a;计算机源码社 &#x1f495;&#x1f495;个人简介&#xff1a;本人八年开发经验&#xff0c;擅长Java、Python、PHP、.NET、Node.js、Spark、hadoop、Android、微信小程序、爬虫、大数据、机器学习等&#xff0c;大家有这一块的问题…

页面中嵌入Coze的Chat SDK

Coze 为将 AI 聊天机器人(Bot)嵌入您的网页提供了两种主流方式:Web SDK 和 API 接口调用。它们分别适用于不同的场景,下面我将为您介绍这两种方法,并提供一些选择建议。 特性 Web SDK API 接口调用 实现方式 引入一段JS代码,快速嵌入一个预制的聊天窗口 通过HTTP API发送…

DataEase+MaxKB:让BI再多个“A”

一、前言当前DataEase BI更多聚焦于BI展示层&#xff0c;然而&#xff0c;在与组件Copilot 以及后续计划替换的 Sqlbot的融合方面&#xff0c;目前仍存在一些亟待解决的问题&#xff0c;当它们尝试与 DataEase 进行结合应用时&#xff0c;出现了两种较为突出的状况。一方面&…

VUE 的弹出框实现图片预览和视频预览

这是一个基于Vue3封装的媒体预览组件&#xff0c;主要功能包括&#xff1a;多格式支持&#xff1a;可同时预览图片和视频图片操作功能&#xff1a;缩放&#xff08;支持滚轮缩放和按钮控制&#xff09;旋转&#xff08;90度增量旋转&#xff09;拖拽&#xff08;仅在放大状态下…

【Linux基础知识系列】第一百零九篇 - 使用shell的输入与输出重定向

在 Linux 系统中&#xff0c;Shell 是用户与操作系统交互的界面&#xff0c;通过命令行输入命令来执行各种操作。输入与输出重定向是 Shell 编程中非常重要的概念&#xff0c;它允许用户将命令的输出保存到文件中&#xff0c;或者从文件中读取输入&#xff0c;从而实现更灵活的…