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

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

简单认识:

客户端获取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
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容