mooc-HTTP协议1

HTTP(超文本传输协议)

超文本传输协议是一种通信协议,允许将超文本标记语言(HTML)文档从Web服务器传送到客户端的浏览器。
超文本:简单来说就是在文本内容中有链接。

在这里插入图片描述

一、HTTP的前世今生

在这里插入图片描述
在HTTP0.9的时候只有GET请求,每个请求都是短连接,当时还没有状态码、缓存等东西。

二、透过TCP/IP看HTTP

HTTP协议是构建在TCP/IP协议之上的,省TCP/IP协议的子集。

在这里插入图片描述

TCP/IP协议族

TCP/IP协议其实是一系列与互联网相关联的协议集合起来的总称
分层管理是TCP/IP协议的重要的特征。

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
链路层加首尾信息,其他层加头部信息?
在这里插入图片描述

三、三次握手

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

四、DNS解析

在这里插入图片描述

会先从host文件中找域名对应的IP地址,如果没有就请求本地的DNS服务器,如果没有就去去找首选的DNS服务器,一般设置为8.8.8.8等,还是没有就去上层服务器中查找,直到根服务器。

五、HTTP协议特点

支持客户/服务器模式

客户/服务器模式的工作的方式是客户端向服务器发出请求,服务器端响应请求,并进行相应服务。

简单快速

  • 客户向服务器请求服务的时候,只需要传送请求方法和路径。
  • 请求方法常用的有GET、HEAD、POST等。每种方法规定了客户与服务器联系的类型不同。
  • 由于HTTP简单,使得HTTP服务器的程序规模小,因而通信速度很快。

灵活

  • HTTP可以传输任意类型的数据对象
  • 正在传输的类型由Content-Type(Content-Type是HTTP包中用来表示内容类型的标识)加以标记。

无连接(每次连接只处理一个请求)

  • 无连接的含义是限制每次连接只处理一个请求。
  • 服务器处理完客户的请求,并收到客户的应答之后,即断开连接。
  • 采用这种方式可以节省传输时间。

无状态(如果后续处理需要前面的信息,则它必须重传)

  • HTTP协议是无状态协议
  • 无状态指的是对于事务处理没有记忆能力,缺少状态意味着如果后续处理需要前面的信息,则它必须重传,这样可能会导致链接传送的数据量大。
  • 另外一方面,在服务器不需要先前信息的时候,它的应答就比较快。

六、URI与URL(有协议)

我们输入浏览器里面的WEB地址应该叫URI还是URL?

URI

  • 一个紧凑的字符串用来标示抽象或者物理资源

  • A URI可以进一步被分为定位符、名字或者两种都是。

  • 术语:Uniform Resource Locator(URL)是URI的子集,除了确定一个资源,还提供了一种定位该资源的主要访问机制(如其网络“位置”)

在这里插入图片描述

在这里插入图片描述

URL

  • URL是URI的一种,但是不是所有的URI都是URL
  • URI和URL最大的差别就是“访问机制”即协议
  • URN是唯一标识的一部分,是身份信息

你的qq号也是一个URI(腾讯服务器内可以识别就是你的QQ账户),URI就是网络资源的头衔,通过URI标记可以把网络世界里面的每一个事物都加以标记并区分开来。

七、HTTP报文结构分析-请求报文

在这里插入图片描述

在这里插入图片描述

八、HTTP报文头

HTTP的报文头大体可以分为四类,分别是:

  • 通用报文头
    可以用在请求报文中,也可以用在响应报文中。
  • 请求报文头
  • 响应报文头
  • 实体报文头

在HTTP/1.1里面一共规范了47种报文头字段。

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

九、请求报文头部分解释

ACCEPT(指明可接收类型)

作用:浏览器端可以接受的媒体类型。
Accept:text/html 表示浏览器可以接受服务器回发的类型为text/html,也就是常说的html文档,如果服务器无法返回text/html类型的数据,那么服务器应该返回一个406错误(Non Acceptable)

Accept-Encoding(指明编码方式)

作用:浏览器申明自己接收的编码方法,通常指定压缩方法,是否支持压缩,支持什么压缩方法(gzip、deflate)

Accept-Language(指明接收语言)

作用:浏览器申明自己接收的语言
Accept-Language:zh-cn,zh;q=0.7,en-us,en;q=0.3

客户端在服务器有中文版资源的情况下,会返回中文版对应的响应,没有中文版的时候,则请求返回英文版响应。

Host(指明主机和端口号)

作用:请求报文头中主要用于指定被请求资源的Internet主机和端口号,它通常从HTTP URL中提取出来的。

Referer(指明从哪个页面链接过来的)

当浏览器向Web服务器发送请求的时候,一般会带上Referer,告诉服务器我是从哪个页面链接过来的,服务器借此可以获得一些信息用于处理。

User-Agent(指明操作系统和浏览器名称版本)

作用:告诉HTTP服务器,客户端使用的操作系统和浏览器名称版本

很多情况下我们会通过User-Agent来判断浏览器类型,从而进行不同的兼容设计。

Content-Type(说明报文体内对象媒体类型)

作用:说明报文体内对象媒体类型
application/xhtml+xml:XHTML格式
application/xml:XML数据格式
application/atom+xml:Atom XML聚合格式
application/json:JSON数据格式
application/pdf:pdf格式
application/msword:Word文档格式
application/octet-stream:二进制流数据(如常见的文件下载)
application/x-www-form-urlencoded:表单提交

十、通用报文头部分解释

Connection

  • Connection:keep-alive
    当一个网页打开完成后,客户端和服务器之间用于传输HTTP数据的TCP连接不会关闭,如果客户端再次访问这个服务器上的页面,会继续使用这一条已经建立的连接。
  • Connection:close
    代表一个Request完成后,客户端和服务器之间用于传输HTTP数据的TCP连接会关闭,当客户端再次发送Request,需要重新建立TCP连接。

十一、HTTP请求方法解析

HTTP/1.1常用方法:

  • GET
  • POST
  • HEAD
  • PUT
  • DELETE
  • OPTIONS
  • TRACE
  • CONNECT

GET(没请求体,发送数据在URL中的?后面)

  • GET方法用来请求访问已被URI识别的资源
  • 指定的资源经过服务器端解析后返回响应内容

http://localhost/login.php?username=aa&password=1234
从上面的URL请求中,很容易就可以辨认出表单提交的内容。

可以通过浏览器记录就查到你的信息。

在这里插入图片描述

POST

  • POST方法与GET功能类似,一般用来传输实体的主体。
  • POST方法的主要目的不是获取响应主体的内容,主要是提交。

在这里插入图片描述

PUT(PUT是幂等的,而POST不是幂等的)

  • 从客户端向服务器传送的数据取代指定的文档的内容
  • PUT方法与POST方法最大的不同是:PUT是幂等的,而POST不是幂等的。

幂等:不管进行多少次重复操作,都得到相同结果。

HEAD(请求报文头)/DELETE

HEAD

  • 类似于GET请求,只不过返回的响应中没有具体的内容,用于获取报文头。

DELETE

  • 请求服务器删除指定的资源

OPTIONS

用于查询针对请求URI指定的资源支持的方法
在这里插入图片描述

TRACE/CONNECT

TRACE

  • 回显服务器收到的请求,主要用于测试或者诊断。

CONNECT

  • 开启一个客户端与所请求资源之间的双向沟通的通道,它可以用来创建隧道。

十二、状态码

用来表示网页服务器超文本传输协议响应状态的3位数字代码。
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值