一、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.6username=hgtz2222&password=22222222
  • 首行:[方法]+[url]+[版本]
  1. http有很多的方法,最常用的方法就是get和post方法。两个方法都是将数据从客户端提交到服务端。get和post的区别。
get post
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"}
  • 首行:[版本号]+[状态码]+[状态码解释]
状态码 类别 原因短语
1XX Informational(信息性状态码) 接收的请求正在处理
2XX Success(成功状态码) 请求正常处理完毕
3XX Redirection(重定向状态码) 需要进行附加操作以完成请求
4XX Client Error(客户端错误状态码) 服务器无法处理请求(客户端的错误)
5XX Server Error(服务器错误状态码) 服务器处理请求出错(服务器的错误)

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

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

常见的Header

属性名 作用
Content-Type 数据类型(text/html等)
Content-Length Body的长度
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对响应的格式也做出了规定,响应的信息主要包括响应行、响应头、响应体

【网络】解释Http协议,URL,Http的格式。相关推荐

  1. Linux网络:HTTP协议 | URL | 协议格式 | HTTP方法 | HTTP状态码 | Cookie与Session

    文章目录 网络计算器 服务端 客户端 HTTP协议 认识URL 协议方案名 登录信息 服务器地址.端口号 带有层次的文件路径 查询字符串 片段标识符 urlencode和urldecode HTTP协 ...

  2. 网络七层协议地图,报文格式一览无遗。绝对是干货,值得收藏

    从事网络工作的小伙伴们,在排查网络故障时,往往需要抓包,分析问题.所以,要对每一层的报文格式有一定的了解才行.但是,每一层报文协议众多,全部背下来是不可能的.只需要用到的再去查. 今天给大家分享一个网 ...

  3. web网络和http协议(了解域名和网页,制作第一个网页,了解http协议,流程和请求报文格式)

    文章目录 web网络和http协议 了解域名 早期使用HOST文件解析域名 现在DNS(Domain Name system 域名系统) 域名的概述 域名空间结构 域名介绍 域名注册 域名注册步骤 网 ...

  4. URL定义、格式、常见协议

    什么是URL? URL的全称是Uniform Resource Locator(统一资源定位符) URL就是资源的地址.位置,互联网上的每个资源都有一个唯一的URL 通过1个URL,能找到互联网上唯一 ...

  5. 网络协议分层及报文格式大全

    推荐一个查看网络协议分层及报文格式的网站,非常清晰! http://www.023wg.com/message/message/cd_feature_cover.html

  6. 具体解释http 协议

    HTTP协议的主要特点可概括例如以下: 1.支持客户/server模式. 2.简单高速:客户向server请求服务时,仅仅需传送请求方法和路径.请求方法经常使用的有GET.HEAD.POST.每种方法 ...

  7. HTTP协议——URL

    URL 是一种 URI,它标识一个互联网资源,并指定对其进行操作或获取该资源的方法.可能通过对主要访问手段的描述,也可能通过网络"位置"进行标识. 大部分URL遵循一种标准格式,该 ...

  8. 02.iOS开发网络篇—HTTP协议

    iOS开发网络篇-HTTP协议 说明:apache tomcat服务器必须占用8080端口 一.URL 1.基本介绍 URL的全称是Uniform Resource Locator(统一资源定位符) ...

  9. 网络编程——常用协议解析

    ** 1.网络基础知识 ** 1.1> 什么是OSI模型 OSI 模型(Open System Interconnection model)是一个由国际标准化组织?提出的概念模型,试图?供一个使 ...

  10. Linux网络-UDP/TCP协议详解

    Linux网络-UDP/TCP协议详解 零.前言 一.UDP协议 二.TCP协议 1.应答机制 2.序号机制 3.超时重传机制 4.连接管理机制 三次握手 四次挥手 5.理解CLOSE_WAIT状态 ...

最新文章

  1. 单元测试mock之mockito使用
  2. 存储过程里output的使用总结
  3. python写出的程序如何给别人使用-涨姿势!这些小技巧让小白也可以写出更优雅的Python代码!...
  4. list在codeblocks和vs2013中编译提示不同
  5. 什么样的数据集可以被分成两类?
  6. 判断均匀平面波的极化形式_化学选修3丨分子极性如何判断?四步就能搞定!...
  7. Matlab中下标、斜体及希腊字母的使用方法
  8. 触摸屏通常接在微型计算机,计算机应用基础习题答案.doc
  9. 文件解析漏洞总结-Nginx
  10. 【瞎搞】 Codeforces Round 276 DIV 2 C.Bits
  11. android 队列上传图片,话说android端七牛图片上传
  12. mysql中error 1786_mysql错误处理之ERROR1786(HY000)_MySQL
  13. PL/SQL Developer 8.0.2.1505 简体中文汉化版下载,带注册机-永久注册。
  14. 四级英语作文大学生使用计算机,大学生四级英语作文范文
  15. 递归算法经典实例python-python实现十大经典算法
  16. 阿里云OCR:(二)银行卡号识别
  17. Opencv—利用findContours函数找圆环,并标出(简单层级)
  18. uniapp AES加密解密
  19. 世界著名黑客的安全建议
  20. 以太坊教程-使用 remix-ide 开发以太坊智能合约

热门文章

  1. vue开发抽取组件方式思路
  2. 基于jsp+mysql+ssm妇女联合会管理系统-计算机毕业设计
  3. 基本排序算法 【转载】
  4. 2.3 放大电路的分析方法
  5. Java实现自动输入账号密码登陆软件
  6. 简单实现账号密码登录(写死了)
  7. 一切照旧... ...
  8. 【Niagara Vykon N4 】物联网学习 03照明控制及照明时间表
  9. 电磁兼容设计中无法忽视的高频效应
  10. [Web前端] 子元素设置高度为100%, 却没有与父元素对齐高度.