码迷,mamicode.com
首页 > Web开发 > 详细

第一讲_HTTP协议详解

时间:2015-06-30 20:13:57      阅读:157      评论:0      收藏:0      [点我收藏+]

标签:

HTTP协议介绍:

绝大多数的Web开发,都是构建在Http协议之上的Web应用,理解和掌握Http协议,将有助于我们更好的学习和掌握Servlet和Jsp技术,以及其他相关的Web开发技术。

网络基础知识:

网络编程的目的就是指直接或间接地通过网络协议与其他计算机进行通讯。网络编程中有两个主要的问题,一个是如何准确定位网络上一台或多台主机,另一个就是找到主机后如何可靠高效的进行数据传输。

ISO/OSI(Open System Interconnection)七层参考模型:应用层(处理网络应用)、表示层(数据表示)、会话层(主机间通信)、传输层(端到端的连接)、网络层(寻址和最短路径)、数据链路层(介质访问(接入))、物理层(二进制传输)

OSI各层所使用的协议:

应用层:远程登录协议Telnet、文件传输协议FTP、超文本传输协议HTTP、域名服务DNS、简单邮件传输协议SMTP、邮局协议POP3等。

传输层:传输控制协议TCP(Transfer Control Protocol,面向连接的可靠的传输协议,类比打电话)、用户数据报协议UDP(User Datagram Protocol无连接的,不可靠的传输协议,类比写信)。

TCP和UDP的比较:

  • 使用UDP时,每个数据报中都给出了完整的地址信息,因此无需建立发送方和接收方的连接;对于TCP,由于它是一个面向连接的协议,在socket之间进行数据传输之前必然要建立连接,所以在TCP中多了一个连接建立的时间
  • 使用UDP传输数据时是有大小限制的,每个被传输的数据报必须限定在64KB之内。TCP没有这种限制,一旦连接建立起来,双方的socket就可以按统一的格式传输大量的数据
  • UDP是一个不可靠的协议,发送方所发送的数据报不一定以相同的次序到达接收方,TCP是一个可靠的协议,它确保接收方完全正确的获取发送方所发送的全部数据
  • TCP在网络通信上有极强的生命力,例如远程连接(Telnet)和文件传输(FTP)都需要不定长度的数据被可靠地传输;相比之下UDP操作简单,而且仅需要将少的监护

那么问题来了,既然有了保证可靠传输的TCP协议,为什么还需要非可靠传输的UDP协议呢?

主要原因有二:

  • 一是可靠的传输是要付出代价的,对数据内容正确性的检验必然占用计算机的处理时间和网络的带宽,因此TCP传输的效率不如UDP
  • 二是在许多应用中并不需要保证严格的传输可靠性,比如视频会议系统,并不要求音频视频数据绝对的正确,只要保证连贯性就可以了,这种情况下显然使用UDP会更合理一些

端口:在互联网上传输的数据都包含有用来识别目的地的IP地址和端口号。IP地址用来标识网络上的计算机,而端口号用来指明该计算机上的应用程序,端口使用一个16位的数字来表示,范围从0~65535,1024以下的端口号保留给预定义的服务。例如:http使用80端口,比如访问百度的时候可以在www.baidu.com后面加一个‘:80‘,而加上‘:81‘,访问就失败了。

数据封装:一台计算机要发送数据到另一台计算机,数据首先必须打包,打包的过程称为封装。封装就是在数据前面加上特定的协议头部。

TCP/IP模型:

TCP/IP起源于美国国防部高级研究规划署(DARPA)的一项计划——实现若干台主机的相互通信,现在TCP/IP已称为Internet上通信工业标准,TCP/IP模型包括四个层次:应用层、传输层、网络层、网络接口。

TCP/IP与OSI参考模型的对应关系如下:

技术分享

HTTP协议:

Http(Hypertext Transfer Protocol)超文本传输协议,是现今WWW上应用得最多的协议,目前的版本为1.1;Http是应用层协议,当你上网浏览网页的时候,浏览器和服务器之间就会通过Http在Internet上进行数据的发送和接收;http是一个基于请求/响应模式的,无状态的协议(request/response based,stateless protocol)

浏览器与服务器通信的过程(HTTP1.0):客户发起连接;客户发送请求;服务器响应请求;服务器关闭连接

持续连接(Persistent Connections):

  • 在Http1.0中,当连接建立后,浏览器发送一个请求,服务器回应一个消息,之后,连接就被关闭。当浏览器下次请求的时候,需要重新建立连接,很显然这种需要不断建立连接的通信方式开销比较大。早期的Web页面通常只包含HTML文本,因此即使建立连接的开销比较大,也不会有太大的影响。而现在的Web页面往往包含多种资源(图片、动画、声音等),每获取一种资源,就建立一次连接(比如请求首页,里面包含三张图片,那么要反复建立断开连接四次),这样就增加了HTTP服务器的开销,造成了Internet上的信息堵塞。
  • 因此在Http1.1版本中,给出了一个持续连接机制,并将其作为在Http1.1中建立连接的缺省行为。通过这种连接,浏览器可以在建立一个连接之后,发送请求并得到回应。而且,客户端还可以发送流水线请求,也就是说,客户端可以连续发送多个请求,而不用等待每一个响应的到来。

一个Web站点每天可能要接收上百万的用户请求,为了提高系统效率,HTTP1.0规定浏览器与服务器只保持短暂的连接,浏览器的每次请求都需要与服务器建立一个TCP连接,服务器完成请求处理后立即断开TCP连接,服务器不跟踪每个客户也不记录过去的请求。但是,这也造成了一些性能上的缺陷,例如,一个包含有许多图像的网页文件中并没有包含真正的图像数据内容,而只是指明了这些图像的URL地址,当Web浏览器访问这个网页文件时,浏览器首先由发出针对该网页文件的请求,当浏览器解析Web服务器返回的该网页文档中的HTML内容时,发现其中的<img>图像标签后,浏览器根据<img>标签中的src属性所指定的URL地址再次向服务器发出下载图像数据的请求。

下面通过图示的方式对这两种协议进行区分:

技术分享

技术分享

HTTP URL:

格式:http://host[:port][abs_path]

其中http表示要通过HTTP协议来定位网络资源;host表示合法的Internet主机域名或IP地址(以点分十进制格式表示);port用于指定一个端口号,拥有被请求资源的服务器主机监听该端口的TCP连接。如果port为空,则使用缺省的端口80;abs_path指定请求资源的URI(Uniform Resource Identifier,统一资源标识符),如果URL中没有给出abs_path,那么当它作为请求URI时,必须以"/"的形式给出。通常这个工作浏览器就帮我们完成了。

HTTP请求:

客户端通过发送HTTP请求向服务器请求对资源的访问。HTTP请求由三部分组成,分别是:请求行,消息报头,请求正文。

 

第一讲_HTTP协议详解

标签:

原文地址:http://www.cnblogs.com/Code-Rush/p/4610986.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!