HTTP协议(一)

本文涉及的产品
.cn 域名,1个 12个月
简介: 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后,也需要对编码后的参数进行解码,此时服务器才能拿到想要传递的参数,解码实际就是编码的逆过程


目录
相关文章
|
4天前
|
算法 网络协议 安全
HTTP/2 协议的缺点是什么?
HTTP/2 协议的缺点是什么?
|
4天前
|
网络协议 网络安全 网络虚拟化
本文介绍了十个重要的网络技术术语,包括IP地址、子网掩码、域名系统(DNS)、防火墙、虚拟专用网络(VPN)、路由器、交换机、超文本传输协议(HTTP)、传输控制协议/网际协议(TCP/IP)和云计算
本文介绍了十个重要的网络技术术语,包括IP地址、子网掩码、域名系统(DNS)、防火墙、虚拟专用网络(VPN)、路由器、交换机、超文本传输协议(HTTP)、传输控制协议/网际协议(TCP/IP)和云计算。通过这些术语的详细解释,帮助读者更好地理解和应用网络技术,应对数字化时代的挑战和机遇。
27 3
|
15天前
|
网络协议 安全 Go
Go语言进行网络编程可以通过**使用TCP/IP协议栈、并发模型、HTTP协议等**方式
【10月更文挑战第28天】Go语言进行网络编程可以通过**使用TCP/IP协议栈、并发模型、HTTP协议等**方式
43 13
|
8天前
|
传感器 缓存 网络协议
CoAP 协议与 HTTP 协议的区别
CoAP(Constrained Application Protocol)协议是为资源受限的设备设计的轻量级协议,适用于物联网场景。相比HTTP,CoAP具有低功耗、低带宽占用和简单易实现的特点,支持多播通信和无连接的交互模式。
|
13天前
|
开发者
HTTP 协议请求方法的发展历程
【10月更文挑战第21天】
|
13天前
|
安全
HTTP 协议的请求方法
【10月更文挑战第21天】
|
13天前
|
缓存 安全 前端开发
HTTP 协议的请求方法在实际应用中有哪些注意事项?
【10月更文挑战第29天】HTTP协议的请求方法在实际应用中需要根据具体的业务场景和需求,合理选择和使用,并注意各种方法的特点和限制,以确保网络通信的安全、高效和数据的一致性。
|
15天前
|
存储 缓存 网络协议
计算机网络常见面试题(二):浏览器中输入URL返回页面过程、HTTP协议特点,GET、POST的区别,Cookie与Session
计算机网络常见面试题(二):浏览器中输入URL返回页面过程、HTTP协议特点、状态码、报文格式,GET、POST的区别,DNS的解析过程、数字证书、Cookie与Session,对称加密和非对称加密
|
17天前
|
网络协议 前端开发 API
HTTP 和 TCP 协议的应用场景有哪些不同
【10月更文挑战第25天】HTTP(超文本传输协议)和 TCP(传输控制协议)处于网络协议栈的不同层次,各自具有独特的功能和特点,因此它们的应用场景也存在明显的差异。
|
17天前
|
安全 前端开发 JavaScript
利用HTTP协议进行文件上传和下载的常见方法
【10月更文挑战第25天】可以利用HTTP协议方便地实现文件的上传和下载功能,满足不同应用场景下的需求。在实际应用中,还可以根据具体的业务需求和安全要求,对文件上传和下载的过程进行进一步的优化和安全处理。