五、TCP 进阶机制

(一)TCP 头部标志位

TCP 头部的标志位是控制通信行为的 “开关”,常用标志位功能:

标志位含义典型场景
SYN请求建立连接三次握手第一步,发起连接请求
ACK响应报文确认回复对方,确认已收到数据
PSH携带数据通知告诉接收方 “立即从缓冲区取数据”,避免延迟
FIN请求断开连接四次挥手第一步,发起断开请求
RST复位连接强制重置异常连接(如网络拥塞时)
URG紧急数据标识标记 “紧急数据”,需优先处理

(二)TCP 安全可靠传输机制

1. 三次握手 & 四次挥手
  • 三次握手:通过 SYN/SYN+ACK/ACK 三次交互,确认双方收发能力,为可靠通信奠基。
  • 四次挥手:因服务端可能残留未发数据,需拆分 FIN/ACK/FIN/ACK 四步,保证数据发完再断开。
2. 应答机制

TCP 采用 **“序列号 + 确认号”** 实现可靠应答:

  • 发送方用 ** 序列号(Sequence Number)** 标记数据段的 “起始编号”;
  • 接收方回复确认号(Acknowledgment Number),值为 “收到的最后一个字节编号 + 1”,告诉发送方 “已收到到这里,下一个该发啥”。

示例:发送方发 [0-999] 数据,序列号为 0;接收方回复确认号 1000,表示 “0-999 已收到,继续发 1000 开头的数据”。

3. 超时重传机制

发送方数据发出后,若超时未收到确认号,则认为数据丢失,触发重传。类似 “快递没收到,重新发货”,保障数据不丢包。

4. 滑动窗口机制

TCP 用滑动窗口管理发送与确认:

  • 窗口内是 “已发送但未确认 + 待发送” 的数据;
  • 收到确认号后,窗口 “滑动”,释放已确认数据的缓冲区,继续发送新数据。
    ( 理解:已发送并确认、已发送未确认、即将发送、准备好的数据,随窗口滑动动态变化 )

(三)TCP 效率优化机制

1. 延迟应答机制

发送数据的同时,接收方不立即回复 ACK,而是等待一段时间(攒一批数据再回复),减少 ACK 报文数量,降低网络开销。

2. 流量控制机制

通过 TCP 头部 **“窗口大小(Window Size)”(滑动窗口)** 字段实现:

  • 接收方根据自身缓冲区剩余空间,动态调整 “窗口大小”;
  • 发送方依据窗口大小控制发送速率,避免接收方缓冲区溢出。
3. 捎带应答机制

ACK 报文有时候不单独发送,而是 “附着” 在应用层数据里一起发(类似于变为三次挥手),减少单独发 ACK 的次数,提升效率。

六、HTTP 协议

(一)万维网通信基础

  • WWW(万维网):由网页、服务器、客户端(浏览器)组成的信息系统,通过 URL 定位资源。
  • URL(统一资源定位符):格式 <协议>://<主机>:<端口>/<路径> ,示例:https://www.baidu.com/s?wd=关键词 ,精准定位网络资源。
  • HTTP(超文本传输协议):应用层协议,基于 TCP 传输,默认端口 80/8080,负责客户端与服务器的请求 - 响应交互。
  • HTML(超文本标记语言):浏览器解析后展示网页内容的语言,HTTP 响应报文里的 “实体主体” 常包含 HTML 代码。

(二)HTTP 通信流程

  1. 建立 TCP 连接:客户端与服务器通过 TCP 三次握手建立连接(如访问百度时,先建 TCP 连接 )。
  2. 发送 HTTP 请求报文:客户端向服务器发请求,包含 “请求方法(如 GET/POST)、URL、协议版本” 等(示例:GET / HTTP/1.1 表示用 GET 方法请求根路径资源 )。
  3. 接收 HTTP 响应报文:服务器处理请求后,回复包含 “状态码、响应头、实体主体(如 HTML 内容)” 的报文(示例:HTTP/1.1 200 OK 表示请求成功 )。
  4. 断开 TCP 连接:默认短连接(Connection: close )直接断开;长连接(Connection: keep-alive )会保持连接一段时间,复用传输其他资源。

(三)HTTP 报文格式

1. 请求报文结构(以 GET 为例)
请求行:方法 URL 版本 CRLF  (如:GET /index.html HTTP/1.1\r\n)
首部行:字段名: 值 CRLF    (如:Host: www.baidu.com\r\n)
...(更多首部行)
空行:CRLF
实体主体:(GET 通常无实体主体,POST 可带数据)
2. 响应报文结构
状态行:版本 状态码 短语 CRLF  (如:HTTP/1.1 200 OK\r\n)
首部行:字段名: 值 CRLF        (如:Content-Type: text/html\r\n)
...(更多首部行)
空行:CRLF
实体主体:(如 HTML 代码、文件内容等)
3. 状态码分类
状态码分类含义典型码值场景
1xx通知信息100表示 “继续”,常为中间响应
2xx成功200请求成功,服务器正常返回数据
3xx重定向302请求的资源 “搬家了”,需重新定向
4xx客户端错误404资源不存在;400 表示请求语法错
5xx服务器错误500服务器内部故障;502 表示网关错误

(四)HTTP 请求方法

HTTP 定义了多种请求方法,控制对资源的操作:

方法含义典型场景
OPTION查询选项探知服务器支持的方法
GET(常见)请求资源浏览网页、获取图片等(参数放 URL 里)
HEAD请求资源头部只获取响应头,不下载实体主体
POST(常见)提交数据登录、上传文件(参数放请求体)
PUT上传文档在指定 URL 存储文档(需权限)
DELETE删除资源删除指定 URL 对应的资源(需权限)
TRACE环回测试调试用,查看请求的传输路径
CONNECT代理连接用于代理服务器,建立隧道

(五)爬虫

爬虫(Web Crawler) 是一种自动化程序,模拟浏览器的 HTTP 请求 - 响应流程,批量抓取网络资源:

  1. 工作逻辑

    • 构造 HTTP 请求(模仿浏览器发 GET/POST),获取网页 HTML;
    • 解析 HTML 提取链接、数据;
    • 递归抓取新链接,形成 “自动浏览 - 采集” 的流程。

总结

  • TCP 核心:通过 “三次握手建连接、四次挥手断连接、序列号 + 确认号应答、滑动窗口控速率”,实现可靠且高效的传输。
  • HTTP 核心:基于 TCP 传输,用请求 - 响应模式交互,通过 URL 定位资源,用状态码反馈结果,是万维网的 “通信语言”。
  • 爬虫本质:自动化的 HTTP 请求 - 解析工具。

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

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

相关文章

[element-plus] el-table在行单击时获取行的index

el-table中添加 row-class-name&#xff0c;绑定row-click事件 <el-table:data"list":row-class-name"tableRowClassName"row-click"handleRowClick" > </el-table>给el-table中的每个row对象里添加index属性 tableRowClassName({…

真实应急响应案例记录

成功溯源的应急背景事件背景&#xff1a;服务器被植入博彩黑链入侵排查查看日志&#xff1a;发现Struts2漏洞利用痕迹通过process monitor工具监控Web进程(java.exe),发现执行了以下命令:攻击入侵者服务器查看Web日志,可发现攻击者的的Ip地址61.139.77.xx (四川省成都市 61.139…

RAG学习(五)——查询构建、Text2SQL、查询重构与分发

检索优化&#xff08;二&#xff09; 一、查询构建 在前面的章节中&#xff0c;我们探讨了如何通过向量嵌入和相似度搜索来从非结构化数据中检索信息。然而&#xff0c;在实际应用中&#xff0c;我们常常需要处理更加复杂和多样化的数据&#xff0c;包括结构化数据&#xff0…

【typenum】 28 数组长度和二进制数的位数(Len)

一、源码 这段代码实现了一个类型级别的长度计算系统&#xff0c;用于在编译时计算数组长度和二进制数的位数。 定义&#xff08;type_operators.rs&#xff09; /// A **type operator** that gives the length of an Array or the number of bits in a UInt. #[allow(clippy:…

【Docker项目实战】使用Docker部署Hibiscus.txt简单日记工具

【Docker项目实战】使用Docker部署Hibiscus.txt简单日记工具一、Hibiscus介绍1.1 Hibiscus简介1.2 主要特点二、本次实践规划2.1 本地环境规划2.2 本次实践介绍三、本地环境检查3.1 检查Docker服务状态3.2 检查Docker版本3.3 检查docker compose 版本四、拉取镜像五、部署Hibis…

openharmony之启动恢复子系统详解

OpenHarmony的启动恢复子系统负责整个系统的启动流程&#xff0c;其中init进程是整个系统启动的第一个用户态进程&#xff08;PID1&#xff09;&#xff0c;承担着系统初始化的核心职责 &#x1f3af; 目录结构 &#x1f4cb; 理论基础&#x1f50d; 源码结构分析⚙️ 配置体系…

Jenkins + SonarQube 从原理到实战四:Jenkins 与 Gerrit 集成并实现自动任务

前言 前面我们已经部署了 SonarQube&#xff0c;并加入了 sonar-cxx 插件&#xff0c;实现了 C/C 代码扫描&#xff0c;同时打通了 Windows AD 域&#xff0c;实现了 AD 用户登录与权限管控。 原计划本篇&#xff08;第四篇&#xff09;完成 Jenkins Gerrit Sonar 的 CI 部分…

基于Spring Boot与Redis的电商场景面试问答解析

基于Spring Boot与Redis的电商场景面试问答解析 第一轮&#xff1a;基础问题 面试官&#xff1a; 你好小C&#xff0c;今天我们以电商场景为背景进行技术面试。第一个问题&#xff0c;解释一下Spring Boot的核心优势是什么&#xff1f; 小C&#xff1a; Spring Boot就是开箱即用…

CUDA安装,pytorch库安装

一、CUDA安装 1.查看自己电脑适配的CUDA的最高版本 在命令提示符里输入nvidia-smi表格右上角显示的CUDA版本是该电脑适配的最高版本一般下载比该版本低一点的版本&#xff0c;因为会更稳定 由于本机没有GPU所以会出现这个报错&#xff0c;如果有GPU会出现如下报告&#xff1a…

力扣 第 463 场周赛

1. 按策略买卖股票的最佳时机 给你两个整数数组 prices 和 strategy&#xff0c;其中&#xff1a; prices[i] 表示第 i 天某股票的价格。 strategy[i] 表示第 i 天的交易策略&#xff0c;其中&#xff1a; -1 表示买入一单位股票。 0 表示持有股票。 1 表示卖出一单位股票。 同…

Matplotlib 可视化大师系列(六):plt.imshow() - 绘制矩阵与图像的强大工具

目录Matplotlib 可视化大师系列博客总览Matplotlib 可视化大师系列&#xff08;六&#xff09;&#xff1a;plt.imshow() - 绘制矩阵与图像的强大工具一、 plt.imshow() 是什么&#xff1f;何时使用&#xff1f;二、 函数原型与核心参数三、 从入门到精通&#xff1a;代码示例示…

小游戏AssetBundle加密方案解析

据游戏工委数据统计&#xff0c;2025年1-6月&#xff0c;国内小程序游戏市场实际销售收入232.76亿元&#xff0c;同比增长40.2%。其中内购产生收入153.03亿元&#xff0c;占比65.7%&#xff0c;呈逐年提升趋势。爆款频出的小游戏&#xff0c;已经成为当下游戏行业的重要增长点。…

linux编程----网络通信(TCP)

1.TCP特点1.面向数据流&#xff1b;2.有连接通信&#xff1b;3.安全可靠的通信方式&#xff1b;4.机制复杂&#xff0c;网络资源开销大&#xff1b;5.本质只能实现一对一的通信&#xff08;可使用TCP的并发方式实现一对多通信&#xff09;&#xff1b;2.TCP的三次握手与四次挥手…

HTTP请求的执行流程

HTTP请求的执行流程是一个系统化的过程&#xff0c;涉及多个网络协议和交互步骤。以下是完整的流程分解&#xff0c;结合关键技术和逻辑顺序&#xff1a;&#x1f310; 一、连接准备阶段​​URL解析与初始化​​客户端&#xff08;浏览器/应用&#xff09;解析目标URL&#xff…

联想win11笔记本音频失效,显示差号(x)

该博客可以解答 常见问题详情 Win10系统安装更新后右下角声音出现红叉&#xff0c;电脑也没有声音&#xff0c; 通过设备管理器查看“系统设备”发现“音频部分“出现黄色感叹号&#xff0c; 更新驱动、卸载驱动与第三方工具检测安装后重启都不行。 故障原因 应该是用户曾经…

elasticsearch 7.x elasticsearch 使用scroll滚动查询中超时问题案例

一 问题 1.1 问题描述 2025-08-21 16:57:53.646 | WARN ||||||||||||| scheduling-1 | ElasticsearchRestTemplate | Could not clear scroll: Unable to parse response body; nested exception is ElasticsearchStatusException [Unable to parse response body]; nested: …

高并发内存池(1)-定长内存池

高并发内存池&#xff08;1&#xff09;-定长内存池 可以采用两种方式&#xff1a; 方式1&#xff1a; template <size_t N>方式2&#xff1a; template <class T>获取到T对象大小的内存池&#xff0c;更推荐使用方式二&#xff0c;因为可以动态灵活调整类型 需要的…

第三阶段sql server数据-4:数据库脚本生成,备份与还原,分离与附加操作的图文步骤

1_生成数据库脚本&#xff08;1&#xff09;在数据库上右键选择任务&#xff08;2&#xff09;选择生成脚本&#xff08;3&#xff09;选择下一步&#xff0c;如果下次不想显示此页面&#xff0c;可勾选不再显示此页&#xff08;4&#xff09;如果导出全部数据&#xff0c;选择…

【C++闯关笔记】STL:string的学习和使用(万字精讲)

​系列文章目录 第零篇&#xff1a;从C到C入门&#xff1a;C有而C语言没有的基础知识总结-CSDN博客 第一篇&#xff1a;【C闯关笔记】封装①&#xff1a;类与对象-CSDN博客 第二篇&#xff1a;【C闯关笔记】封装②&#xff1a;友元与模板-CSDN博客 第三篇&#xff1a;【C闯…

06 - spring security角色和权限设置

spring security角色和权限设置 文档 00 - spring security框架使用01 - spring security自定义登录页面02 - spring security基于配置文件及内存的账号密码03 - spring security自定义登出页面04 - spring security关闭csrf攻击防御05 - spring security权限控制 角色和权限…