问题:请从计算机网络的角度,详细描述你在宿舍打开浏览器输入study.xxxx.edu.cn,并回车之后的流程,需要详细描述数据包的传输过程。
1.请求DNS服务器,通过DNS获取相应的域名对应的IP
具体过程: 11. 浏览器检查自身缓存中有没有被解析过的这个域名对应的ip地址,若有,解析结束。 1.2若浏览器缓存中没有,浏览器检查操作系统缓存中有没有对应的已解析过的结果。 1.3若还没有命中域名,请求本地域名服务器(LDNS)来解析该域名 1.4如果LDNS仍然没有命中,就直接跳到Root Server 域名服务器请求解析 1.5根域名服务器返回给LDNS一个所查询域的主域名服务器(cn.)地址 1.6此时LDNS再发送请求给上一步返回的gTLD 1.7接受请求的gTLD查找并返回这个域名对应的Name Server的地址 1.8Name Server根据映射关系表找到目标ip,返回给LDNS 1.9LDNS缓存这个域名和对应的ip 1.10LDNS把解析的结果返回给用户,用户根据TTL值缓存到本地系统缓存中
2.通过IP地址找到IP对应的服务器后,要求建立TCP连接,等浏览器发送完HTTP Request包 2.1建立TCP连接 (1) 服务端通过socket,bind和listen准备好接受外来的连接,此时服务端状态为Listen (2)客户端通过调用connect来发起主动连接,导致客户端TCP发送一个SYN字节,告诉服务器客户将在(待建立的)连接中发送的数据的初始序列号,客户端状态为SYN_SENT。 (3)服务器确认(ACK)客户的SYN,并自己也发送一个SYN,它包含服务器将在同一连接中发送数据的初始序列号。 (4)客户端确认服务的ACK和SYN,向服务器发送ACK,客户端状态ESTABLISHED (5)服务器接收ACK,服务器状态ESTABLISHED 2.2发送HTTP请求 连接成功建立后,向web服务器发送请求。当浏览器向Web服务器发出请求时,它向服务器传递了一个数据块,获取下列3部分HTTP请求信息 (1)请求方法URI协议/版本 (2)请求头 (3)请求正文
3.服务器接收到请求包之后才开始处理请求包,服务器调用自身服务,返回HTTP Response包 HTTP响应报文主要由状态行、响应头部、空行以及响应数据组成。 3.1状态行 协议版本,状态码,状态码描述 3.2响应头部
3.3响应数据 通过以上步骤,数据就已经传递完毕
4.客户端收到来自服务器的响应后开始渲染这个Response包里的主体,收到全部的内容后断开与该服务器之间的TCP连接 上述请求成功后,服务器会返回相应的HTML文件,既得到网页内容
4.1页面渲染 解析HTML以构建DOM树 –> 构建渲染树 –> 布局渲染树 –> 绘制渲染树
4.2断开TCP连接: 1、主动关闭方发送FIN,此时主动关闭方状态为:FIN_WAIT_1 2、被动关闭方收到后,回复ack,此时被动关闭方状态为:CLOSE_WAIT 3、主动关闭方收到ack后,状态为FIN_WAIT_2 4、被动关闭方发送FIN,此时状态为LAST_ACK 5、主动关闭方收到后,回复ack,此时状态为TIME_WAIT 6、被动关闭方收到ack后,状态为CLOSED
|