超文本传输协议(HTTP,HyperText Transfer Protocol)是互联网上应用最为广泛的一种网络协议。所有的WWW文件都必须遵守这个标准。设计HTTP最初的目的是为了提供一种发布和接收HTML页面的方法。1960年美国人Ted Nelson构思了一种通过计算机处理文本信息的方法,并称之为超文本(hypertext),这成为了HTTP超文本传输协议标准架构的发展根基。Ted Nelson组织协调万维网协会(World Wide Web Consortium)和互联网工程工作小组(Internet Engineering Task Force )共同合作研究,最终发布了一系列的RFC,其中著名的RFC 2616定义了HTTP 1.1。

HTTP协议的主要特点可概括如下:
1.支持客户/服务器模式。
2.简单快速:客户向服务器请求服务时,只需传送请求方法和路径。请求方法常用的有GET、HEAD、POST。每种方法规定了客户与服务器联系的类型不同。由于HTTP协议简单,使得HTTP服务器的程序规模小,因而通信速度很快。
3.灵活:HTTP允许传输任意类型的数据对象。正在传输的类型由Content-Type加以标记。
4.无连接:无连接的含义是限制每次连接只处理一个请求。服务器处理完客户的请求,并收到客户的应答后,即断开连接。采用这种方式可以节省传输时间。
5.无状态:HTTP协议是无状态协议。无状态是指协议对于事务处理没有记忆能力。缺少状态意味着如果后续处理需要前面的信息,则它必须重传,这样可能导致每次连接传送的数据量增大。另一方面,在服务器不需要先前信息时它的应答就较快。

技术架构:

HTTP是一个客户端服务器端请求和应答的标准(TCP)。客户端是终端用户,服务器端是网站。通过使用Web浏览器网络爬虫或者其它的工具,客户端发起一个到服务器上指定端口(默认端口为80)的HTTP请求。(我们称这个客户端)叫用户代理(user agent)。应答的服务器上存储着(一些)资源,比如HTML文件和图像。(我们称)这个应答服务器为源服务器(origin server)。在用户代理和源服务器中间可能存在

http和其他几种网络协议

多个中间层,比如代理,网关,或者隧道(tunnels)。尽管TCP/IP协议是互联网上最流行的应用,HTTP协议并没有规定必须使用它和(基于)它支持的层。 事实上,HTTP可以在任何其他互联网协议上,或者在其他网络上实现。HTTP只假定(其下层协议提供)可靠的传输,任何能够提供这种保证的协议都可以被其使用。

通常,由HTTP客户端发起一个请求,建立一个到服务器指定端口(默认是80端口)的TCP连接。HTTP服务器则在那个端口监听客户端发送过来的请求。一旦收到请求,服务器(向客户端)发回一个状态行,比如"HTTP/1.1 200 OK",和(响应的)消息,消息的消息体可能是请求的文件、错误消息、或者其它一些信息。
 
HTTP协议的网页

HTTP使用TCP而不是UDP的原因在于(打开)一个网页必须传送很多数据,而TCP协议提供传输控制,按顺序组织数据,和错误纠正。

通过HTTP或者HTTPS协议请求的资源由统一资源标示符(Uniform Resource Identifiers)(或者,更准确一些,URLs)来标识。

最新文章

  1. Javascript刷题 》 查找数组元素位置
  2. depot用例视图建模
  3. HTML5新增video标签及对应属性、API详解
  4. SQL2008无法启动,报错"17051
  5. 【读书笔记】读《JavaScript设计模式》之代理模式
  6. Java基础之读文件——使用缓冲读取器读取文件(ReaderInputFromFile)
  7. Javascript基础Function
  8. net use \\192.168.54.145 /user:administrator "12345qwert"无法连接,错误码1326
  9. java中的object类
  10. 以&运行在后台的程序,关闭terminal后,相应进进程自动关闭
  11. Java web中常见编码乱码问题(二)
  12. FastDFS安装全过程记录(V5.05)
  13. Struts2实现文件下载
  14. AT2369 Ants on a Circle (思路)
  15. spring的事件驱动模型
  16. Swift Realm 完整使用记录
  17. ubuntu下直接可视化访问服务器文件夹方法
  18. centos 6.5下安装nmap工具及简单用法
  19. SpringCloud请求响应数据转换(一)
  20. mongodb根据子项中的指标查找最小或最大值

热门文章

  1. 01背包Bone Collector
  2. Ajax第一课
  3. linux 内核的rt_mutex 锁操作实现的临界区
  4. Collection的迭代器Iterator
  5. Android 6.0的权限问题
  6. poj 1056 IMMEDIATE DECODABILITY 字典树
  7. 使用Redis实现分布式锁
  8. 技术福利:mysql数据库的基本命令汇总整理
  9. 大数的加法运算,杭电oj-1002
  10. [Angularjs]$http.post与$.post