网络协议 -- HTTP协议
一、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 Identifiers
,URI
)来标识。我们常用的是URL,那么URI, URL, URN之前有什么区别和联系了?
URI = Uniform Resource Identifier 统一资源标识符
URL = Uniform Resource Locator 统一资源定位符
URN = Universal Resource Name 统一资源名称
三者关系如下图:
URI
用来唯一标识符来标识一个资源,是一个通用的概念,URI
由URL
和URN
两个子集组成。
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协议相关推荐
- DDos攻击的一些领域知识——(流量模型针对稳定业务比较有效)不稳定业务采用流量成本的检测算法,攻击发生的时候网络中各个协议的占比发生了明显的变化...
在过去,很多防火墙对于DDoS攻击的检测一般是基于一个预先设定的流量阈值,超过一定的阈值,则会产生告警事件,做的细一些的可能会针对不同的流量特征设置不同的告警曲线,这样当某种攻击突然出现的时候,比如S ...
- 网络编程 socket模块 tcp协议 udp协议
网络基础相关知识 , socket模块 , tcp协议通信代码 , tcp和udp编码流程 网络基础相关知识(1) 架构 C / S 架构: client 客户端 和 server 服务器端 优势:能 ...
- 02.iOS开发网络篇—HTTP协议
iOS开发网络篇-HTTP协议 说明:apache tomcat服务器必须占用8080端口 一.URL 1.基本介绍 URL的全称是Uniform Resource Locator(统一资源定位符) ...
- python网络通信协议_Python网络概述:协议与体系结构的运用
网络中存在多台主机,为保证主机间能顺利通讯,且通信双方可以获取到准确.有效的数据,应制订一组用于数据传输的规则,这组规则就是协议. 协议需要预先制定,同时,为确保网络通讯过程中对各种事件的应对能&qu ...
- 计算机网络的体系结构与协议基本概念,计算机网络技术基础-第3章网络体系结构与协议.ppt...
<计算机网络技术基础-第3章网络体系结构与协议.ppt>由会员分享,可在线阅读,更多相关<计算机网络技术基础-第3章网络体系结构与协议.ppt(19页珍藏版)>请在装配图网上搜 ...
- (转)C#网络编程(订立协议和发送文件) - Part.4
源码下载:http://www.tracefact.net/SourceCode/Network-Part4.rar C#网络编程(订立协议和发送文件) - Part.4 文件传输 前面两篇文章所使用 ...
- web网络和http协议(了解域名和网页,制作第一个网页,了解http协议,流程和请求报文格式)
文章目录 web网络和http协议 了解域名 早期使用HOST文件解析域名 现在DNS(Domain Name system 域名系统) 域名的概述 域名空间结构 域名介绍 域名注册 域名注册步骤 网 ...
- 网络编程——常用协议解析
** 1.网络基础知识 ** 1.1> 什么是OSI模型 OSI 模型(Open System Interconnection model)是一个由国际标准化组织?提出的概念模型,试图?供一个使 ...
- 网络七层协议 五层模型 TCP连接 HTTP连接 socket套接字
socket(套接字)是通信的基石,是支持TCP/IP协议的网络通信的基本操作单元,包含进行网络通信必须的五种信息:连接使用的协议,本地主机的IP地址,本地进程的协议端口,远地主机的IP地址,远地进程 ...
- java udp 协议_网络协议 - UDP 协议详解
¶ 网络协议 - UDP 协议详解 基于TCP和UDP的协议非常广泛,所以也有必要对UDP协议进行详解.@pdai ¶ UDP概述 UDP(User Datagram Protocol)即用户数据报协 ...
最新文章
- Docker - Tips
- 北京冬奥会“特许上新日”迎春节 将集中上市多款年味产品
- 直播报名 | 基金业数字化运营指标体系建设
- 双击打开Inventor文件
- [C++STL]常用查找算法
- 华为系统p40pro计算机,华为P40 Pro:我来了!
- 算法设计与分析基础第二章部分课后题答案
- 如何将PDF每2页合并成横版的一页
- Hibernate pojo对象的三种状态
- excel公式里用html,Excel公式中{}是什么意思?要如何用?
- Android O版本power按键锁屏亮屏流程
- 微信小程序快递物流信息跟踪查询api接口对接快递鸟案例
- POJ 1265 Area
- NOIP 2011 Senior 5 - 聪明的质检员
- Windows Server 2003 漫游用户配置文件配置详解
- 奔驰采用鸿蒙系统,华为10分钟秒充190公里模块出口奥地利,奔驰使用鸿蒙系统!...
- 同时和同步有什么区别?
- 18.企业信息化战略与实施
- 一个好的预发布环境应该是怎么样的?
- 替代松翰sn8p2711,153系列主控IC