HTTP网络请求原理 (一)

【网络原理】HTTP 请求 (Request)详解 【网络原理】HTTP 请求 (Request)详解,认识URLquery string关于 URL encode, GET方法,POST 方法,GET 和 POST 的区别,User-Agent (简称 UA),Referer,Cookie 阅读详情

HTTP网络请求基本介绍

HTTP是一种应用层协议,它通过TCP实现了可靠的数据传输,能够保证该数据的完整性,正确性,而TCP对于数据传输控制的优点也能够体现在HTTP上,使得HTTP的数据传输吞吐量,效率得到保证.
对于移动开发来说,网络应用基本上都是C/S构架,也就是客户端/服务器构架.客户端通过向服务器发起特定的请求,服务器返回结果,客户端解析结果,再将结果展示在UI上.客户端与服务器的交互如下图所示.
                                                      

详细的交互流程有如下几步:
1. 客户端执行网络请求,从URL中解析出服务器的主机名
2. 将服务器的主机名转换成服务器的IP地址
3. 将端口号从URL中解析出来
4. 建立一条客户端与Web服务器的TCP连接
5. 客户端通过输出流向服务器发送一条HTTP请求
6. 服务器向客户端会送一条HTTP响应报文
7. 客户端从输入流获取报文
8. 客户端解析报文,关闭连接
9. 客户端将结果显示在UI上


Http的请求方式

HTTP协议提供了集中请求方式,每种请求方式都有不同的作用.被大家所熟知的请求方式有如下7种GET,POST,DELETE,PUT,HEAD,TRACE,OPTIONS.其中PUT,DELETE,POST,GET分别对应了资源的增删查改4个功能,也是客户端中运用最多的4个请求.下面我们分别来看看这几个请求的作用.


GET请求

GET是最常用的方法,它的作用是获取服务器中的某个资源.下图显示了一个例子,在这个例子中,客户端用GET方法发起了一次HTTP请求,然后服务端将对应的资源返回给客户端.
                                           

上图中客户端请求的资源是www.devtf.cn/articles路径下的123.html,服务端将123.html返回给客户端.需要注意的是,GET请求的参数都需要放到请求的URL中,第一个参数之前有一个”?”,参数的格式为: 参数名=参数值,参数之间通过”&”连接. 例如,我们在请求 www.devtf.cn/articles/123.html 时希望传递用户名和用户id两个参数,那么格式应该是这样的: www.devtf.cn/articles/123.html?username=myname&userid=123 .


POST请求

POST方法起初是用来向服务器传递数据的. 实际上,POST请求通常会用来提交HTML的表单. 表单中填好的数据会被传输给服务器,然后由服务器对这些数据进行处理. 下图显示了一个用POST请求的执行流程.
                                           


PUT请求

与GET从服务器读取资源相反,PUT方法会向服务器写入资源. 有些发布系统允许用户创建Web页面,并用PUT直接向其传输到Web服务器中,如下图所示
                                           

PUT方法的语义就是让服务器用请求的主体部分来创建一个由所请求的URL命名的新文档,如果那个URL已经存在的话,就用这个资源来替代它. 例如, 在上图的请求中会在www.devtf.cn的网站根目录下创建一个new-art.txt的文件,文件内容为”This is file content” .


DELETE请求

顾名思义,DELETE方法所做的事情就是请服务器删除请求URL所指定的资源. 但是,客户端应用程序无法保证删除操作一定会被执行. 因为,HTTP规范允许服务器在不通知客户端的情况下撤销请求. 下图显示了一个DELETE方法实例.
                                          

DELETE方式与GET请求一样,参数都需要放在请求的URL中.


HEAD请求

HEAD方法与GET方法的行为很类似,但服务器在响应中只返回首部. 不会返回实体的主体部分. 这就允许客户端在未获取实际资源的情况下,对资源的首部进行检查. 使用HEAD可以在不获取资源的情况下了解资源的情况(比如,判断其类型); 通过查看响应中的状态码,看看某个对象是否存在; 通过查看首部,测试资源是否被修改了. 服务器开发者必须确保返回的首部与GET请求所返回的首部完全相同. 遵循HTTP/1.1规范,就必须实现HEAD方法. 如下图所示.

                                                   


TRACE请求

客户端发起一个请求时,这个请求可能要穿过防火墙,代理,网关或其他一些应用程序. 每个中间节点都可能会修改原始的HTTP请求. TRACE方法允许客户端在最终将请求发送给服务器时,看看他变成了什么样子.
TRACE请求会在目的服务器端发起一个”环回”诊断. 行程最后一站的服务器会弹回一条TRACE响应,并在响应主体中携带它收到的原始请求报文. 这样客户端就可以查看在所有中间HTTP应用程序组成的请求/响应链上,原始报文是否以及如何被毁坏或修改过,如下图所示.
 

                             

TRACE方法主要用于诊断,也就是说,用于验证请求是否如愿穿过了请求/响应链. 它也是一种很好的工具,可以用来查看代理和其他应用程序对用户请求所产生效果.


OPTIONS请求

OPTIONS方法请求Web服务器告知其支持的各种功能. 可以询问服务器通常支持哪些方法,或者对某些特殊资源支持哪些方法(有些服务器可能只支持对一些特殊类型的对象使用特定的操作). 这对客户端应用程序提供了一种手段,使其不用实际访问那些资源就能判定访问各种资源的最优方式. 下图显示了一个使用OPTIONS方法的请求.

                                        
 

网络请求原理浅析         网络请求几乎在日常使用计算机都需要使用到,计算机网络原理在大学的时候也曾作为必修课学习过。但是时间久远,加上那是主要是应付考试,所学深度、重点及当时学习的目的和工作之后不同,还是想再来了解一遍。          以前学计算机网络的时候,老师讲的是七层结构:物理层、数据链路层、网络层、运输层、会话层、表示层、应用层。工作之后,发现大家基本都使用五层的结构:物理层、数据链路层、网络... 阅读详情

相关推荐

【鸿蒙HarmonyOS】网络请求http代码实现

在网络开发中,HTTP请求是必不可少的一部分。在鸿蒙(HarmonyOS)开发中,同样需要处理网络请求,无论是与后端服务器交互还是获取外部API的数据。下面是对鸿蒙开发中涉及到的HTTP模块——`http`模块,以及一个常用的第三方库——`axios`模块。

m0_75219675的博客 1万+

HTTP网络请求原理 (一) Http的请求方式介绍

HTTP是一种应用层协议,它通过TCP实现了可靠的数据传输,能够保证该数据的完整性,正确性,而TCP对于数据传输控制的优点也能够体现在HTTP上,使得HTTP的数据传输吞吐量,效率得到保证. 对于移动开发来说,网络应用基本上都是C/S构架,也就是客户端/服务器构架.客户端通过向服务器发起特定的请求,服务器返回结果,客户端解析结果,再将结果展示在UI上.客户端与服务器的交互如下图所示.

提辖鲁的博客 9301

http请求过程 Android,Cronet android设计与实现分析 HTTP请求启动

可见我们调用Java层的CornetUrlRequest的start()及其内部调用的nativeStart(),只是Url Request相关结构的创建过程的延续而已,Url Request相关结构主要是指用于连接Java层的CronetUrlRequest和chromium net的URLRequest的CronetURLRequestAdapter和chromium net的URLRequest。Chromium net提供了强大的debug的能力,可以帮我们抓到许多网络请求执行过程中的信息。...

juruiyuan111的专栏 942

网络原理(三):HTTP 请求 - header & body

header=>Host&Content-Length&Content-Type&UA&Referer&Cookie body

2401_83595513的博客 3660

LabVIew串口收发的一些问题

LabView串口收发实验总结

weixin_45508826的博客 2065

Lumerical INTERCONNECT 中的自相位调制 (SPM) 仿真实践指南

本文详细介绍了在Lumerical INTERCONNECT中进行自相位调制(SPM)仿真的实践指南。从SPM的基础物理原理出发,深入解析非线性薛定谔方程和克尔效应,到INTERCONNECT中NLSE波导元件的配置技巧,以及时域与频域中SPM效应的观测方法。文章还提供了常见问题排查和进阶联合仿真技巧,帮助用户高效完成从仿真到实测的校准过程。

weixin_42565652的博客 187

网页请求原理(希望能帮助到你)

了解并能够复述浏览器加载网页的过程熟悉HTTP的基本原理,能够归纳URL格式、HTTP请求格式和HTTP响应格式网络爬虫请求网页的过程可以理解为用户使用浏览器加载网页的过程。这个过程其实是向Web服务器发送请求的过程,即浏览器向Web服务器发送请求,Web服务器将响应内容以网页形式返回给浏览器。因此,了解浏览器与Web服务器之间的通信方式和交互过程,理解网页的组成、结构、分类、数据格式,能加深对网络爬虫的理解。本章将针对网页请求原理的相关知识进行讲解。

weixin_49816293的博客 897

NB-IoT开发避坑指南:STM32下AT指令状态机的设计与优化

本文深入探讨了在STM32平台上为NB-IoT模组开发时,如何用状态机(FSM)设计替代传统的阻塞式AT指令处理方法。通过构建非阻塞、事件驱动的AT指令引擎,有效解决了系统卡顿、响应迟缓等问题,并详细介绍了状态机的设计、实现与高级优化技巧,助力开发者打造健壮可靠的物联网设备通信核心。

q5r6s7的博客 758

1一个HTTP请求的网络脉络,解压爽文

1写前的话 这是第一次读一本书来用一种摘录的形式记录整理,相信大家多多少少听过此书的名字,一本经典的书------《图解HTTP》,与大家分享,此书共十一章,小编暂时计划将以十一篇博文的形式,分享大家。如有侵权请您留言联系,我将立刻处理。 为什么要分享这本书?或者读这本书对我们自身的价值在哪里?这是我们要不要继续看这篇博文的一个理由。 以下是我认为必要的原因: 完全了解http协议,我们会更加深刻理解Web开发 对客户端与服务器的通信交互场景细节了然于心。 思想启发 从思维启发来看: 上面的第三点,是我

茄子的博客 614

【一】Android MediaPlayer整体架构源码分析 -【初始化和创建】

本系列文章分析的安卓源码版本:【Android 10.0 版本】 一、MediaPlayer的简单调用关键流程 【这只是一个简单使用过程示例】 // 此处变量声明省略 private void play() { // 先获取SurfaceHolder mSurfaceView = findViewById(R.id.surface_view); mSurfaceHolder = mSurfaceView.getHolder(); mSurfac

CloverLHao的博客 4347

手把手教你用Switched-Capacitor Converter实现高效DC-DC转换(附常见拓扑对比)

本文详细介绍了开关电容转换器(SC)在高效DC-DC电源设计中的应用,对比了四种常见拓扑结构的优缺点,并提供了损耗分析与效率优化的实战技巧。通过无电感设计,SC转换器在5G模块和可穿戴设备中展现出超高功率密度和微小体积的优势,是电源管理领域的革命性技术。

weixin_30790841的博客 271

Http请求原理

转载于:https://www.cnblogs.com/GreenGrass/archive/2012/08/16/2642331.html

acmukk22804的博客 229

k8s部署 普罗米修斯(Prometheus)监控

Prometheus是一个开源的服务监控系统和时序数据库其提供了通用的数据模型和快捷数据采集、存储和查询接口它的核心组件Prometheus服务器定期从静态配置的监控目标或者基于服务发现自动配置的目标中进行拉 取数据新拉取到啊的 数据大于配置的内存缓存区时,数据就会持久化到存储设备当中。

D2961953033的博客 3854

关于HTTP 请求头Accept-Encoding 的理解

关于HTTP 请求头Accept-Encoding 的理解 Accept-Encoding表示Http响应是否进行压缩,一般的浏览器在访问网页时,是默认在请求头中加入 Accept-Encoding: gzip, deflate ,表示这个请求的内容希望被压缩,压缩的目的是为了减少网络流量, 但是这个只是协议,只能是要求而不是强制的,如果服务器不支持压缩或者没有开启压缩,则不能起到作用, 如果服务器也是支持压缩或者开启压缩,则会在响应头中加入Content-Encoding: gzip 头部, ...

tinyq123的博客 2万+

基于Python的房地产评估数据抓取与分析 —— 房价走势与市场报告

在房地产行业中,了解和分析房产价格的变化趋势、各个地区的房价差异以及市场评价报告,可以帮助投资者、购房者以及政策制定者做出更加明智的决策。本文介绍了如何使用Python爬虫技术抓取房地产平台上的房产评估报告、价格走势等数据,并对抓取的数据进行分析。通过这些技术,您可以自动化抓取房地产平台的数据,分析房价走势,获取市场报告,为房地产投资决策提供数据支持。假设我们要从链家网抓取某个房产的价格、房产描述以及历史成交价格,首先需要获取目标房产页面的URL,并发送HTTP请求。伪装为常见浏览器,避免被识别为爬虫。

2201_76125261的博客 846

【STM32系统】基于STM32设计的锂电池电量/电压检测报警器系统

本设计旨在研究一个基于STM32F103C8T6微控制器的锂电池电量/电压检测报警器系统,应用于便携式电子设备电池管理。系统通过STM32的ADC模块对18650锂电池电压进行采集,利用LCD1602显示模块实时显示电池电压,当检测到电池电量不足或电压异常时,蜂鸣器报警模块会发出警报提醒用户。系统采用简单的硬件结构和优化的软件架构,通过对实际电池电压数据的检测、处理和显示,实现了低功耗、实时监测的锂电池管理功能。本文将介绍系统的设计原理、硬件电路、软件实现以及调试测试过程。

嵌入式阿齐Archie 1万+

《网络是怎样连接的》读书笔记(一)

整书目录:1.网址中的"www"只是Web服务器上的一种命名 ,是World Wide Web的缩写,它不是一个协议的名字,而是Web的提出者最早开发的浏览器兼HTML编辑器的名字。2.互联网中常见的几种URL(统一资源定位系统(uniform resource locator;URL)是因特网的万维网服务程序上用于指定信息位置的表示方法。它最初是由蒂姆·伯纳斯·李发明用来作为万维网的地址。现在它已经被万维网联盟编制为互联网标准RFC1738。): 浏览器要做的第一步工作就是对URL进行解析: 在这里介绍一

weixin_62466612的博客 759

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

bat怎么发起网络请求_网络请求过程扫盲

最近在刷前端的笔试和面试题的时候,经常遇到让简述一下“从页面请求到后端响应再到页面呈现的整个过程”的问题。于是自己通过查找相关大牛的博文后,决定自己动手总结一下,以便以后复习之用。正文开始其实在我看来,不管是前端开发还是后端开发的工程师都应该了解这个过程,了解这个过程可以让你整体把握整个软件的运行流程,同时可以让你更好地理解一些前后端优化、SEO,甚至一些网络安全的问题。要想讲清楚“网络请求的整个...

weixin_39723010的博客 500

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

oracle 监听程序当前无法识别连接描述符中请求的服务_网络是怎样连接的(一)...

最近在学习网络相关的知识,首先阅读的是《网络是怎样连接的》一书。我打算在接下来的六篇推送中,分别推送该书的读书笔记。首先我们介绍一下《网络是怎样连接的》一书。本书以探索之旅的形式,从在浏览器中输入网址开始,一路追踪了到显示出网页内容为止的整个过程,以图配文,讲解了网络的全貌,并重点介绍了实际的网络设备和软件是如何工作的。目的是帮助读者理解网络的本质意义,理解实际的设备和软件,进而熟练运用...

weixin_40003478的博客 201

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

http请求过程

1.对www.abc.com这个网址进行DNS域名解析,得到对应的IP地址 2.根据这个IP,找到对应的服务器,发起TCP的(三次握手) 3.建立TCP连接后发起HTTP请求 4.服务器响应HTTP请求,浏览器得到html代码5.浏览器解析html代码,并请求html代码中的资源(如js、css、图片等)(先得到html代码,才能去找这些资源) 6.浏览器对页面进行渲染呈现给用户 7.服务器关闭关闭TCP连接 (四次挥手) ...

weixin_48450205的博客 1291

http请求缓存

http请求缓存总结 多余的话不多说,这篇文章主要梳理一下http缓存的整个过程。 http缓存分为强缓存和协商缓存,强缓存优先于协商缓存,总体的过程如下: 浏览器在发送http请求时,先判断是否有缓存,如果有缓存(expires/catche-control1),则判断缓存是否失效,如果没有失效,则直接采用缓存,如果已失效则走协商缓存。(catche-control的不同的值2) 协商缓存有2套机制:一个last-Modified+If-Modified-Since模式,另一个是Etag+If-None

qq_14996903的博客 1185

http 请求中的host字段(实现nginx虚拟服务器)

目前很多一个ip对应多个域名的情况(nginx虚拟主机的实现原理),在http请求头中有host字段,该字段默认为请求的url 也可以自己设定 当我们发送一个请求时,先通过DNS域名解析,得到ip,然后建立tcp连接,当服务器收到请求时(以nginx为例),就会解析http请求host字段来判断你是访问的那个server配置下的代码。nginx配置多个server。这样 就可以实现在一个服务器上...

学习、记录、分享 810

Android网络编程(一)HTTP协议原理

这篇文章是这个系列的开篇,作为移动开发者,开发的应用不免会对网络进行访问,虽然现在已经有很多的开源库帮助我们可以轻而易举的访问网络,但是我们仍要去了解网络访问的原理,这也是一个优秀开发人员所必备的知识点。这篇文章我们就先来了解一下HTTP协议原理。

Android进阶三部曲 - 刘望舒 5万+

Http请求的流程原理以及请求详解

1.Http请求的基本流程 HTTP协议(HyperText Transfer Protocol,超文本传输协议):是一种发布和接收 HTML页面的方法。 HTTPS(Hypertext Transfer Protocol over Secure Socket Layer)简单讲是HTTP的安全版,在HTTP下加入SSL层。 SSL(Secure Sockets Layer 安全套接层)主要用于W...

weixin_44465584的博客 1万+

Android之网络请求1————HTTP协议

Android之网络请求1————HTTP协议

冰炭不投day的博客 2599

Fiddler抓包工具详解(一)(fiddler原理,HTTP请求构成)

文章目录fiddler原理B/S架构工作原理HTTP协议请求报文请求行请求方法字段统一资源定位符(URL)http版本请求头部请求体响应报文fiddler快捷键 fiddler原理 Fiddler是位于客户端和服务器端的HTTP代理 B/S架构 ●编写程序部署到web服务器 ●web服务器运行在服务器上,绑定ip地址并监听某端口,接收和处 理http请求 ●客户端通过http协议获取服务器上的网页...

Shane_Cheng0202的博客 8146
上一篇: 面试常考知识点—数据库
下一篇: mysql导入数据库时出现40101错误解决方法
chenrui310
博客等级 码龄15年 165粉丝 48原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值