应用层协议:HTTP

URL的概念与组成

浏览某个网页时,很重要的是要知道某个网页的URL(统一资源定位符Uniform Resource Locator)

以 https://www.baidu.com/index.php 为例:
在这里插入图片描述

通过URL的组成,可以看到当我们在浏览器中输入URL时,
其中的域名会被提取出来,并用DNS服务将其解析为IP地址。
之后就进行HTTP读物,建立连接,发送请求,接收应答消息,断开连接,
最终就会在浏览器上浏览到我们想要浏览的页面。

平时俗称的 “网址” 其实就是说的 URL:
在这里插入图片描述

urlencode 和 urldecode

urldecode 就是 urlencode 的逆过程

/ ? :  等这样的字符, 已经被url当做特殊意义理解了. 因此这些字符不能随意出现.
比如, 某个参数中需要带有这些特殊字符, 就必须先对特殊字符进行转义.

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

例:"+" 被转义成了 "%2B"

应用层协议:HTTP

全称:Hyper Text Transfer Protocol 超文本传输协议
是一个基于TCP/IP通信协议来传递数据(HTML 文件, 图片文件, 查询结果等)的协议。

HTTP协议工作于客户端-服务端架构为上。
浏览器作为HTTP客户端通过URL向HTTP服务端即WEB服务器发送所有请求。
Web服务器根据接收到的请求后,向客户端发送响应信息。

从层次的角度看,HTTP协议是一个应用层协议;
它是万维网上能够可靠地交换文件(包括文本、声音、图像等各种多媒体文件)的重要基础。
它可以使浏览器更加高效,使网络传输减少,
不仅保证计算机正确快速地传输超文本文档,
还确定传输文档中的哪一部分,以及哪部分内容首先显示(如文本先于图形)等。

HTTP是我们浏览网页、看在线视频、听在线音乐等必须遵循的规则。
正是在这样的规则下,浏览器才能向万维网服务器发送万维网文档请求,
然后服务器会将请求的文档发送回浏览器。
在浏览器和服务器之间的请求和响应的交互,必须按照规定的格式和规则,
这些格式和规则就构成了超文本传输协议。

它所对应的传输层的协议是TCP的传输;
它所应用的传输层的端口是80号端口,另外还有一个备用端口是8080端口。

HTTP消息结构

HTTP是基于客户端/服务端(C/S)的架构模型,通过一个可靠的链接来交换信息,是一个无状态的请求/响应协议。

一个HTTP"客户端"是一个应用程序(Web浏览器或其他任何客户端),通过连接到服务器达到向服务器发送一个或多个HTTP的请求的目的。

一个HTTP"服务器"同样也是一个应用程序(通常是一个Web服务,如Apache Web服务器或IIS服务器等),通过接收客户端的请求并向客户端发送HTTP响应数据。

HTTP使用统一资源标识符(Uniform Resource Identifiers, URI)来传输数据和建立连接。

一旦建立连接后,数据消息就通过类似Internet邮件所使用的格式[RFC5322]和多用途Internet邮件扩展(MIME)[RFC2045]来传送。

HTTP协议格式

在这里插入图片描述

HTTP请求

请求格式:
在这里插入图片描述
请求报文:

请求报文(Request message)包含了四个部分的内容:
	请求行(Request line)
	头部(Headers)
	空行(A blank line)
	主体部分(Body)

请求行(Request line)包含了三部分的内容:
	Request type
	URL
	HTTP version

URL全称:Uniform Resource Locator
统一资源定位符由四部分组成:
	Method
	Host
	Port
	Path

Request message:
在这里插入图片描述
Request message 详细格式:
在这里插入图片描述
Request line:
在这里插入图片描述
HTTP请求:
在这里插入图片描述

首行: [方法] + [url] + [版本]
Header: 请求的属性, 冒号分割的键值对;每组属性之间使用\n分隔;遇到空行表示Header部分结束
Body: 空行后面的内容都是Body. Body允许为空字符串. 
      如果Body存在, 则在Header中会有一个 Content-Length 属性来标识Body的长度

HTTP响应

响应格式:
在这里插入图片描述
响应报文:

响应报文(Response message)包含了四个部分的内容:
	状态行(Status line)
	头部(Headers)
	空行(A blank line)
	主体部分(Body)

状态行(Status line)包含了三部分的内容:
	HTTP version
	Status code
	Status phrase

Response message:
在这里插入图片描述
Response message 详细格式:
在这里插入图片描述
Status line:
在这里插入图片描述
HTTP响应:
在这里插入图片描述

首行: [版本号] + [状态码] + [状态码解释]
Header: 请求的属性, 冒号分割的键值对;每组属性之间使用\
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值