建立一个web请求的过程 和所要用的协议以及它们的作用

By | 10月10日
Advertisement

用户在web浏览器地址栏输入确切地址后,会得到服务器的响应。用户在建立这一web请求后,则会经历一系列的协议。例如用户在web浏览器(如IE)地址栏输入URL(统一资源定位符),比如http://tms.jlu.edu.cn ,前面的http就属其中的一个协议类型。

由于所发出的数据要通过被访问主机的IP地址进行传输和路由,所以要先通过DNS服务器将域名解析为IP地址(假设DNS和我们的主机在一个网段):首先主机会产生一个DNS请求,将请求传递给传输层,通过UDP(User Datagram Protocol,用户数据报协议)产生一个UDP 报文,再传递给网络层产生一个IP报文,目的地址是DNS服务器的IP地址,然后在数据链路层通过ARP(Address Resolution Protocol,地址解析协议)协议得到DNS服务器的MAC地址。这以后把数据帧通过以太网传输给DNS服务器,DNS服务器再将收到的帧向上传给传输层,得到UDP报文。通过UDP报文中指定的端口号传给DNS应用程序。假设要解析的域名在当前的DNS服务器中有相应的表项(如果不在当地,本地DNS服务器还要向上级的DNS服务器发出DNS查询请求,如此递归直到查到要解析的域名的IP地址)。 DNS把通过DNS应答将得到的IP地址返回给请求的主机。

虽然浏览器得到对方的IP地址了,但仍不能发出请求。

首先要和对方服务器建立一个TCP(传输控制协议,TCP和UDP同属传输层,但是TCP协议是个可靠的面向连接的协议,要比UDP复杂的多。TCP更适合要求可靠传输的应用。)连接。建立连接通过三次握手方法,这里和以下发送的TCP报文同样要传给下一层:网络层。同样的,IP层给TCP报文加上IP报头,发送给路由器(假设主机和web服务器不在同一个网内),路由器根据报文中的目的IP地址决定下一跳的IP地址和端口。这个决定需要查询它自身的路由表(而路由表的维护需要路由协议,比如OSPF等)。IP报文可能通过多个路由器的转发,终于到达了对方的服务器。再剥掉IP报头递交给上层。建立好了TCP连接,以后发送的数据都可以这条可靠的连接传输了。和WEB服务器之间的TCP连接建立成功。就可以发送请求啦。WEB服务器收到请求,就可以将响应信息通过刚才建立好的TCP连接送回给请求方。

通过以上过程的描述我们可以发现,在发出web请求后所需要的协议有:

http协议、用户数据报协议、地址解析协议、TCP协议、路由协议和IP协议。它们的作用分别是,http协议:超文本传送协议 (HTTP) 是一种通信协议,它允许将超文本标记语言 (HTML) 文档从Web 服务器传送到 Web 浏览器 。HTML 是一种用于创建文档的标记语言,这些文档包含到相关信息的链接。您可以单击一个链接来访问其它文档、图像或多媒体对象,并获得关于链接项的附加信息。HTTP工作在TCP/IP协议体系中的TCP协议上。

用户数据报协议(UDP):U D P是一个简单的面向数据报的运输层协议,进程的每个输出操作都正好产生一个U D P数据报,并组装成一份待发送的I P数据报,提供面向事务的简单不可靠信息传送服务。

地址解析协议(ARP):实现通过IP地址得知其物理地址。在TCP/IP网络环境下,每个主机都分配了一个32位的IP地址。为了让报文在物理网路上传送,必须知道对方目的主机的物理地址。这样就存在把IP地址变换成物理地址的地址转换问题。就比如以太网环境,为了正确地向目的主机传送报文,必须把目的主机的32位IP地址转换成为48位以太网的地址。这就需要在互连层有一组服务将IP地址转换为相应物理地址,这组协议就是ARP协议。

路由协议:路由协议通过在路由器之间共享路由信息来支持可路由协议。路由信息在相邻路由器之间传递,确保所有路由器知道到其它路由器的路径。总之,路由协议创建了路由表,描述了网络拓扑结构 ;路由协议与路由器协同工作,执行路由选择和数据包转发功能。

TCP协议和IP协议组成一个体系,即TCP/IP协议(TCP传输控制协议和IP互联网协议),它由网络层的IP协议和传输层的TCP协议组成, TCP/IP 定义了电子设备如何连入因特网,以及数据如何在它们之间传输的标准。协议采用了4层的层级结构,每一层都呼叫它的下一层所提供的网络来完成自己的需求。通俗而言:TCP负责发现传输的问题,一有问题就发出信号,要求重新传输,直到所有数据安全正确地传输到目的地。而IP是给因特网的每一台电脑规定一个地址。

Similar Posts:

  • 从一个WEB请求说开去(三)

    由于最近一段时间忙的我晕头转向,所以一直没时间继续我的WEB请求之旅,深感抱歉. 开篇之前,我必须向大家道个歉,由于我的知识水平有限,对ASP.NET没有一个系统性的认知,所以不对的地方请朋友们不吝赐教.说真的,我特别怕由于我的认知不足而误导大家,请大家一定要带着脑袋以批判的角度来阅读拙作.砖头准备好了吗?开始. 上文我们主要描述了iis6.0的两个核心组件WAS和Worker Progress,而本文重点讲述一下WEB请求在工作进程中都经历了什么,下面我把描述工作进程的图示放大,如下: 我们知

  • 20秒建立一个Web Server

    有时候,我们会需要在本地建立一个Http Server,似的可以通过浏览器的URL来访问这些文件(如 http://localhost:8080).lighttpd.httpd和nginx是常见的web服务器,但是这些功能都很丰富,而我们只想要一个http server,如果不需要下载任何软件且20秒就可以部署使用那就最理想了. 那么,python可以满足你这个需求.只要你的系统(这里指Linux)中安装了python,你就可以在20秒内建立一个http server,并且不需要下载任何软件.

  • 读Spring的源代码二:DispatcherServlet处理web请求的过程

    DispatcherServlet是web服务的入口,是spring mvc重要的一环.下面是一个http request触发的调用过程.

  • 利用python自带的包, 快速建立一个web服务器

    利用Python自带的包可以建立简单的web服务器.在DOS里cd到准备做服务器根目录的路径下,输入命令: python -m Web服务器模块 [端口号,默认8000] 例如: python -m SimpleHTTPServer 8080 然后就可以在浏览器中输入 http://localhost:端口号/路径 来访问服务器资源. 例如: http://localhost:8080/index.htm(当然index.htm文件得自己创建) 其他机器也可以通过服务器的IP地址来访问. 这里的

  • 在eclipse中建立一个Web,没有web.xml的解决方法

    在新建web工程的时候,点击next-->next--> 在其中有一个选项是Generate web.xml deployment descriptor,将这项选上 再按finish,新建的Web工程就有了web.xml

  • 用Spring建立RESTful Web Service的Server和Client

    本文讲述如何用Spring做与Web Service相关的工作,包括建立服务器端和客户端.本文假设读者已经读过<在Eclipse中使用Maven建立Spring项目>一文. 用Spring构建RESTful Web Service Server 本节目标: 建立一个通过HTTP Get访问的Web Service: http://localhost:8080/greeting http://localhost:8080/greeting?name=User 返回JSON数据 {"id

  • 如何建立一个maven工程导入myeclipse

    该文章来自于http://blog.sina.com.cn/s/blog_77cb836301015r9b.html 本人的myeclipse8.5直接创建标准的工程不成功,就在网上找资料查查后,搞定了总结了这份资料,方便以后更好的解决更多关于用myeclipse8.5来创建一个标准的maven工程. [1]第一步:下载一个免安装版的apache-maven-3.0.3.zip解压后,配置环境变量 新建M2_HOME: 在path后面添加 %M2_HOME%bin; [2]第二步:编译检查环境是

  • 从一个http请求的详细过程---理解计算机网络

    http://duanple.blog.163.com/blog/static/70971767200981101340930/ 一个http请求的详细过程 我们来看当我们在浏览器输入http://www.mycompany.com:8080/mydir/index.html,幕后所发生的一切. 首先http是一个应用层的协议,在这个层的协议,只是一种通讯规范,也就是因为双方要进行通讯,大家要事先约定一个规范. 1.连接 当我们输入这样一个请求时,首先要建立一个socket连接,因为socket

  • 应用请求web服务器的过程详解

    我们在做渗透测试时,需要知道互联网中是如何处理客户端与服务器端之间的请求的.本文转载一篇文章详解介绍了一次web请求过程的处理. 我们要了解一下Internet中一台计算机访问Web服务器的全部过程,从中可以窥探Internet是如何工作的,本讲主要是想让大家明网络是怎样交付数据.寻址等,即Internet的基本工作原理. 一.网络环境说明 本次网络通信试验采用PacketTracer 5.0思科网络模拟软件.此次模拟环境中使用5个路由器连接两个以太网,其中192.168.2.0/24网段为服务

  • Java Web容器的启动与处理请求的过程

    容器启动时的加载顺序 一.启动一个WEB项目的时候,WEB容器会去读取它的配置文件web.xml,读取<context-param>结点. 二.容创建一个ServletContext(servlet上下文),这个 web项目的所有部分都将共享这个上下文. 三.容器将<context-param>转换为键值对,并交给 servletContext. 因为listener, filter 等在初始化时会用到这些上下文中的信息,所以要先加载. 四.容器创建<listener>

Tags: