当前位置: 首页 > news >正文

HTTP 协议与TCP 的其他机制

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.dtcms.com/a/349880.html

相关文章:

  • excel 破解工作表密码
  • Python之Flask快速入门
  • Redis类型之List
  • 自然语言处理——07 BERT、ELMO、GTP系列模型
  • lesson46-1:Linux 常用指令全解析:从基础操作到高效应用
  • Docker:常用命令、以及设置别名
  • 数据挖掘 6.1 其他降维方法(不是很重要)
  • 聊聊负载均衡架构
  • 关于窗口关闭释放内存,主窗口下的子窗口关闭释放不用等到主窗口关闭>setAttribute(Qt::WA_DeleteOnClose);而且无需手动释放
  • 【Python】QT(PySide2、PyQt5):列表视图、模型、自定义委托
  • 【芯片后端设计的灵魂:Placement的作用与重要性】
  • SQL 语句拼接在 C 语言中的实现与安全性分析
  • 跨语言统一语义真理及其对NLP深层分析影响
  • 2.3零基础玩转uni-app轮播图:从入门到精通 (咸虾米总结)
  • Python 实战:内网渗透中的信息收集自动化脚本(3)
  • 苹果公司即将启动一项为期三年的计划
  • Linux应急响应一般思路(三)
  • 蜗牛播放器 Android TV:解决大屏观影痛点的利器
  • C/C++ 指针与函数
  • Tesseract OCR之页面布局分析
  • 朴素贝叶斯:用 “概率思维” 解决分类问题的经典算法
  • ​Visual Studio + UE5 进行游戏开发的常见故障问题解决
  • 【区间DP】P1063 [NOIP 2006 提高组] 能量项链
  • 基于深度学习的人声分离系统设计与实现
  • Apache Commons Math_Java科学计算的利器
  • AP服务发现中两条重启检测路径
  • 南京魔数团:AR技术引领远程协作新纪元
  • C++ Core Guidelines 核心理念
  • ios webgl音频问题
  • 深入解析:为什么应该避免使用 atoi、atol 和 atof 函数