【网络】解释Http协议,URL,Http的格式。

一、HTTP协议是Hyper Text Transfer Protocol(超文本传输协议)

  • 协议就是计算机网络中的一种约定。
  • 所以http协议就是服务器和客户端/浏览器在应用层所定义的一种约定。
  • 是用于从万维网(WWW:World Wide Web )服务器传输超文本到本地浏览器的传送协议。
  • HTTP协议工作于客户端-服务端架构为上。浏览器作为HTTP客户端通过URL向HTTP服务端即WEB服务器发送所有请求。Web服务器根据接收到的请求后,向客户端发送响应信息。

http协议格式

1.典型的请求数据包格式
GET /mix/76.html?name=kelvin&password=123456 HTTP/1.1
Host: www.fishbay.cn
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp;q=0.8
Accept-Encoding: gzip, deflate, sdch
Accept-Language: zh-CN,zh;q=0.8,en;q=0.6

username=hgtz2222&password=22222222
  • 首行:[方法]+[url]+[版本]
  1. http有很多的方法,最常用的方法就是get和post方法。两个方法都是将数据从客户端提交到服务端。get和post的区别。
getpost
get方法请求的参数是放在URL里的POST请求参数是放在请求body里的
GET请求的URL传参有长度限制而POST请求没有长度限制
GET请求的参数只能是ASCII码,所以中文需要URL编码而POST请求传参没有这个限制
  1. URL:下面详细解释
  2. 版本:就是协议所使用的版本
  • 请求头Header:从请求行的下一行开始到空行,包含请求的一些属性值。
    都是用冒号分割的键值对,每组属性之间用 \n 分割,遇到空行表示请求头(Header)结束。

  • 请求体body:空行后面的内容都是请求体(Body),允许为空字符串。如果存在,在Header中会有一个属性Content-length属性来标识Body的长度。

2.典型的响应数据报格式
HTTP/1.1 200 OK
Server: nginx
Date: Mon, 20 Feb 2017 09:13:59 GMT
Content-Type: text/plain;charset=UTF-8
Vary: Accept-Encoding
Cache-Control: no-store
Pragrma: no-cache
Expires: Thu, 01 Jan 1970 00:00:00 GMT
Cache-Control: no-cache
Content-Encoding: gzip
Transfer-Encoding: chunked
Proxy-Connection: Keep-alive

{"code":200,"notice":0,"follow":0,"forward":0,"msg":0,"comment":0,"pushMsg"}
  • 首行:[版本号]+[状态码]+[状态码解释]
状态码类别原因短语
1XXInformational(信息性状态码)接收的请求正在处理
2XXSuccess(成功状态码)请求正常处理完毕
3XXRedirection(重定向状态码)需要进行附加操作以完成请求
4XXClient Error(客户端错误状态码)服务器无法处理请求(客户端的错误)
5XXServer Error(服务器错误状态码)服务器处理请求出错(服务器的错误)

状态码是给计算机是别的,状态码解释是给用户看的.

  • 响应头Header:请求的属性, 冒号分割的键值对;每组属性之间使用\n分隔;遇到空行表示Header部分结束
  • 响应体body:基本和请求体一样,注意如果服务器返回了一个html页面,那么html页面的内容就在响应体中.

常见的Header

属性名作用
Content-Type数据类型(text/html等)
Content-LengthBody的长度
Host客户端告知服务器,所请求的资源是在哪个主机的哪个端口上
User-Agent声明用户的操作系统和浏览器版本信息
referer当前页面是从哪个页面跳转过来的
location搭配3XX状态码使用,告诉客户端接下来要去哪里访问
Cookie用于在客户端存储少量信息,通常用于实现会话(session)的功能。比如:短时间免登陆

Http如何分离数据和报头

  • 利用空行,可以分离数据和报头,报头中的Content-Length属性值包含数据的总长度

二、认识url

全称是:UniformResourceLocator(统一资源定位符
我们常说的“网址”,其实就是url。以下面的一种URL为例:

http://www.aspxfans.com:8080/news/index.asp?boardID=5&ID=24618&page=1#name

从上面的URL可以看出,一个完整的URL包括以下几个部分:

  1. 协议部分:URL的第一个字符串代表的是使用的何中协议,在internet中可以使用多种协议,比如HTTP,FTP和HTTPS等等。本例中使用的是Http。(Http和Https协议的区别就是后者给所传输的数据加密了
  2. 域名部分。用“//”作为协议与域名的分隔符,一个URL也可以使用IP地址作为这一部分的内容。
  3. 端口部分。用“:”作为端口与域名部分的分隔符。端口号就是指定该数据应该被哪一个应用程序所接收。端口号在URL中不是必须填写的,如果不写就选择默认端口号。
  4. 虚拟目录部分:从域名后的第一个“/”开始到最后一个“/”为止,是虚拟目录部分。虚拟目录也不是一个URL必须的部分。本例中的虚拟目录是“/news/”
  5. 文件名部分:从域名后的最后一个“/”开始到“?”为止,是文件名部分,如果没有“?”,则是从域名后的最后一个“/”开始到“#”为止,是文件部分,如果没有“?”和“#”,那么从域名后的最后一个“/”开始到结束,都是文件名部分。本例中的文件名是“index.asp”。文件名部分也不是一个URL必须的部分,如果省略该部分,则使用默认的文件名
  6. 锚部分:从“#”开始到最后,都是锚部分。本例中的锚部分是“name”。锚部分也不是一个URL必须的部分
  7. 参数部分:从“?”开始到“#”为止之间的部分为参数部分,又称搜索部分、查询部分。本例中的参数部分为“boardID=5&ID=24618&page=1”。参数可以允许有多个参数,参数与参数之间用“&”作为分隔符。

三、http工作过程

1. 输入URL。

  • 不管是链接还是地址栏的输入,情况都是一样的。http协议已经规定了URL的格式,通过http协议中的域名或IP找到服务器。

2. 找到服务器

  • 会有http的请求发送过来,告诉服务器我求你做什么?http协议规定了发送请求的格式,这个格式有三部分组成请求行、请求头、请求体

3. 处理请求

  • 请求信息发送至服务器以后,服务器会获取传递过来的相关信息进行后端程序的处理。一般通过request.querystring获取URL传递过来的指,通过request.form获取POST传递过来的值,当然,也是可以获取到所有的其他请求过来的信息,如浏览器信息、cookie信息、操作系统信息等。获取相关的数据以后,服务器就会根据程序进行处理。

4. 响应请求

  • 处理完成以后,服务器会做出响应,向浏览器输出相关信息。http对响应的格式也做出了规定,响应的信息主要包括响应行、响应头、响应体
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值