美文网首页
客户端发起一个网络请求都经历了什么

客户端发起一个网络请求都经历了什么

作者: 水中的蓝天 | 来源:发表于2021-01-17 22:50 被阅读0次

    这是一个考察开发者对网络的认识,网络请求真的只是简单的输入连接就访问到服务器了吗 ?

    简单认识:

    客户端获取URL - > DNS解析 - > TCP连接 - >发送HTTP请求 - >服务器处理请求 - >返回报文 - >浏览器解析渲染页面 - > TCP断开连接

    详细经过:

    客户端发出请求:

    应用层开始:
    获取URL,通过负责域名解析的DNS服务获取网址的IP地址,根据HTT协议生成HTTP请求报文
    应用层结束

    传输层开始:
    根据TCP协议连接从客户端到服务端(通过三次握手)客户端给服务端发送一个带SYN(同步)标志的数据包给客户端,然后客户端接收到信息再给客户端回传一个带有SYN / ACK(确认)标志的数据包以示传达确认信息,客户求最后端的再传送一个带ACK标志的数据包,代表“握手”结束,连接成功.TCP协议在把请求报文按序号分割成多个报文段
    传输层结束

    网络层开始:
    根据IP协议(传输数据),ARP协议(获取MAC地址),OSPF协议(选择最优路径),搜索服务器地址,一边中转一边传输数据
    网络层结束

    数据链路层开始:
    到达后通过数据链路层,物理层负责0,1比特流与物理设备电压高低,光的闪灭之间的互换。数据链路层负责将0,1序列划分为数据帧从一个节点传输到临近的另一个节点,这些节点是通过MAC来唯一标识的(MAC,物理地址,一个中主机会有一个MAC地址)。
    数据链路层结束

    注意:如果是浏览器的访问会有DNS查找缓存的过程:浏览器缓存路由器缓存DNS缓存

    服务端接收请求并响应

    通过数据链路层 - >通过网络层 - >再通过传输层(根据TCP协议接收请求报文并重组报文段) - >再通过应用层(通过HTTP协议对请求的内容进行处理) - >再通过应用层 - >传输层 - >网络层 - >数据链路层 - >到达客户端

    客户端接收返回结果断开连接

    通过数据链路层 - >网络层 - >传输层(根据TCP协议接收响应报文并重组) - >应用层(HTTP协议对响应进行处理) - >浏览器渲染页面 - >断开连接协议四次挥手)

    四次挥手

    • 主动方发送标志位:(ACK + FIN)+(发送序号= 200 +确认序号= 500)第一次挥手
    • 被动方接收后发送标志位:ACK +(发送序号=主动方确认序号500 +确认序号=主动方- 发送序号+1201)第二次挥手
    • 标志位:(ACK + FIN)+(发送序号=主动方确认序号+1 501)第三次挥手
    • 主动方接收后发送标志位:(ACK)+(发送序号=被动方的确认序号201 +确认序号=被动方的发生序号+1502)第四次挥手

    图形讲解:

    请求和解析.png

    相关文章

      网友评论

          本文标题:客户端发起一个网络请求都经历了什么

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