• http知识填坑


    当我们输入网址回车或者刷新页面时,浏览器和计算机做了什么事呢?

    首先就是域名解析,1.浏览器先搜索自身的DNS缓存

             2.若浏览器没有找到缓存或者缓存已经失效,那么计算机搜索自身的DNS缓存

             3.读取本地的HOST文件

             4.浏览器发起一个DNS的一个系统调用

              宽带运营商服务器查看本身缓存

              运营商服务器发起一个迭代DNS解析的请求

              运营商服务器把结果返回操作系统内核同时缓存起来

              操作系统内核把结果返回浏览器

              浏览器就拿到了www.xxxxxx.com的ip地址了 

             5.浏览器获得域名对应的ip地址后,发起HTTP经典的“三次握手”

             6.TCP/IP链接建立起来后,浏览器就可以向服务器发生HTTP请求了

             7.服务器端接受到了这个请求,根据路径参数,经过后端的一些处理之后,把处理后的结果数据返回给浏览器,比如页面完整的html代码返回给浏览器

             8.浏览器拿到了完整的html代码后,在解析和渲染这个页面时,里面js,css,图片静态资源,他们同样也是一个个http请求,都要经过上面七个步骤

             9.浏览器根据拿到的资源对页面进行渲染,最终把一个完整的页面呈现给用户

    而对于三次握手的解释是这样的:

    TCP是主机对主机层的传输控制协议,提供可靠的连接服务,采用三次握手确认建立一个连接:

    位码即tcp标志位,有6种标示:

    SYN(synchronous建立联机)

    ACK(acknowledgement 确认)

    PSH(push传送)

    FIN(finish结束)

    RST(reset重置)

    URG(urgent紧急)

    Sequence number(顺序号码)

    Acknowledge number(确认号码)

    客户端TCP状态迁移:
    CLOSED->SYN_SENT->ESTABLISHED->FIN_WAIT_1->FIN_WAIT_2->TIME_WAIT->CLOSED
    服务器TCP状态迁移:
    CLOSED->LISTEN->SYN收到->ESTABLISHED->CLOSE_WAIT->LAST_ACK->CLOSED

    各个状态的意义如下: 
    LISTEN - 侦听来自远方TCP端口的连接请求; 
    SYN-SENT -在发送连接请求后等待匹配的连接请求; 
    SYN-RECEIVED - 在收到和发送一个连接请求后等待对连接请求的确认; 
    ESTABLISHED- 代表一个打开的连接,数据可以传送给用户; 
    FIN-WAIT-1 - 等待远程TCP的连接中断请求,或先前的连接中断请求的确认;
    FIN-WAIT-2 - 从远程TCP等待连接中断请求; 
    CLOSE-WAIT - 等待从本地用户发来的连接中断请求; 
    CLOSING -等待远程TCP对连接中断的确认; 
    LAST-ACK - 等待原来发向远程TCP的连接中断请求的确认; 
    TIME-WAIT -等待足够的时间以确保远程TCP接收到连接中断请求的确认; 
    CLOSED - 没有任何连接状态;

    TCP/IP协议中,TCP协议提供可靠的连接服务,采用三次握手建立一个连接,

    (1)第一次握手:建立连接时,客户端A发送SYN包(SYN=j)到服务器B,并进入SYN_SEND状态,等待服务器B确认。

    (2)第二次握手:服务器B收到SYN包,必须确认客户A的SYN(ACK=j+1),同时自己也发送一个SYN包(SYN=k),即SYN+ACK包,此时服务器B进入SYN_RECV状态。

    (3)第三次握手:客户端A收到服务器B的SYN+ACK包,向服务器B发送确认包ACK(ACK=k+1),此包发送完毕,客户端A和服务器B进入ESTABLISHED状态,完成三次握手。

    完成三次握手,客户端与服务器开始传送数据。

     

    http协议可以粗暴的分为请求和响应,请求和响应都会发送http头和正文信息。http头发送的是一些附加的信息:内容类型,服务器发送响应的日期,http状态码。正文的话就是表单的数据和返回的数据

    未来的你会感谢现在努力的你
  • 相关阅读:
    [BZOJ 3282] Tree 【LCT】
    [BZOJ 2049] [Sdoi2008] Cave 洞穴勘测 【LCT】
    [BZOJ 1036] [ZJOI2008] 树的统计Count 【Link Cut Tree】
    [HDOJ
    Excel+DDT数据驱动实例
    jenkins+SVN配置
    [转]loadrunner:系统的平均并发用户数和并发数峰值如何估算
    loadrunner:Auto Correlate自动定位瓶颈
    loadrunner:判断是否服务器连接池瓶颈
    利用page_source抓取网页中的URL,进行链接测试
  • 原文地址:https://www.cnblogs.com/cjxblogs/p/6714427.html
Copyright © 2020-2023  润新知