在从服务器接收结果时发生传输级错误_从URL输入到页面呈现到底发生了什么?...

从URL输入到页面呈现大体经过以下几个过程:

1.DNS域名解析

2.TCP的三次握手连接

3.服务器接受http请求与响应处理

4.TCP的四次挥手断连

一、DNS域名解析

浏览器如何根据域名找到对应的服务器ip地址?主要经过下面几个过程:

1通过浏览器缓存查找DNS缓存,浏览器会通过一定的频率缓存DNS记录

2.浏览器缓存查找不到就会到本地的操作系统里查找

3.路由缓存,路由也会缓存DNS记录

4.ISP的DNS服务器,ISP 是互联网服务提供商(Internet Servier

3b5349d4084a3a6f46988259f52d3c23.png

DNS域名解析流程

二、TCP的三次握手连接

TCP位于OSI网络模型的第四层传输层,TCP在传输数据前,必须先建立连接。TCP是双向可以发送和接收的,所以需要三次握手。

TCP的三次握手连接的过程:

1.我们定义先发起请求链接的那端称为Client客户端,被动建立连接的那端为Server服务端。建立链接前,服务端先要处于监听状态lisenter,监听客户端的请求同步。Client客户端首先发送SYN=1,seq=x 给server服务端,然后client客户端连接状态变为syn_sent(发送已同步)状态,等待Server服务端ACK确认。

2.Server服务端监听接收到Client客户端的SYN同步请求后,回复ACK=1,确认信号,ack=x+1,表示同意链接。由于TCP是全双工的,server服务器端也会同步SYN=1,seq=y 表示server服务端向Client客户端发起的链接请求。此时server服务端的链接状态变为syn_recvd(同步已接收)状态,等待Client端的ACK确认。

3.Client客户端接收到Server服务端ACK=1,确认信号ack=x+1后,Client客户链接状态变为established,同时回复ACK=1,确认信息ack=y+1,表示回复Server服务端的SYN请求。Server服务端接收到Client客户端的ACK确认后,链接状态也变为etablished。之后建立完链接后,Client客户端和Server服务端随时可以进行数据传输。

d666c51e6d531d0725f802d83b6d1cbd.png

TCP的三次握手链接请求过程

三、http请求

http请求报文由请求行(request Line)、请求头(request header) 、请求体(request body)这几部分组成

2113f5902def0f80e37cc5f95ece84b6.png

http请求报文组成

1.请求行(request Line)

请求行组成包含以下几个:请求方法 空格 URL 协议版本

请求方法:八个请求方法之一,Post,Get、Delete、Put、Trace、Patch、Options

URL:全球资源统一定位符,即 :// /?组成。

协议版本:http的版本号

2.请求头(request Header)

请求头包含请求的附加信息,由关键字/值对组成。

3.请求体(request body)

请求体主要是请求的参数。

四、http响应

http响应组成:响应行,响应头,响应体

502172f7bcb94070eeb44eb83b9316bc.png

http响应报文组成

响应行:由协议版本,状态码,状态信息描述

状态码的含义:200: 请求成功,301: 资源被永远转移到其他URL上,404:请求资源找不到,500:服务器内部出错

状态码分类:

1XX:信息,服务器收到请求,需要请求者继续执行操作

2XX:成功,操作被成功接收并处理

3XX:重定向,需要进一步的操作以完成请求

4XX:客户端错误,请求包含语法错误或无法完成请求

5XX:服务器错误,服务器在处理请求的过程中发生了错误

五、TCP的四次挥手断链

1.TCP断链双方都可以发起,我们把先发起端称为Client客户端。开始Client客户端和Server服务端的链接状态都是established状态。client发送FIN给服务端,表示客户端已经没有数据发送给服务端了。此时,客户的链接转态变为FIN-wait1转态。

2.Server服务端接收到客户端的FIN请求后,回复ACK 确认,此时服务端的链接转态变为Close_wait状态,服务端的状态处于半关闭状态,因为客户端不会再向服务端发送数据,但服务端还是可以向客户端发送数据。

3.客户接收到服务端的ACK,链接转态进入FIN_wait2状态。

4.当服务端向客户端发送完数据后,服务端向客户端发送FIN,表示服务端不再向客户端发送数据了,此时服务端的链接状态进入Last_Ack状态,等待客户端最后的ACK确认就可以关闭链接了。

5.客户端接收到服务端的FIN后,发送ACK后进入TIME_wait状态。客户端处于TIME_wait状态要等待2MSL(2倍最大报文段生存时间)后,才进入Closed状态。客户端需要等待2倍的最大报文段生存时间才Closed关闭是要确保的链接能够可靠关闭。防止在此次链接中,由于网络异常导致数据重复发送,端口被重复使用导致数据混淆(确保网络中消除重复数据)。而服务端接收到客户的ACK确认后,链接转态直接进入Closed转态。

33d362b1b7ce5ee9c46baee8ff08c1ee.png

TCP的四次挥手断链过程

TCP协议还有很多知识点,以后的文章会尽快的补上~~~

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值