HTTP协议(一)

简介: HTTP协议

一、HTTP简介

HTTP(Hyper Text Transfer Protocol)协议又被称为做超文本传输协议,是一种简单的请求-响应协议,HTTP通常运行在TCP之上


在编写网络通信代码时,可以自行进行协议的定制,但实际有很多优秀的工程师早就已经写出了许多非常成熟的应用层协议,其中最典型的就是HTTP协议


二、认识URL

URL(Uniform Resource Lacator)叫做统一资源定位符,即通常所说的网址,是因特网的万维网服务程序上用于指定信息位置的表示方法


6c7472bd3d6a45f9a38f77cb5eb240e9.png


2.1 协议方案名

http://表示的是协议名称,表示请求时需要使用的协议,通常使用的是HTTP协议或安全协议HTTPS。HTTPS是以安全为目标的HTTP通道,在HTTP的基础上通过传输加密和身份认证保证了传输过程的安全性


常见的应用层协议:


DNS(Domain Name System)协议:域名系统

FTP(File Transfer Protocol)协议:文件传输协议

TELNET(Telnet)协议:远程终端协议。

HTTP(Hyper Text Transfer Protocol)协议:超文本传输协议

HTTPS(Hyper Text Transfer Protocol over SecureSocket Layer)协议:安全数据传输协议

SMTP(Simple Mail Transfer Protocol)协议:电子邮件传输协议

POP3(Post Office Protocol - Version 3)协议:邮件读取协议

SNMP(Simple Network Management Protocol)协议:简单网络管理协议

TFTP(Trivial File Transfer Protocol)协议:简单文件传输协议

2.2 登录信息

usr:pass 表示的是登录认证信息,包括登录用户的用户名和密码。虽然登录认证信息可以在URL中体现出来,但绝大多数URL这个字段都是被省略的,因为登录信息可以通过其他方案交付给服务器


2.3 服务器地址

www.example.jp表示的是服务器地址,也被称为域名,如www.alibaba.com,www.qq.com


需要注意的是,用IP地址标识公网内的一台主机,但IP地址本身并不适合给用户看。比如可以通过ping命令,分别获得www.baidu.com和www.qq.com这两个域名解析后的IP地址


ec1a9c1e00734485a43e16396c4acd48.png


若用户看到的是两个IP地址,那么用户在访问这个网站之前并不知道这两个网站到底是干什么的,但若用户看到的是www.baidu.com和www.qq.com这两个域名,那么用户就知道这两个网站分别对应的是哪家公司,因此域名具有更好的自描述性


在计算机中使用的时候既可以使用域名,也可使用IP地址。但URL呈现出来需要让用户看见,因此URL以域名的形式表示服务器地址的更好


2.4 服务器端口号

80表示的是服务器端口号。在进行套接字编程时需要给服务器绑定对应的IP和端口,而这里的应用层协议也同样需要有明确的端口号


常见协议对应的端口号:


29ce9d1dc79143dea1513b4e3a90e564.png


现在这些常用的服务与端口号之间的对应关系都是明确的,所以在使用某种协议时实际是不需要指明该协议对应的端口号的,因此在URL中,服务器的端口号一般是被省略的


2.5 带层次的文件路径

/dir/index.htm 表示的是要访问的资源所在的路径。访问服务器的目的是获取服务器上的某种资源,通过前面的域名和端口已经能够找到对应的服务器进程了,此时需要指明该资源所在的路径


比如打开浏览器输入百度的域名后,此时浏览器就获取到了百度的首页


c2677cbf77044463a5573924ae3e2f06.png


当用户发起网页请求时,本质是获得了这样的一张网页信息,浏览器对网页信息进行解释,就呈现出了对应的网页


11b5d426003246b1ad87e085b10e427d.png


这种资源被称为网页资源,此外用户还会向服务器请求视频、音频、图片等资源。HTTP之所以被称为超文本传输协议,而不是文本传输协议,就是因为有很多资源实际并不是普通的文本资源


因此在URL中就有这样一个字段,用于表示要访问的资源所在的路径。这里的路径分隔符是/,而不是\,这也就证明了实际很多服务都是部署在Linux上的


2.6 查询字符串

uid=1表示的是请求时提供的额外的参数,这些参数是以键值对的形式,通过&符号分隔开的


比如在百度上面搜索HTTP,此时可以看到URL中有很多参数,而在这众多的参数中有一个参数wd(word),表示的就是搜索时的搜索关键字wd=HTTP



fb4673e56e034cd48b1f18ba9cfe3d84.png

双方在进行网络通信时,是能够通过URL进行用户数据传送的


三、urlencode和urldecode

若在搜索关键字当中出现了类似 / ? : 这样的字符,这些字符已经被URL当作特殊意义理解了,但某些情况下并不希望这些字符被当作特殊字符处理,为了避免冲突,特殊字符需要表达普通含义时就会进行转义

URL中除了会对特殊符号做编码,对中文也会进行编码

规则:将需要转码的字符转为十六进制,然后从右到左,取4位(不足4位直接处理),每两位做一位,前面加上%,编码成%XY格式


示例


当搜索C++时,由于+号在URL中也是特殊符号,而+字符转为十六进制后的值就是0x2B,因此C++就会被编码成C%2B%2B


8b24e9b006454c8fa807aab093365555.png


在线编码工具


http://tool.chinaz.com/tools/urlencode.aspx


8bf37b85491e4584b10463469d1f2dff.png


43d0faf9473d468ebf7d28bf66e093c4.png


当服务器拿到对应的URL后,也需要对编码后的参数进行解码,此时服务器才能拿到想要传递的参数,解码实际就是编码的逆过程


目录
相关文章
|
1月前
|
缓存 负载均衡 网络协议
HTTP 与 SOCKS5 代理协议:企业级选型指南与工程化实践
面向企业网络与数据团队的代理协议选型与治理指南,基于流量特征选择HTTP或SOCKS5协议,通过多协议网关统一出站,结合托管网络降低复杂度,实现稳定吞吐、可预测时延与合规落地。
|
4月前
|
缓存 监控 搜索推荐
301重定向实现原理全面解析:从HTTP协议到SEO最佳实践
301重定向是HTTP协议中的永久重定向状态码,用于告知客户端请求的资源已永久移至新URL。它在SEO中具有重要作用,能传递页面权重、更新索引并提升用户体验。本文详解其工作原理、服务器配置方法(如Apache、Nginx)、对搜索引擎的影响及最佳实践,帮助实现网站平稳迁移与优化。
619 68
|
3月前
HTTP协议中请求方式GET 与 POST 什么区别 ?
GET和POST的主要区别在于参数传递方式、安全性和应用场景。GET通过URL传递参数,长度受限且安全性较低,适合获取数据;而POST通过请求体传递参数,安全性更高,适合提交数据。
514 2
|
3月前
|
应用服务中间件
HTTP协议中常见的状态码
HTTP协议状态码分为1xx、2xx、3xx、4xx、5xx五类,常见状态码包括:101(请求已接受)、200(请求成功)、302(重定向)、400(请求错误)、401(未认证)、403(无权限)、404(资源不存在),以及500(服务器错误)、502(网关错误)、503(服务不可用)、504(网关超时)等。
146 0
|
3月前
|
网络协议 安全 网络安全
什么是HTTP协议
HTTP协议是超文本传输协议,基于TCP,规定了客户端与服务器端通信规则,但数据以明文传输,安全性低。HTTPS则通过SSL加密保障数据安全。两者默认端口不同,HTTP为80,HTTPS为443。HTTPS安全性更高,但消耗更多服务器资源。
179 0
|
3月前
|
数据采集 Web App开发 JSON
Python爬虫基本原理与HTTP协议详解:从入门到实践
本文介绍了Python爬虫的核心知识,涵盖HTTP协议基础、请求与响应流程、常用库(如requests、BeautifulSoup)、反爬应对策略及实战案例(如爬取豆瓣电影Top250),帮助读者系统掌握数据采集技能。
283 0
|
4月前
|
存储 网络协议 安全
HTTP 协议及会话跟踪机制详解
本文详解了 HTTP 协议的核心知识,包括其定义(超文本传输协议,基于 TCP,规定客户端与服务器通信规则)及与 HTTPS 的区别(安全性、端口、资源消耗)。 介绍了 GET 与 POST 请求的差异(参数限制、安全性、应用场景),以及 Restful 风格(通过 URL 定位资源,请求方式决定操作)。列举了常见 HTTP 状态码(如 200 成功、404 资源未找到),对比了转发与重定向的区别(服务器端一次请求 vs 客户端两次请求)。 还阐述了会话跟踪机制:Cookie 基于客户端存储,通过Set-Cookie和Cookie头实现,安全性较低;Session 基于服务端存储,依赖 C
536 1
|
3月前
|
缓存 网络协议 UED
深度解析HTTP协议从版本0.9至3.0的演进和特性。
总的来说,HTTP的演进是互联网技术不断发展和需求日益增长的结果。每一次重要更新都旨在优化性能,增进用户体验,适应新的应用场景,而且保证了向后兼容,让互联网的基础架构得以稳定发展。随着网络技术继续进步,我们可以预期HTTP协议在未来还会继续演化。
441 0
|
5月前
|
缓存
HTTP协议深度剖析:常见请求头信息讲解
这就是HTTP请求头背后的工作原理,希望通过比作“邮差”和“标签”,可以让你对这个繁琐技术更有感触,更得心应手。尽管这些信息可能很琐碎,但了解了它们的含义和工作方式,就等于揭开了HTTP协议神秘的面纱,掌控了网络交流的核心。你还等什么,赶快动手尝试一下吧!
203 17