这是一个考察开发者对网络的认识,网络请求真的只是简单的输入连接就访问到服务器了吗 ?
简单认识:
客户端获取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)
第四次挥手
图形讲解: