zoukankan      html  css  js  c++  java
  • HTTP协议

    (1)万维网

    首先先学习下万维网WWW(world wide web)是一个大规模的、联机式的信息储藏所。我们在万维网上能非常方便的从因特网的一个站点访问另一个站点。万维网是一个分布式的超媒体系统,它是超文本的扩充,一个超文本由多个信息源链接成,而这些信息源的数目实际上是不受限制的。我们可以利用一个链接找到另一个文档。这些文档可以位于世界上任何一个接在因特网上的超文本系统中。超文本是万维网的基础。

    超媒体与超文本的区别是文档内容不同,超文本文档只包括文本信息,而超媒体文档还包含其他表示方式的信息,比如图形、声音、动画,甚至活动视频图像。

    分布式与非分布式的超媒体系统也有很大的区别。非分布式的系统中,各种信息都驻留在单个计算机的磁盘中,因为各种文档都可从本地获得,对这些文档之间的链接可进行一致性检查。因此非分布式超媒体系统能够保证所有的链接都是有效和一致的。分布式系统中,每台计算机上的文档都独立进行管理,对文档的增改删操作不需要通知到因特网上的各个节点。这样分布式系统中的链接就会经常不一致。

    万维网以C/S的方式工作。客户程序向服务器程序发出请求,服务器程序向客户程序送回客户所要的文档。

    (2)如何标志万维网上的文档呢

    URL统一资源定位符。相当于一个文件名在网络范围中的一个扩展,一方面是任何可访问对象的一个指针,另一方面还指出了读取某个对象时所使用的访问方式。

    一般形式:<URL的访问方式>://<主机>:<端口>/<路径>

    URL的访问方式主要有http、ftp、news。主机是必须的,端口和路径可以省略。

    比如使用http的URL。HTTP的默认端口号是80,通常可以省略。如果再省略了路径,那么URL就指到了因特网上的某个主页。如http://www.tsinghua.edu.cn

    URL不区分大小写,但有的界面为使读者看起来方便,故意使用一些大写字母。

    (3)超文本传送协议HTTP

    http是面向事务的应用层协议。每个万维网网点都有一个服务器进程,它不断的监听TCP端口80,以便发现是否有浏览器(客户进程)向它发出连接建立请求。一旦监听到,并建立了TCP连接后,浏览器就向服务器发出浏览某个页面的请求,服务器接着就返回所请求的界面作为响应。最后TCP就被释放了。在浏览器和服务器之间的请求和响应的交互,必须按照规定的规定的格式和遵循一定的规则。这些格式和规则就是超文本传送协议HTTP。

    比如你点击了页面上的一个可选部分,而这个部分是清华大学院系设置的页面,那么随后发生的事情是:

    1.浏览器分析超链指向页面的URL

    2.浏览器向DNS请求解析www.tsinghua.edu.cn的IP地址

    3.域名系统DNS解析出清华大学服务器的IP地址为166.111.4.100

    4.浏览器与服务器建立TCP连接(服务端IP地址为166.111.4.100,端口是80)

    5.浏览器发出取文件命令:GET/chn/yxsz/index.html

    6.服务器www.tsinghua.edu.cn给出响应,把index.html发送给浏览器

    7.TCP连接被释放

    8.浏览器显示index.html中的所有文本

    HTTP是一个面向事务的客户服务器协议。虽然使用了TCP,但是HTTP1.0是无状态的。也就是说同一个客户第二次访问同一个服务器上的页面时,服务器的响应与第一次被访问时相同,因为服务器不记得曾经访问过的客户,也不记得访问过多少次。

    (4)代理服务器的概念

    代理服务器是一种网络实体,它能代表浏览器发出HTTP请求。有时代理服务器也被称为万维网高速缓存(Web cache)。代理服务器将最近的一些请求和响应暂存在本地磁盘中。当新请求到达时,若代理服务器发现这个请求与暂时存放的请求相同,就返回暂存的响应,而不需要按照URL再次去因特网上访问该资源。代理服务器可在客户端和服务器或者中间系统上工作。

    (5)HTTP的报文结构——请求报文和响应报文

    HTTP是面向文本的,在报文中的每个字段都是ASCII码串,每个字段的长度都是不确定的。

    三部分

    1.开始行——用于区分请求报文还是响应报文。分别叫做请求行和状态行

    2.首部行——用于说明浏览器服务器或者报文主体的一些信息。

    3.实体主体——请求报文中一般不用,响应报文中,有些不用

    请求报文中的请求行,有方法、请求资源的URL、HTTP版本。

              方法就是对所请求对象进行的操作,比如GET,HEAD,DELETE等。

    响应报文中的状态行,有HTTP版本、状态码、解释状态码的简单语句

              状态码都是三位数字,有5大类。

    1xx表示通知信息,如请求收到获正在处理。

    2xx表示成功,如接受。HTTP/1.1 202 Accepted

    3xx表示重定向,表示要完成请求还必须采取进一步的行动。 HTTP/1.1 301 Moved Permanently

    4xx表示客户差错,如请求中有错误或不能完成。HTTP/1.1 404 Not found

    5xx表示服务器的差错,如服务器失效无法完成请求。

  • 相关阅读:
    C# 杂活
    常用 SQL Server 规范集锦
    C# 文件操作
    使用Git 本地代码提交到 GitHub
    Numpy的小总结
    C#最佳工具集合:IDE、分析、自动化工具等
    Web服务器、应用服务器、Web容器、反向代理服务器区别与联系
    Platt SMO 和遗传算法优化 SVM
    Pycharm配置(三)
    Pycharm配置(二)
  • 原文地址:https://www.cnblogs.com/mini-coconut/p/9178404.html
Copyright © 2011-2022 走看看