浏览器和Web服务器之间的通信如何进行?

任何人都可以解释浏览器和Web服务器之间的通信是如何发生的吗? 我想学习如何

  • GET,POST动词(等等)
  • cookies
  • 会议
  • 查询string

在幕后工作。

超文本传输​​协议(HTTP)是一种用于传输网页的协议(就像你现在正在阅读的协议)。 协议实际上不过是一种标准的做事方式。 如果你要和美国总统或国家的国王见面,你将不得不遵循一些具体的程序。 你不能走上去说“嗨,伙计”。 会有一种特定的方式来行走,谈话,标准的问候,以及结束谈话的标准方式。 TCP / IP协议栈中的协议具有相同的目的。

TCP / IP堆栈有四层:应用程序,传输,Internet和networking。 在每一层都有不同的协议用来标准化信息stream,每一个协议都是一个计算机程序(在你的计算机上运行),当信息在TCP / IP协议栈中向下移动时,用来将信息格式化成一个分组。 数据包是应用层数据,传输层头(TCP或UDP)和IP层头(networking层接收数据包并将其变为帧)的组合。

应用程序层

…由使用networking传输数据的所有应用程序组成。 它不关心两点之间的数据是如何得到的,而且对networking的状态知之甚less。 应用程序将数据传递到TCP / IP堆栈中的下一层,然后继续执行其他function,直到收到答复为止。 应用层使用主机名称(如www.dalantech.com)进行寻址。 应用层协议的例子包括:超文本传输​​协议(HTTP-web浏览),简单邮件传输协议(SMTP-电子邮件),域名服务(DNS-将主机名parsing为IP地址)等等。

应用层的主要目的是在运行在不同操作系统上的应用程序之间提供一种通用的命令语言和语法,类似于解释器。 由使用networking的应用程序发送的数据被格式化为符合几个设置的标准之一。 由于所有networking应用程序符合的标准,接收计算机即使正在运行与发送方不同的操作系统,也可以理解正在发送的数据。

传输层

负责将源端口号和目标端口号分配给应用程序。 端口号由传输层用于寻址,范围从1到65,535。 从0到1023的端口号称为“众所周知的端口”。 256以下的数字保留给运行在应用层的公共(标准)服务。 这里有几个:SMTP为25,DNS为53(域名parsing为udp,区域传输为tcp),HTTP为80。 由IANA分配的端口号从256到1023分配给公司,用于他们销售的应用程序。

例如,1024到65535之间的端口号用于客户端应用程序 – 例如用于阅读此页面的Web浏览器。 Windows只能分配高达5000的端口号 – 对于基于Windows的PC而言,端口号是足够多的。 每个应用程序都有一个唯一的端口号,由传输层分配给它,这样当数据被传输层接收时,它就知道将数据提供给哪个应用程序。 一个例子是当你有多个浏览器窗口运行。 每个窗口都是您用于浏览网页的程序的单独实例,并且每个窗口都分配有不同的端口号,因此您可以在一个浏览器窗口中访问www.dalantech.com,并且此站点不会加载到另一个浏览器窗口。 像使用选项卡式窗口的FireFox应用程序只有一个唯一的端口号分配给每个选项卡

互联网层

…是连接在一起的“胶水”。 它允许发送,接收和路由数据。

networking层

…由您的networking接口卡(NIC)和连接到它的电缆组成。 这是用于传输和接收数据的物理介质。 networking层使用前面讨论过的媒体访问控制(MAC)地址进行寻址。 MAC地址在制造接口时是固定的,不能改变。 有一些例外,例如DSL路由器,允许您在PC中克隆NIC的MAC地址。

欲了解更多信息:

  • 协议
  • TCP / IP

您的浏览器首先通过DNS将服务器名parsing为IP。 然后它打开一个到networking服务器的TCP连接,并尝试通过HTTP进行通信。 通常这是在TCP端口80,但你可以指定一个不同的( http://server:portnumber )。

HTTP看起来像这样:

一旦连接,它发送请求,如下所示:

 GET /site HTTP/1.0 Header1: bla Header2: blub {emptyline} 

例如,标题可能是AuthorizationRange 。 看到这里更多。

然后服务器响应这样的:

 200 OK Header3: foo Header4: bar content following here... 

例如,标题可能是DateContent-Type 。 看到这里更多。

查看维基百科的HTTP关于此协议的更多信息。

问题各个方面的规范链接如下:

  • GET,POST动词(除其他外) – HTTP规范详尽地讨论了HTTP通信(Web服务器和浏览器之间通信的协议)的所有方面。 它解释了请求消息和响应消息协议。

  • Cookies – 通过在HTTP响应中附加一个Set-Cookie HTTP标Set-Cookie

  • QueryStrings – 是HTTP请求中第一次出现“?”后的URL部分。 字符。 链接的规范是针对URI规范的3.4节。

  • 会话 – HTTP是一个同步的,无状态的协议。 会话或者状态错觉可以通过以下方式创build:(1)使用cookie将客户端计算机上的状态数据作为纯文本存储;(2)在请求的URL和查询string中传递数据值;(3)提交POST (4)通过会话密钥检索的服务器端持久性机制来存储状态信息(会话密钥从cookie,URL / Querystring或POST值中parsing出来采集。

对HTTP的解释可能会持续好几天,但我试图提供一个简洁但概念完整的答案,并且包含适当的链接以便进一步阅读官方规范。

您的浏览器位于TCP / IP之上,因为networking基于标准(通常是80端口),所以当您input地址(如google.com),运行浏览器的计算机时,会发生什么情况?数据,按照OSI标准封装在每一层(想象不同大小的信封,打包到下一个大小的每个信封中),OSI定义了7层,其中一个信封包含源地址和目的地址(即网站)以二进制编码。

当它到达第一层时,在OSI术语中,它通过媒体发送器(如电缆,DSL)传输。

如果通过ISP连接,则分层的信封被传送到ISP的networking系统,通过相反的解码来查看信封的分层包以查找地址,然后ISP检查其域名系统数据库找出他们是否有通往该地址的路线(caching在内存中,如果是,则通过互联网将其转发 – 再次分层包裹)。

如果不是这样,ISP询问顶级DNS服务器说'嗨,给我的地址由你提供的路线,即。 浏览器“,顶级DNS服务器将路由传递给ISP,然后存储在ISP的服务器内存中。

在成功路由数据包之后,信封的分层包被网站服务器发送和接收(考虑路由作为到达服务器的指示的路标),然后拆开分层的信封包,提取源地址和“啊哈,对我来说,对,我知道目标地址(就是你,浏览器),然后服务器将网页打包成一个打包的分层信封并发回(通常是反向路由,但并不总是案件)。

您的浏览器比接收打包的信封,并解包每个。 然后你的计算机对数据进行解密,你的浏览器在屏幕上呈现页面。

我希望这个答案足够你的理解。

这是来自浏览器 – 服务器通信 在这里输入图像说明

这取决于Web服务器,但如果你想知道从客户端看起来是什么样子,只需安装Live Headers和Firebug for Firefox。 随着萤火虫和活标题中的净选项卡打开,它应该清楚如何相互作用。

为了更深入地看看来回的实际数据,请使用wireshark 。

有一个商业产品有一个有趣的标志,让你看到所有types的服务器和客户端名为查尔斯的stream量。

另一个开源工具包括: Live HttpHeaders , Wireshark或Firebug 。

浏览器和networking服务器之间的通信发生在很多层次上,几乎不可能回答这个问题。 HTTP扮演了一个angular色,但是没有TCP就没有意义,没有IP就没有意义,如果没有它发送的物理networking,那么HTTP就没有意义。 然后,有POST和GET请求是相似的,但是足够不同,需要特别的讨论。 有时一个HTTP请求需要被authentication,有时候不需要。 应该提及Mimetypes。 然后,如果有代理,浏览器将发送不同的请求。 然后编码也起作用。 所以,我猜,这种问题最简单的答案是:浏览器向服务器请求数据,服务器向浏览器提供请求的数据。