http请求与响应,TCP三次握手&四次分手

2023-11-02

        从前端发起请求到后台的整个过程,是一个面试中经常遇到的问题。大概的流程想必有一点基础的人都明白,但是要细说,却未必能一一道出来,曾经老师教过的知识也都差不多忘干净了。所以,我上网找了点资料,加上自己的理解,做个记录。


**********************************************************  华丽的分割线 ******************************************************************


一、HTTP是什么

        http(HyperText Transfer Protocol),超文本传输协议,是互联网上应用最广泛的一种网络协议,所有www文件都必须遵守的一个标准,是以 ASCII 码传输,建立在 TCP/IP 协议之上的应用层规范。说白了,就是大家都约好互相之间按照一种固定的规则来进行通讯。

        http也可以说成是一种客户端和应答服务器端请求和应答的标准(TCP)。通过使用浏览器或其他工具(如google的Postman),客户端发起一个到应答服务器上指定端口(如Tomcat的8080或jmx的1099等)的http请求,或者反过来,服务器给客户端发送一个回应。在客户端和应答服务器端可能存在多个中间层,比如代理、网关或者隧道。



二、HTTP请求报文

        http请求报文是指客户端到服务器端的消息,客户端通过发送http请求向服务器请求对资源的访问。包括三个部分:请求行、请求头部、请求数据。请求方法有 OPTIONS、GET、HEAD、POST、PUT、DELETE、TRACE、CONNECT 这几种

       1.请求行:包含请求方法、uri和协议的版本,用空格分隔,例如:GET/sample.jsp HTTP/1.1

        2.请求头部:包含有关客户端环境及请求正文的信息,如请求正文长度、浏览器所用编码格式等,例如;

Accept:image/gif.image/jpeg.*/*

Accept-Language:zh-cn

Connection:Keep-Alive

Host:localhost

User-Agent:Mozila/4.0(compatible:MSIE5.01:Windows NT5.0)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

http请求与响应,TCP三次握手&四次分手 的相关文章

  • 如何在 Laravel 中禁用 JSON 响应的分块编码?

    我从 Laravel 中的控制器方法返回一个数组 Laravel 将此解释为我想发送 JSON 这很好 但它没有设置Content Length并改为使用Transfer Encoding chunked 我的回复很小 所以我不想把它们分块
  • 静默地将 api 资源移动到另一个 url

    我已经用 WepApi 2 编写的 api 与主网站紧密结合 我决定将其与另一个网络应用程序解耦 以使事情更加隔离 我遵循了这样的步骤 将所有 API 控制器提取到另一个项目 创建属性以将当前使用旧 URL 的所有用户重定向到新 URL 由
  • iPhone - 从网络服务器获取文件的上次修改日期

    我想检查网络服务器上文件的上次修改日期 任何帮助都会很棒 谢谢 NSURLRequest request NSURLRequest alloc initWithURL aURL NSHTTPURLResponse response NSUR
  • Node.JS Web 服务器中的安全性

    所以 我正在学习 Node JS 到目前为止我很喜欢它 我已经有几个项目在工作了 我想我可以在其中使用nodejs 不过 我担心安全问题 如果我使用 Node JS http 模块编写自定义 Web 服务器 我是否可能非常容易受到攻击 Ap
  • HTTP实时音频流服务器

    作为概念验证 我需要创建一个 HTTP 服务器 该服务器在 GET 请求时应启动连续的非编码 非压缩音频数据流 WAV PCM16 我们假设音频数据是 4096 个随机生成的单声道音频样本块 采样率为 44 1kHz 我应该在 HTTP 响
  • $http.get 和 method:'GET' 之间的区别

    我正在使用 Spring Data REST 并有一个 MySQL DB 来管理我的数据 我使用 AngularJS 编写了第一页 并希望从数据库中获取数据 为了获取我的数据 我知道有两种不同的方式 http get http myURL
  • Jsoup http 日志记录

    有没有办法记录http请求和响应 我们假设以下请求 Connection Response res Jsoup connect LOGIN URL HERE data user USER pass PASS method Connectio
  • 如何在C++中使用Curl获取HTTP响应字符串

    我对 HTTP 命令和 libcurl 库非常陌生 我知道如何获取 HTTP 响应代码 但不知道如何获取 HTTP 响应字符串 以下是我为获取响应代码而编写的代码片段 任何有关如何获取响应字符串的帮助将不胜感激 curl easy seto
  • “双点”可以作为 URL 路径部分的一部分吗

    在 URL 中使用父目录双点是否有效且安全 如下例所示 http example com path to file jpg RFC3986 https www rfc editor org rfc rfc3986定义 URI 它描述了路径如
  • 如何通过 HTTP POST 发送充满对象的 NSArray?

    我在 iPhone 端有一个产品 购物清单 由具有名称 product id 等的产品对象组成 我希望将此列表发送到服务器 在那里我将服务器上的列表与 iphone 中的列表进行比较 以合并所做的更改并将合并的列表发送回 iphone 如何
  • 由于请求的资源上不存在“Access-Control-Allow-Origin”标头,无法获取与 Axios 的链接请求

    我正在尝试使用 cryptocompare api 来获取 axios 的 coindata 列表 但我不知道如何解决这个问题 我相信这是一个 CORS 问题 但我不确定 完整错误如下 加载失败https www cryptocompare
  • .NET 中有什么方法可以以编程方式侦听 HTTP 流量吗?

    我正在使用浏览器自动化来测试网站 但我需要验证来自浏览器的 HTTP 请求 即图像 外部脚本 XmlHttpRequest 对象 有没有一种方法可以以编程方式实例化代理以供浏览器使用以查看其发送的内容 我已经在使用 Fiddler 来监视流
  • Chrome 在传输一定量的数据后挂起 - 等待可用的套接字

    我有一个浏览器游戏 最近我开始向游戏添加音频 Chrome 无法加载整个页面并卡在 91 requests 8 1 MB transferred 并且不再加载任何内容 它甚至破坏了所有其他选项卡中的网站 说Waiting for avail
  • Django 响应总是用 text/html 分块无法设置内容长度

    在我的Django应用程序的views py中 我在尝试设置以下HTTP标头字段后返回一个HttpResponse对象 Create a Response Object with the content to return response
  • 使用 Http Post 发送图像

    我想使用 Http Post 将图像从 android 客户端发送到 Django 服务器 该图像是从图库中选择的 目前 我正在使用列表值名称 Pairs 将必要的数据发送到服务器并接收来自 Django 的 JSON 响应 是否可以对图像
  • Access-Control-Allow-Origin值跨站缓存

    我正在尝试编写一个 nginx 配置来处理 http 和 https 上的两个站点 只要客户端从不访问这两个站点 它似乎就可以工作 但如果它们这样做 就会出现缓存 跨站点问题 Allow cross origin location eot
  • 如何使用 Ruby on Rails 3 检查 HTTP 请求的“Content-Length”字段?

    我正在使用 Ruby on Rails 3 在我的视图文件中我有以下代码 为了避免服务器过载 我会在服务器接收上传文件之前检查上传文件的大小 这是因为 按下表单的提交按钮 服务器会先完整接收文件 然后再检查文件 我知道一个HTTP 请求有标
  • 使用 Anypoint Studio (MULE) 在本地主机上找不到资源

    我尝试按照 MuleSoft 网站上建议的教程进行操作 我首先从这个例子开始
  • 如何在android中创建nanohttpd服务器?

    其实我也查过一些问题 然后去github上找了一下 但我是新来的 我无法理解这个例子 我想在android中创建http服务器 这样我就可以在PC浏览器中访问它 我有一个类扩展 nanohttpd 的实例 但服务器无法工作 不知道为什么 我
  • Python Requests 库重定向新 url

    我一直在浏览 Python 请求文档 但看不到我想要实现的任何功能 在我的脚本中我设置allow redirects True 我想知道该页面是否已重定向到其他内容 新的 URL 是什么 例如 如果起始 URL 为 www google c

随机推荐

  • Mysql教程(三):Mysql图形化工具DataGrip的基本使用

    Mysql教程 三 Mysql图形化工具DataGrip的基本使用 引言 为什么选择DataGrip 智能查询控制台 可以让您在不同的模式中执行查询 并提供本地历史记录 从而记录您的所有活动 避免工作丢失 高效的架构导航 使用对应的操作或直
  • 主管常常会犯的十一个错误

    近 年来 作为创始人 公司主管 轮换带过多个团队 今年元旦重观余世维老师南京邮电培训视频 对照余老师提及的管理者常犯的11个问题 逐个照镜子 汇聚成年终总结 管理篇 希望自己15年经过1年努力 改掉现在还有的 毛病 使自己能成为1名没有这1
  • gethostbyname获得相应域名的IP

    include
  • 全网最细,Python接口自动化测试-Session会话保持(实战详细)

    目录 导读 前言 一 Python编程入门到精通 二 接口自动化项目实战 三 Web自动化项目实战 四 App自动化项目实战 五 一线大厂简历 六 测试开发DevOps体系 七 常用自动化测试工具 八 JMeter性能测试 九 总结 尾部小
  • 【华为OD机试真题 C++】检查是否存在满足条件的数字组合 【2022 Q4

    前言 华为OD机试真题 C 本专栏包含华为OD机试真题C 解答 会实时更新收纳网友反馈 为大家更新最新的华为德科OD机试试题 为大家提供学习和练手的题库 订阅本专栏后可私信进交流群哦 答案仅供参考 不可照抄哦 题目描述 检查是否存在满足条件
  • 多线程面试题总结(高级篇,2021-02-19)

    一 ThreadLocal 是什么 有哪些使用场景 ThreadLocal 是一个本地线程副本变量工具类 在每个线程中都创建了一个 ThreadLocalMap 对象 简单说 ThreadLocal 就是一种以空间换时间的做法 每个线程可以
  • QT 语言学习 day07 ui 界面 三种样式的按钮开关的制作!

    1 定义一个按钮类 class ImageSwitch 首先我们需要定义它的 成员函数 1 按钮的样式 enum ButtonStyle 枚举来定义 公有的定义给私有成员使用 2 我们需要重写它的绘画功能 void paintEvent Q
  • 深聊性能测试,从入门到放弃之:Locust性能自动化(七)HAR-files→locustfiles自动转换 :Transformer的使用

    Transformer 使用 1 引言 2 安装及调用 2 1 介绍 2 2 安装 2 3 使用 2 3 1 保存HAR files 2 3 2 命令行工具 2 3 3 作为库被调用 3 创建HAR file 3 1 简介 3 2 录制场景
  • lyapunov指数求取时运用qr法与jacobi法之间的区别与联系【基于matlab的动力学模型学习笔记_10】

    在进行lyapunov指数的求取时 需要知道离散动力学系统对应Jacobi矩阵的特征值 qr法与Jacobi法都可以求解矩阵特征值 其中qr法求解的是矩阵所有特征值 而Jacobi法求解的是矩阵的最大特征值 本文以二维Henon映射为例 分
  • SpringBoot统一收集异常信息并返回给前端

    目录 适用场景 实现方法 结合Servlet对象 RestControllerAdvice 适用场景 通常前后端交互时 后端对前端参数进行校验后 对于校验不通过的信息会自定义一个异常抛出 但是后端一旦抛出异常 后台接口服务就会报500的错误
  • 用vscode调试远程服务器的php

    一开始用phpstorm chrome的xdebug helper连接远程的腾讯云服务器进行xdebug调试 一直不成功 卡在 phpstorm Waiting for incoming connection with ide key xx
  • jsp Servlet的接口方法简绍

    jsp Servlet的接口方法简绍 简单介绍 三个重要的方法 重要掌握 1 被创建的方法 2 提供服务的方法 3 被销毁的方法 package Servlet import javax servlet import java io IOE
  • 使用 CentOS 7 部署前端项目

    购买服务器 以腾讯云为例 如果是 25 岁以下 可以免学生认证 使用校园优惠套餐 购买地址 云 校园 本文以 CentOS 为例 购买后 会初始化 root 密码 就可以使用云服务器了 配置服务器 购买之后就可以使用 root 用户名和腾讯
  • MySQL备份笔记

    MySQL备份笔记 备份的分类维度 备份时数据库的状态 Hot Backup 热备 正常运行中直接备份 Cold Backup 冷备 完全停止后备份 Warm Backup 温备 数据库只读 备份文件的格式 逻辑备份 输出文本或SQL语句
  • ubuntu 20.04 安装微信和QQ

    安装wine环境 根据教程 首先安装wine环境 然后安装weixin包 下载Wine环境包 http archive ubuntukylin com software pool partner ukylin wine 70 6 3 25
  • Linux安装配置php7+nginx

    1 安装php7 0 下载 wget http cn2 php net distributions php 7 0 4 tar gz 解压安装 tar zxvf php 7 0 4 tar gz cd php 7 0 4 首先查看安装帮助
  • vscode运行php报错php not found

    vscode运行php not found报错 要先检查原来的配置能否正常运行 1 插件 这两款插件试运行php的 2 查看php版本 3 php下载 下载php php下载 下载后配置环境变量 4 Xdebug 下载 找到生产环境 赋值一
  • vs code下运行conda环境报错

    在使用vs code下conda环境 运行程序会报告如下问题 conda activate base CommandNotFoundError Your shell has not been properly configured to u
  • 无法打开“×××”,因为无法确认开发者的身份——解决办法

    当打开这些应用程序时 系统提示无法打开 XXX 因为它来自身份不明的开发者 我们可以按照下面的方法解决 教程 1 打开应用程序 找到你要打开的软件 按住control键 点击应用打开 或者右键打开 2 出现下图所示 点击打开即可 3 只有第
  • http请求与响应,TCP三次握手&四次分手

    从前端发起请求到后台的整个过程 是一个面试中经常遇到的问题 大概的流程想必有一点基础的人都明白 但是要细说 却未必能一一道出来 曾经老师教过的知识也都差不多忘干净了 所以 我上网找了点资料 加上自己的理解 做个记录 华丽的分割线 一 HTT