- 1、本文档共8页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
Javaweb客户端和效劳器端交互的原理
其实客户端和效劳器端的交互原理很简单:即先是浏览器和效劳器端建立Socket无状态连接,也就是短连接,然后通过IO流进行报文信息(这个报文是严格遵循报文接口的)的交互,最后会话结束后就关闭连接。对于这些底层的协议和报文的打包解包交互的实现,其实java和浏览器早都已经封装好了,程序员只要专注于业务逻辑的实现就行。
a.TCP/IP整体构架概述
TCP/IP协议并不彻底符合OSI的七层参考模型。传统的开放式系统互连参考模型,是一种通信协议的7层抽象的参考模型,其中每一层执行某一特定任务。该模型的目的是使各种硬件在相同的层次上相互通信。这7层是:物理层、数据链路层、网路层、传输层、话路层、表示层和应用层。而TCP/IP通讯协议采用了4层的层级结构,每一层都呼叫它的下一层所提供的网络来完成自己的需求。这4层分别为:
i.应用层:应用程序间沟通的层,如超文本传送协议()、简单电子邮件传输(SMTP)、文件传输协议(FTP)、网络远程访问协议(Tel)等。
ii.传输层:在此层中,它提供了节点间的数据传送效劳,如传输控制协议(TCP)、用户数据报协议(UDP)等,TCP和UDP给数据包参加传输数据并把它传输到下一层中,这一层负责传送数据,并且确定数据已被送达并接收。
iii.互连网络层:负责提供根本的数据封包传送功能,让每一块数据包都能够到达目的主机(但不检查是否被正确接收),如网际协议(IP)。
iv.网络接口层:对实际的网络媒体的管理,定义如何使用实际网络(如Ether、SerialLine等)来传送数据。
b.协议介绍:
i.是一种超文本传送协议(HyperTextTransferProtocol),是一套计算机在网络中通信的一种规那末。在TCP/IP体系结构中,属于应用层协议,位于TCP/IP协议的顶层
ii.是一种无状态的的协议,意思是指在Web浏览器(客户端)和Web效劳器之间不需要建立持久的连接。整个过程就是当一个客户端向效劳器端发送一个请求(request),然后Web效劳器返回一个响应(response),之后连接就关闭了,在效劳端此时是没有保存连接的信息。
iii.遵循请求/响应(request/response)模型的,所有的通信交互都被构造在一套请求和响应模型中。
iv.浏览WEB时,浏览器通过协议与WEB效劳器交换信息,Web效劳器向Web浏览器返回的文件都有与之相关的类型,这些信息类型的格式由MIME定义。
c.协议的java实现方式
不管是TCP/IP协议也好,还是协议也好,java都是通过套接字(java..Socket)来实现的,可以参考我的另一篇技术博客:一个工程看javaTCP/IPSocket编程(1.3版)
a.定义的事务处理由以下四步组成:
i.建立连接:
例如我在浏览器里输入cuishen.iteye.,客户端请求这个地址时即翻开了web效劳器端口的一个套接字。因为在网络中间作为传递数据的实体介质就是网线,数据实质上是通过IO流进行输出和输
入,这就不难理解我们为什么在写一个Servlet的时候要引用importjava.io.*;的原因,包括我们在向客户端回发结果的时候要用到PrintWriter对象的println()方法。其实请求的这个地址还要加之端口号80,80可以不写,是因为浏览器默认的端口号是80。
在Java底层代码中是这样实现的,只无非它们已经帮我们做了。
Socketsocket=newSocket(cuishen.iteye.,80);
InputStreamin=socket.getInputStream();
OutputStreamout=socket.getOutputStream();
ii.客户端发送请求报文(request)
一旦建立了TCP连接,Web浏览器就会向Web效劳器发送请求命令,是一个ASCII文本请求行,后跟0个或者多个头标,一个空行和实现请求的任意数据。
即报文分四个局部:请求行,请求头标,空行和请求数据
1)请求行
请求行由三个标记组成:请求方法、请求URL和版本,中间用空格分开
例如:GETcuishen.iteye./blog/242842/1.1
标准定义了8种可能的请求方法:(最常见的就是GET和POST两种方法)
GET--检索URI中标识资源的
文档评论(0)