您的位置:首页 > 其它

如何理解浏览器与web服务器的通信

2012-05-19 00:23 218 查看
大家都知道上网时,在浏览器上单击页面就会获取自己所需要内容,这个涉及在web编程中浏览器与web服务器之间的通信问题。因为我对于这个问题,一直没有搞明白,所以今天写点东东,作为一个总结吧。

那么如何理解浏览器与web服务器之间的通信呢?

浏览器,就是用户所用的客户端;web服务器故名思义就是服务器了。客户端与服务器身处两地,它们是如何进行通信的呢?在回答这个问题之前,我们需要了解一下网络这个名词。网络就是互相发送与接收信息的计算机集合(当然这个定义不太完整),这只是我个人的理解。这些计算机是通过网线连接在一起的,就构成了网络。对于单个计算机,正常情况有浏览器,网卡,并通过网线上网。从浏览器到网线这一段距离,我们把它进行分层,分为表现层(就是浏览器)、传输层、网际层、主机网络层。

当浏览器有一个请求,即表现层有一个通求,而表现层与传输层进行通信,将请求传递下去,然后传输层与网际层进行通信,再次网际层与主机网络层进行通信,最行主机网络层通过网线将请求传给远端的web服务器。而远端的web服务器则进行一个相反的过程,就获取到了相应的请求信息。

具体来讲,当一个浏览器向web服务器发送一请求时,浏览器实际上只与本地的传输层进行会话(或者就是进行了信息的传递),而传输层将信息分解成TCP 片,向加数据中添加了序号与校验和,然后将请求传递给本地的网际层。网际层将各TCP片根据本地网络所需的大小分成IP数据报,交给主机网络层。主机网络层将数字数据编码为适合于网线传输的模拟信号,将请求发送到网线,相应的远端web服务器从网线上读取到请求。

web服务器的主机网络层将模拟信号解码为数字数据,将生成的IP数据报传递给服务器的网际层。网际层简单地检查IP数据报是否被破坏,并判断数据是否被分片,如果分片则进行数据重组,然后传递给web服务器的传输层。传输层进行数据的检查,查看是否所有的数据都已收到,如果没有收到,则要求进行重发(因为它是基于http协议,这就是与utp协议的不同)。如果web服务器的传输层收到了足够的连续的数据报(为什么说是足够的连续的数据报呢?这个需要大家想一下了),就将其进行重组写入一个流(这就是一个数据流),运行于服务器应用层的web服务器则读取这个流,服务器响应此请求,将响应发送给服务器系统的各个分层,通过Internet进行传输,分发给web客户端。

当然了这里我也只是简单的描述了大体的数据传输情况,因为我也只能描述到这个程度,再深点,我也搞不定。

对于为什么说是足够的连续的数据报呢?这个问题如何理解呢?现在我举一个简单的例子,来分析一下,在线视频,大家都看过。比如,你有一个请求,请求内容“我要看飞门飞甲”,请求信息很短,很简单,web服务器在传输层可以完全获取请求的连续数据报并解析,然后传给应用层。应用层收到请求,一分析,知道了,原来你小子想看飞门飞甲,在和谐社会里应当满足你的这个小小要求,于是就从影视库中调出龙门飞甲资源传输给你。试想一下,龙门飞甲,这个资源可不像你的请求内容那么短小,所以你的计算机的传输层在收到足够的连续的数据报就将数据发送到应用层(也就是你的表现层,浏览器),你就可以看到龙门飞甲了。如果要是收到全部的连续的数据报,那你则需要进行多长时间的等待呢?这个问题我就不知道答案了。

关于如何理解浏览器与web服务器的通信这个东东,就先写到这,以后如有更深的理解再写,因为我很闲有的是时间,就是能力能够,所以相写但总是写不出来。

现在给你说一声,下一个问题我想写,为什么会有servlet?
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐