第一讲_HTTP协议详解

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请求由三部分组成,分别是:请求行,消息报头,请求正文。

时间: 2024-10-06 20:40:04

第一讲_HTTP协议详解的相关文章

入木三分学网络第一篇--VRRP协议详解第一篇(转)

因为keepalived使用了VRRP协议,所有有必要熟悉一下. 虚拟路由冗余协议(Virtual Router Redundancy Protocol,简称VRRP)是解决局域网中配置静态网关时,静态网关出现单点失效现象的路由协议. VRRP广泛应用在边缘网络中,它的设计目标是支持特定情况下IP数据流量失败转移不会引起混乱,允许主机使用单路由器(位于一个虚拟路由器组中, 在该组中,只有一台路由器--master路由器工作,转发数据包,其它路由器是backup路由器,不参与转发数据包),以及在实

第七课-第一讲07_01_vim编辑器详解

文本编辑器:编辑纯Ascii码的文档,nano全屏编辑,sed行处理,vim字处理器:Word文档,WPS文档等 1.vi编辑器: Visual Interface可视化接口,vi增强版就是vim,vi的基础上增加了功能扩展的插件形成vim,Vi Improved.是一款全屏模式化编辑器.1)vim /path/to/somefile 打开文件vim +n /path/to/somefile 打开文件时让光标直接定位到某个行,如第n行最后一行显示打开的文件有多少行,共多少字符vim + /pat

HTTP协议详解

HTTP协议详解 转载(http://www.cnblogs.com/TankXiao/archive/2012/02/13/2342672.html) 当今web程序的开发技术真是百家争鸣,ASP.NET, PHP, JSP,Perl, AJAX 等等. 无论Web技术在未来如何发展,理解Web程序之间通信的基本协议相当重要, 因为它让我们理解了Web应用程序的内部工作. 本文将对HTTP协议进行详细的实例讲解,内容较多,希望大家耐心看.也希望对大家的开发工作或者测试工作有所帮助.使用Fidd

HTTP协议详解以及URL具体访问过程

1.简介 1.1.HTTP协议是什么? 即超文本传输协议(HTTP,HyperText Transfer Protocol)是互联网上应用最为广泛的一种网络协议,所有的WWW文件都必须遵守这个标准.从网络参考模型来看,它是属于应用层.它规定了计算机通信网络中两台计算机之间进行通信所必须共同遵守的规定或规则,它允许将超文本标记语言(HTML)文档从Web服务器传送到客户端的浏览器. 简单的来说,它就是基于应用层一个规范一个标准!通讯双发都需要遵守这一准则,这就是http协议! 1.2.http简史

(转)HTTP协议详解

HTTP协议详解 一.概念 协议是指计算机通信网络中两台计算机之间进行通信所必须共同遵守的规定或规则,超文本传输协议(HTTP)是一种通信协议,它允许将超文本标记语言(HTML)文档从Web服务器传送到客户端的浏览器. HTTP协议,即超文本传输协议(Hypertext transfer protocol).是一种详细规定了浏览器和万维网(WWW = World Wide Web)服务器之间互相通信的规则,通过因特网传送万维网文档的数据传送协议. HTTP协议是用于从WWW服务器传输超文本到本地

TCP协议详解(下)

 TCP协议详解 TCP状态转移 TCP连接的任意一端在任一时刻都处于某种状态,当前状态可以通过netstat命令查看,这里我们主要讨论TCP连接葱白建立到关闭的整个过程中通信两端状态的变化.如图是TCP状态转移过程. 图中,粗虚线表示典型的服务器连接的状态转移:粗实线显示典型的客户端连接的状态转移. TCP状态转移总图 服务器转移过程,这里我们说的连接状态指定是该连接的服务器状态. 服务器通过listen系统调用进入LISTEN状态,被动等待客户端连接,因此执行的是所谓的被动打开.服务器一

https SSL协议详解(转)

https协议详解 SSL (Secure Socket Layer) HTTPS(Secure Hypertext Transfer Protocol)安全超文本传输协议 https协议详解      HTTPS以保密为目标研发,简单讲是HTTP的安全版.其安全基础是SSL协议,因此加密的详细内容请看SSL.全称Hypertext Transfer Protocol over Secure Socket Layer.       它是一个URI scheme,句法类同http:体系.它使用了H

[转]HTTP 协议详解

出处:http://www.cnblogs.com/TankXiao/archive/2012/02/13/2342672.html 当今web程序的开发技术真是百家争鸣,ASP.NET, PHP, JSP,Perl, AJAX 等等. 无论Web技术在未来如何发展,理解Web程序之间通信的基本协议相当重要, 因为它让我们理解了Web应用程序的内部工作. 本文将对HTTP协议进行详细的实例讲解,内容较多,希望大家耐心看.也希望对大家的开发工作或者测试工作有所帮助.使用Fiddler工具非常方便地

HTTP协议详解(转)

当今web程序的开发技术真是百家争鸣,ASP.NET, PHP, JSP,Perl, AJAX 等等. 无论Web技术在未来如何发展,理解Web程序之间通信的基本协议相当重要, 因为它让我们理解了Web应用程序的内部工作. 本文将对HTTP协议进行详细的实例讲解,内容较多,希望大家耐心看.也希望对大家的开发工作或者测试工作有所帮助.使用Fiddler工具非常方便地捕获HTTP Request和HTTP Response,  关于Fiddler工具的用法,请看我另一篇博客[Fiddler 教程]