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后,也需要对编码后的参数进行解码,此时服务器才能拿到想要传递的参数,解码实际就是编码的逆过程


相关实践学习
基于函数计算快速搭建Hexo博客系统
本场景介绍如何使用阿里云函数计算服务命令行工具快速搭建一个Hexo博客。
目录
相关文章
|
5天前
|
缓存 安全 前端开发
探索HTTP协议:网络通信的基石
探索HTTP协议:网络通信的基石
|
5天前
|
缓存 自然语言处理 前端开发
第一章 引言-HTTP协议基础概念和前后端分离架构请求交互概述
第一章 引言-HTTP协议基础概念和前后端分离架构请求交互概述
http协议 报文 给你讲明白咯,web开发基础
http协议 报文 给你讲明白咯,web开发基础
|
6天前
|
存储 缓存 JSON
【JavaEE】HTTP应用层协议
【JavaEE】HTTP应用层协议
14 1
|
6天前
|
移动开发 网络协议 网络安全
【网络安全 | 网络协议】一文讲清HTTP协议
【网络安全 | 网络协议】一文讲清HTTP协议
23 0
|
6天前
|
安全 网络协议 网络安全
干货|代理IP协议有何区别?深入了解 SOCKS5、HTTP 代理
HTTP和HTTPS是互联网主要的两大协议,HTTP是基础的简单请求-响应协议,常用于TCP上,但数据传输不安全。HTTPS是HTTP的安全版本,添加了SSL层进行加密和身份验证,提供更高的安全性,用于保护数据和验证网站真实性。HTTPS需CA证书,可能产生费用,并使用443端口而非HTTP的80端口。
|
6天前
|
网络协议 安全 数据安全/隐私保护
干货|代理IP协议有何区别?深入了解 SOCKS5、HTTP 代理
SOCKS5和HTTP是两种代理协议,前者是通用型,支持多种网络流量,提供身份验证、IPv6支持及UDP兼容性,更适合实时数据传输。HTTP代理专用于HTTP协议,适用于Web资源请求。SOCKS5在传输方式、功能、兼容性和安全性上更胜一筹,而HTTP代理则在处理HTTP请求时更专业。选择代理协议应根据需求和应用场景,考虑服务的稳定性和安全性。付费代理如kookeey全球代理,支持双协议,速度快且可扩展性强,是可靠的选择。
|
6天前
|
数据采集 网络协议 安全
2024年,你还在等什么?一起探索HTTP协议的奥秘!
2024年,你还在等什么?一起探索HTTP协议的奥秘!
|
6天前
|
网络协议 Java 应用服务中间件
HTTP协议与Tomcat在IJ中配置
本文是对自己学习JavaWeb学习的笔记的总结,添加了一些自己的东西,然后进行一次复盘,并加深一下学习的理解和印象.其中内容主要包括对http协议的详细介绍,java常见服务器的初步介绍,以及IJ旧版和新版的tomcat服务器的配置图解教程
|
6天前
|
存储 网络协议 JavaScript
应用层 HTTP协议(1)
应用层 HTTP协议(1)
12 0