WEB工作原理

作者: 盘木 | 来源:发表于2017-03-29 00:11 被阅读117次
    web工作原理图

    一次HTTP操作称为一个事务,其工作整个过程如下:

    1 ) 、地址解析,

    如用客户端浏览器请求这个页面:http://localhost.com:80/index.htm

    从中分解出协议名、主机名、端口、对象路径等部分,对于我们的这个地址,解析得到的结果如下:

    协议名:http

    主机名:localhost.com

    端口:80

    对象路径:/index.htm

    在这一步,需要域名系统DNS解析域名localhost.com,得主机的IP地址。

    2)、封装HTTP请求数据包

    把以上部分结合本机自己的信息,封装成一个HTTP请求数据包

    3)封装成TCP包,建立TCP连接(TCP的三次握手)

    在HTTP工作开始之前,客户机(Web浏览器)首先要通过网络与服务器建立连接,该连接是通过TCP来完成的,该协议与IP协议共同构建Internet,即著名的TCP/IP协议族,因此Internet又被称作是TCP/IP网络。HTTP是比TCP更高层次的应用层协议,根据规则,只有低层协议建立之后才能,才能进行更层协议的连接,因此,首先要建立TCP连接,一般TCP连接的端口号是80。这里是8080端口

    4)客户机发送请求命令

    建立连接后,客户机发送一个请求给服务器,请求方式的格式为:统一资源标识符(URL)、协议版本号,后边是MIME信息包括请求修饰符、客户机信息和可内容。

    5)服务器响应

    服务器接到请求后,给予相应的响应信息,其格式为一个状态行,包括信息的协议版本号、一个成功或错误的代码,后边是MIME信息包括服务器信息、实体信息和可能的内容。

    实体消息是服务器向浏览器发送头信息后,它会发送一个空白行来表示头信息的发送到此为结束,接着,它就以Content-Type应答头信息所描述的格式发送用户所请求的实际数据

    6)服务器关闭TCP连接

    一般情况下,一旦Web服务器向浏览器发送了请求数据,它就要关闭TCP连接,然后如果浏览器或者服务器在其头信息加入了这行代码

    Connection:keep-alive

    TCP连接在发送后将仍然保持打开状态,于是,浏览器可以继续通过相同的连接发送请求。保持连接节省了为每个请求建立新连接所需的时间,还节约了网络带宽。

    HTTP各种长度限制

    1. URL长度限制

    在Http1.1协议中并没有提出针对URL的长度进行限制,RFC协议里面是这样描述的,HTTP协议并不对URI的长度做任何的限制,服务器端必须能够处理任何它们所提供服务多能接受的URI,并且能够处理无限长度的URI,如果服务器不能处理过长的URI,那么应该返回414状态码。

    虽然Http协议规定了,但是Web服务器和浏览器对URI都有自己的长度限制。

    服务器的限制:我接触的最多的服务器类型就是Nginx和Tomcat,对于url的长度限制,它们都是通过控制http请求头的长度来进行限制的,nginx的配置参数为large_client_header_buffers,tomcat的请求配置参数为maxHttpHeaderSize,都是可以自己去进行设置。

    浏览器的限制:每种浏览器也会对url的长度有所限制,下面是几种常见浏览器的url长度限制:(单位:字符)

    IE : 2803

    Firefox:65536

    Chrome:8182

    Safari:80000

    Opera:190000

    对于get请求,在url的长度限制范围之内,请求的参数个数没有限制。

    2. Post数据的长度限制

    Post数据的长度限制与url长度限制类似,也是在Http协议中没有规定长度限制,长度限制可以在服务器端配置最大http请求头长度的方式来实现。

    3. Cookie的长度限制

    Cookie的长度限制分这么几个方面来总结。

    (1) 浏览器所允许的每个域下的最大cookie数目,没有去自己测试,从网上找到的资料大概是这么个情况

    IE :原先为20个,后来升级为50个

    Firefox: 50个

    Opera:30个

    Chrome:180个

    Safari:无限制

    当Cookie数超过限制数时浏览器的行为:IE和Opera会采用LRU算法将老的不常使用的Cookie清除掉,Firefox的行为是随机踢出某些Cookie的值。当然无论怎样的策略,还是尽量不要让Cookie数目超过浏览器所允许的范围。

    (2) 浏览器所允许的每个Cookie的最大长度

    Firefox和Safari:4079字节

    Opera:4096字节

    IE:4095字节

    (3) 服务器中Http请求头长度的限制。Cookie会被附在每次http请求头中传递给服务器,因此还会受到服务器请求头长度的影响。

    4. Html5 LocalStorage

    Html5提供了本地存储机制来供Web应用在客户端存储数据,尽管这个并不属于Http协议的一部分,但是随着Html5的流行,我们可能需要越来越多使用LocalStorage,甚至当它普及的时候跟它打交道就会同今天我们跟Cookie打交道一样多。

    对于LocalStorage的长度限制,同Cookie的限制类似,也是浏览器针对域来限制,只不过cookie限制的是个数,LocalStorage限制的是长度:

    Firefox\Chrome\Opera都是允许每个域的最大长度为5MB

    但是这次IE比较大方,允许的最大长度是10MB

    相关文章

      网友评论

        本文标题:WEB工作原理

        本文链接:https://www.haomeiwen.com/subject/xfgsottx.html