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

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

作者: 水中的蓝天 | 来源:发表于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

相关文章

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

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

  • 爬虫入门基础

    爬虫的入门基础 什么是爬虫? 网络爬虫(又被成为网页蜘蛛,网络机器人),就是模拟客户端发起网络请求,接收请求的响应...

  • 网络框架的选择

    网络请求的原理 网络请求在本质上可以理解为客户端发起请求(Request),然后服务器返回数据(Response)...

  • Android开源框架-Retrofit源码解析(一)

    Retrofit作为主流的网络请求框架,内部封装OkHttp发起请求,也是声明式Http客户端,使用接口 + 注解...

  • 学习websocket

    一、什么是websocket websocket是一种网络通信协议。 由于http协议只能由客户端来发起请求,这个...

  • 网络编程(七)一次完整的网络请求分析

    当我们在页面上发起一个 AJAX 请求的时候,在网络协议层面都经历了哪些内容? 如上述代码所示,我们对 baidu...

  • SSRF

    0x00原理 一般的请求:客户端发起请求,服务器响应。 另外一种请求:客户端发起请求(向服务端提供一个URL),服...

  • 2w爬虫课程总结笔记

    爬虫 模拟客户端发起网络请求,获取网络数据只要客户端能够获取的数据,爬虫都能获取 获取流程: 1.确定目标网站,分...

  • 2018-12-23 爬虫基础

    一、爬虫介绍 1.什么是爬虫? 通俗的讲: 就是模拟客户端发起网络请求,接收请求的响应,按照一定的规则,自动的抓...

  • Android Socket的使用到简单封装(一)

    在我们使用okHttp等网络框架去请求网络时,都是我们Android客户端主动发起一次请求,然后服务器返回相应的数...

网友评论

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

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