点击一个url后的全过程

145 阅读4分钟

点击一个url后的全过程

这是我参与「第四届青训营 」笔记创作活动的的第5天

一、什么是url

英文名称uniform resource locator
中文名称统一资源定位系统
定义因特网的万维网服务程序上用于指定信息位置的表示方法

二、url的组成

组成部分

  • 资源类型
  • 存放资源的主机域名
  • 资源文件名。

一般语法格式

protocol :// hostname[:port] / path / [;parameters][?query]#fragment

 https://
 so.csdn.net
 /so/search
 ?q=balabala&t=&u=&urw=
 https://
 ​
 blog.csdn.net
 ​
 /judgejames/article/details/103728010
 ​
 ?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522165071843716781435495674%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D
 ​
 &request_id=165071843716781435495674
 ​
 &biz_id=0
 ​
 &utm_medium=distribute.pc_search_result.none-task-blog-
 ​
 2~all~baidu_landing_v2~default-4-103728010.142^v9^control,157^v4^control
 ​
 &utm_term=%E4%B8%80%E4%B8%AA%E7%BD%91%E5%9D%80%E7%9A%84%E7%BB%84%E6%88%90
 ​
 &spm=1018.2226.3001.4187

protocol (协议)

  • 常用的有三种

    • http 通过 HTTP 访问该资源。 格式 HTTP://
    • https 通过安全的 HTTPS 访问该资源。 格式 HTTPS://
    • ftp 通过 FTP访问资源。格式 FTP://

hostname(主机名)

指存放资源的服务器的域名系统(DNS) 主机名或 IP 地址。在主机名前也可以包含连接到服务器所需的用户名和密码(格式:username:password@hostname)。

port(端口号)

HTTP缺省工作在TCP协议80端口,用户访问网站http:// 打头的都是标准HTTP服务。HTTPS缺省工作在TCP协议443端口。

path(路径)

由零或多个“/”符号隔开的字符串,一般用来表示主机上的一个目录或文件地址。

parameters(参数)

这是用于指定特殊参数的可选项。

query (查询)

可选,用于给动态网页(如使用CGI、ISAPI、PHP/JSP/ASP/ASP。NET等技术制作的网页)传递参数,可有多个参数,用“&”符号隔开,每个参数的名和值用“=”符号隔开。

fragment(信息片断)

信息片断,字符串,用于指定网络资源中的片断。例如一个网页中有多个名词解释,可使用fragment直接定位到某一名词解释。

三、 从计算机网络分析

客户端

在这里插入图片描述

  1. 应用层获取url,通过负责域名解析的DNS服务获取网址的IP地址,根据HTTP协议生成HTTP请求报文

  2. 传输层根据TCP协议连接从客户端到服务端(通过三次握手)

    1. 客户端给服务端发送一个带SYN标志的数据包给客户端,

    2. 然后客户端接收到信息再给客户端回传一个带有SYN / ACK标志的数据包以示传达确认信息,

    3. 客户求最后端的再传送一个带ACK标志的数据包,代表“握手”结束,连接成功.

    4. TCP协议在把请求报文按序号分割成多个报文段

    5. 讲一下三次握手

      1. 这里写图片描述
      2. 第一次握手:客户端给服务器发送一个SYN段
      3. 第二次握手:服务器返回客户端 SYN +ACK 段,表示确认收到客户端的 SYN段
      4. 第三次握手:客户端给服务器响应一个ACK段,表示确认收到服务器的 SYN段
  3. 网络层根据IP协议传输数据,ARP协议获取MAC地址,OSPF协议选择最优路径,搜索服务器地址,一边中转一边传输数据

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

服务端

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

客户端

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

  • 四次挥手

    img

  1. 第一次挥手:Client发送一个FIN,用来关闭Client到Server的数据传送,Client进入FIN_WAIT_1状态。
  2. 第二次挥手:Server收到FIN后,发送一个ACK给Client,确认序号为收到序号+1(与SYN相同,一个FIN占用一个序号),Server进入CLOSE_WAIT状态。
  3. 第三次挥手:Server发送一个FIN,用来关闭Server到Client的数据传送,Server进入LAST_ACK状态。
  4. 第四次挥手:Client收到FIN后,Client进入TIME_WAIT状态,接着发送一个ACK给Server,确认序号为收到序号+1,Server进入CLOSED状态,完成四次挥手。