一、HTTP协议介绍

1.1 什么是HTTP

HTTP是Hyper Text Transfer Protocol(超文本传输协议)的缩写。HTTP协议位于TCP/IP协议栈的应用层。

HTTP是一个客户端和服务器端请求和应答的标准,主要用于从万维网(即WWW,全称 World Wide Web)服务器传输超文本到本地浏览器之间的请求数据和响应数据的协议。客户端通过使用网页浏览器或者其它的工具发起一个HTTP请求到服务器上指定端口(默认端口为80),服务器在收到请求之后,返回响应内容(文本、图片等)。

HTTP协议是基于TCP协议来进行数据传输的。

1.2 HTTP的版本

HTTP协议已经演化出了很多版本,它们中的大部分都是向下兼容的。客户端在请求的开始告诉服务器它采用的协议版本号,而后者则在响应中采用相同或者更早的协议版本。现在大多使用的都是1.1版本。

  • 1.0版本: HTTP 协议非常老的标准,为了提高系统的效率,HTTP 1.0规定浏览器与服务器只保持短暂的连接,浏览器的每次请求都需要与服务器建立一个TCP连接,服务器完成请求处理后立即断开TCP连接,服务器不跟踪每个客户也不记录过去的请求。正式因为这种特性造成了一些性能上的缺陷。

  • 1.1版本: 克服了HTTP 1.0的缺陷,HTTP 1.1支持持久连接(HTTP/1.1的默认模式使用带流水线的持久连接),在一个TCP连接上可以传送多个HTTP请求和响应,减少了建立和关闭连接的消耗和延迟。同时还增加更多的请求头和响应头来改进和扩充HTTP 1.0的功能(如POST请求头字段等)。

  • 2.0版本: 2015年5月作为互联网标准正式发布。主要新增如下特性:多路复用,二进制分帧,首部压缩,服务端推送。

三、HTTP消息请求

3.1 URI、URL、URN

通过HTTP或者HTTPS协议请求的资源由统一资源标识符(Uniform Resource IdentifiersURI)来标识。我们常用的是URL,那么URI, URL, URN之前有什么区别和联系了?

URI = Uniform Resource Identifier 统一资源标识符
URL = Uniform Resource Locator    统一资源定位符
URN = Universal Resource Name     统一资源名称

三者关系如下图:

URI用来唯一标识符来标识一个资源,是一个通用的概念,URIURLURN两个子集组成。

URL通过描述资源的位置来标识资源。

URN通过资源的名字来标识资源,与其所处的位置无关,这样即使资源的位置发生变动,其URN也不会变化。

HTTP规范将更通用的概念URI作为其资源标识符,但是实际上,HTTP应用程序处理的只是URI的URL子集.

3.1 消息请求格式

3.2 HTTP常见的请求方法

HTTP消息请求的第一个字段就是“请求方法”,HTTP 1.1 中定义的几种常见的请求方法如下(只列出了常用的):

  • GET
    向服务器获取数据。使用GET请求方法时,消息Body中没有“请求数据”(见上面消息格式的图)部分,所以将需要提交到服务器的数据放在URL中,因此能够提交到服务器的数据会受到URL长度的限制。
 各个浏览器对URL长度的限制如下(这些限制值可能随着浏览器的版本的更新而发生改变,仅供参考):
1. IE浏览器(Microsoft Internet Explorer) 对URL长度限制是2083(2K+53),超过这个限制,则自动截断(若是form提交则提交按钮不起作用)。
2. Firefox
Firefox(火狐浏览器)对URL长度限制是65536字符,但实际上有效的URL最大长度不少于100,000个字符。
3. Chrome
chrome对URL长度限制是8182个字符。
4. Safari
Safari对URL长度限制是80000字符。
5. Opera
Opera浏览器对URL长度限制是190000 字符。
  • POST
    向服务器提交数据(例如提交表单或者上传文件)。提交的数据包含在Body中。

四、HTTP消息响应

4.1 消息响应格式

4.2 HTTP状态码

状态代码由三位数字组成,第一个数字定义了响应的类别,共分五种类别:

1xx消息—— 请求已被服务器接收,继续处理
2xx成功 —— 请求已成功被服务器接收、理解、并接受
3xx重定向 —— 需要后续操作才能完成这一请求
4xx请求错误 —— 请求含有词法错误或者无法被执行
5xx服务器错误 —— 服务器在处理某个正确请求时发生错误

常见的状态码有:

200 OK                        //客户端请求成功
400 Bad Request               //客户端请求有语法错误,不能被服务器所理解
401 Unauthorized              //请求未经授权,这个状态代码必须和WWW-Authenticate报头域一起使用
403 Forbidden                 //服务器收到请求,但是拒绝提供服务
404 Not Found                 //请求资源不存在,比如:输入了错误的URL
500 Internal Server Error     //服务器发生不可预期的错误
503 Server Unavailable        //由于超载或系统维护,服务器暂时的无法处理客户端的请求

关于HTTP状态码的完整定义见:https://tools.ietf.org/html/rfc2616#page-39

网络协议 -- HTTP协议相关推荐

  1. DDos攻击的一些领域知识——(流量模型针对稳定业务比较有效)不稳定业务采用流量成本的检测算法,攻击发生的时候网络中各个协议的占比发生了明显的变化...

    在过去,很多防火墙对于DDoS攻击的检测一般是基于一个预先设定的流量阈值,超过一定的阈值,则会产生告警事件,做的细一些的可能会针对不同的流量特征设置不同的告警曲线,这样当某种攻击突然出现的时候,比如S ...

  2. 网络编程 socket模块 tcp协议 udp协议

    网络基础相关知识 , socket模块 , tcp协议通信代码 , tcp和udp编码流程 网络基础相关知识(1) 架构 C / S 架构: client 客户端 和 server 服务器端 优势:能 ...

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

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

  4. python网络通信协议_Python网络概述:协议与体系结构的运用

    网络中存在多台主机,为保证主机间能顺利通讯,且通信双方可以获取到准确.有效的数据,应制订一组用于数据传输的规则,这组规则就是协议. 协议需要预先制定,同时,为确保网络通讯过程中对各种事件的应对能&qu ...

  5. 计算机网络的体系结构与协议基本概念,计算机网络技术基础-第3章网络体系结构与协议.ppt...

    <计算机网络技术基础-第3章网络体系结构与协议.ppt>由会员分享,可在线阅读,更多相关<计算机网络技术基础-第3章网络体系结构与协议.ppt(19页珍藏版)>请在装配图网上搜 ...

  6. (转)C#网络编程(订立协议和发送文件) - Part.4

    源码下载:http://www.tracefact.net/SourceCode/Network-Part4.rar C#网络编程(订立协议和发送文件) - Part.4 文件传输 前面两篇文章所使用 ...

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

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

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

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

  9. 网络七层协议 五层模型 TCP连接 HTTP连接 socket套接字

    socket(套接字)是通信的基石,是支持TCP/IP协议的网络通信的基本操作单元,包含进行网络通信必须的五种信息:连接使用的协议,本地主机的IP地址,本地进程的协议端口,远地主机的IP地址,远地进程 ...

  10. java udp 协议_网络协议 - UDP 协议详解

    ¶ 网络协议 - UDP 协议详解 基于TCP和UDP的协议非常广泛,所以也有必要对UDP协议进行详解.@pdai ¶ UDP概述 UDP(User Datagram Protocol)即用户数据报协 ...

最新文章

  1. Docker - Tips
  2. 北京冬奥会“特许上新日”迎春节 将集中上市多款年味产品
  3. 直播报名 | 基金业数字化运营指标体系建设
  4. 双击打开Inventor文件
  5. [C++STL]常用查找算法
  6. 华为系统p40pro计算机,华为P40 Pro:我来了!
  7. 算法设计与分析基础第二章部分课后题答案
  8. 如何将PDF每2页合并成横版的一页
  9. Hibernate pojo对象的三种状态
  10. excel公式里用html,Excel公式中{}是什么意思?要如何用?
  11. Android O版本power按键锁屏亮屏流程
  12. 微信小程序快递物流信息跟踪查询api接口对接快递鸟案例
  13. POJ 1265 Area
  14. NOIP 2011 Senior 5 - 聪明的质检员
  15. Windows Server 2003 漫游用户配置文件配置详解
  16. 奔驰采用鸿蒙系统,华为10分钟秒充190公里模块出口奥地利,奔驰使用鸿蒙系统!...
  17. 同时和同步有什么区别?
  18. 18.企业信息化战略与实施
  19. 一个好的预发布环境应该是怎么样的?
  20. 替代松翰sn8p2711,153系列主控IC

热门文章

  1. 阿里云产品推荐------数据库迁移
  2. Linux基础篇--shell脚本编程基础
  3. qt子控件单独指定鼠标形状等样式
  4. 量子计算机真实价格,“量子”产品功能强大价格不菲,专家提醒:虚假宣传!...
  5. 3D麻将游戏开发通用算法
  6. Python爬虫进阶之多线程爬取数据并保存到数据库
  7. 上溢、下溢,this指针
  8. Java基础_JDK、JRE、JVM
  9. 玉雕分几级(不要当真,纯属调侃)
  10. Oracle 常用系统函数