HTTP协议

HTTP协议

基础内容

介绍

HTTP协议(HyperText Transfer Protocol,超文本传输协议)
是用于从WWW服务器传输超文本到本地浏览器的传送协议。
它可以使浏览器更加高效,使网络传输减少。
它不仅保证计算机正确快速地传输超文本文档,还确定传输文档中的哪一部分,以及哪部分内容首先显示(如文本先于图形)等。

协议栈位置

  • HTTP协议通常承载于TCP协议之上,有时也承载于TLS或SSL协议层之上,这个时候,就成了我们常说的HTTPS
  • 默认HTTP的端口号为80,HTTPS的端口号为443。
  • HTTP是一个应用层协议,由请求和响应构成,是一个标准的客户端服务器模型。
  • HTTP是一个无状态的协议,同一个客户端的这次请求和上次请求是没有对应关系。

工作流程

  • 1 客户机与服务器建立TCP连接,只要单击某个超级链接,HTTP的工作开始。
  • 2 建立连接后,客户机发送一个请求给服务器
    • 请求方式的格式为:
    • 统一资源标识符(URL)
    • 协议版本号
    • MIME信息包括请求修饰符、客户机信息和可能的内容。
  • 3 服务器接到请求后,给予相应的响应信息
    • 其格式为:
    • 信息的协议版本号
    • 一个成功或错误的代码
    • MIME信息包括服务器信息、实体信息和可能的内容。
  • 客户端接收服务器所返回的信息通过浏览器显示在用户的显示屏上,然后客户机与服务器更具请求的内容决定是否关闭连接

具体格式

请求格式

总略

![HTTP请求](/Users/Toudsour/Desktop/屏幕快照 2016-03-26 下午4.00.29.png)
从上到下分别是:

  • 请求方法 URL 版本信息
  • 请求头
  • 请求正文
请求方法 URL 版本信息

有时候有这个一行+host就可以完成请求,至少我们学校网站是这样

请求方法

在HTTP中请求方法如下:

方法名提供的服务
GET检索URI中标识资源的一个简单请求
HEAD与GET方法相同,服务器只返回状态行和头标,并不返回请求文档
POST服务器接受被写入客户端输出流中的数据的请求
PUT服务器保存请求数据作为指定URI新内容的请求
DELETE服务器删除URI中命名的资源的请求
OPTIONS关于服务器支持的请求方法信息的请求
TRACEWeb服务器反馈Http请求和其头标的请求
CONNECT已文档化但当前未实现的一个方法,预留做隧道处理

在互联网中最常用的是GET和POST

URL

关于URL的具体定义可以百度一下
在这里,通常只要给出相对服务器根目录的相对地址就可以了,所以通常以 / 开头

版本信息

就是版本信息吧,现在主要用的都是HTTP/1.1
注意一下后边有回车换行,表示下边是头域

请求头

Host

Host头域指定请求资源的Intenet主机和端口号

HTTP/1.1请求必须包含主机头域,否则系统会以400状态码返回。

Accept

即客户端可以接受的MIME 类型列表,如image/gif text/html, application/msword

Connection

如果此项为keep-alive的话,请求完成后服务器和客户端不会立即断开连接

Cookie

具体可以查看Cookie/Session的相关知识

有点类似于在干洗店开了个会员,你去洗衣服出示的会员证吧。

User-Agent

User-Agent头域的内容包含发出请求的用户信息。

Referer

允许客户端指定请求uri的源资源地址,这可以允许服务器生成回退链表,可用来登陆、优化cache等。他也允许废除的或错误的连接由于维护的目的被追踪。如果请求的uri没有自己的uri地址,Referer不能被发送。如果指定的是部分uri地址,则此地址应该是一个相对地址。

请求正文

请求头和请求正文之间是一个空行,这个行非常重要,它表示请求头已经结束。

接下来的是请求正文。请求正文中可以包含客户提交的查询字符串信息等等。

在这里POST在这里提交信息,而GET的信息直接写在URL中

响应格式

总略

![HTTP请求](/Users/Toudsour/Desktop/屏幕快照 2016-03-26 下午4.00.07.png)
HTTP应答与HTTP请求相似,HTTP响应也由3个部分构成,分别是:

  • 协议状态版本代码描述
  • 响应头
  • 响应正文
协议版本 状态代码 描述

协议状态

没什么好说的

状态代码

HTTP状态码反映了Web服务器处理HTTP请求状态。

HTTP状态码由3位数字构成,其中首位数字定义了应答码的类型:

  • 1XX-信息类(Information),表示收到Web浏览器请求,正在进一步的处理中
  • 2XX-成功类(Successful),表示用户请求被正确接收,理解和处理例
  • 3XX-重定向类(Redirection),表示请求没有成功,客户必须采取进一步的动作
  • 4XX-客户端错误(Client Error),表示客户端提交的请求有错误
  • 5XX-服务器错误(Server Error)表示服务器不能完成对请求的处理

下边是一些著名的状态码:

版本号状态码描述内容
HTTP1.1100continue继续追加后继内容
HTTP1.1200OK一切正常
HTTP1.1301Moved Permanently请求的文档在其它地方,会自动连接
HTTP1.1403Forbidden绝对拒绝你访问这个资源,不管授权没有
HTTP1.1400Bad Request客户端请求中的不良语法
HTTP1.1404Not Found最常见,绝对是大名鼎鼎的找不到
响应头

Date

D表示消息发送的时间,时间的描述格式由rfc822定义

Server

Server响应头包含处理请求的原始服务器的软件信息。此域能包含多个产品标识和注释,产品标识一般按照重要性排序。

Content-Length

响应中的字节数,只在浏览器使用永久(Keep-alive)HTTP连接时需要

Keep-alive

对于keep-alive的相关信息

Connection

如果此项为keep-alive的话,请求完成后服务器和客户端不会立即断开连接

Content-Type

用于向接收方指示实体的介质类型,指定HEAD方法送到接收方的实体介质类型,或GET方法发送的请求介质类型

Tips

没有什么比抓包更好的方法学习网络拉。

参考资料

HTTP深入浅出 http请求

HTTP协议header头域

客户端与服务器端交互原理

深入理解HTTP协议

weixin073智慧旅游平台开发微信小程序+ssm后端毕业源码案例设计 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。
python017基于Python贫困生资助管理系统带vue前后端分离毕业源码案例设计 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值