点击一个url后的全过程
这是我参与「第四届青训营 」笔记创作活动的的第5天
一、什么是url
| 英文名称 | uniform resource locator |
|---|---|
| 中文名称 | 统一资源定位系统 |
| 定义 | 因特网的万维网服务程序上用于指定信息位置的表示方法 |
-
简单说url就是网址
-
一些例子
二、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直接定位到某一名词解释。
三、 从计算机网络分析
客户端
-
应用层获取url,通过负责域名解析的DNS服务获取网址的IP地址,根据HTTP协议生成HTTP请求报文
-
传输层根据TCP协议连接从客户端到服务端(通过三次握手)
-
客户端给服务端发送一个带SYN标志的数据包给客户端,
-
然后客户端接收到信息再给客户端回传一个带有SYN / ACK标志的数据包以示传达确认信息,
-
客户求最后端的再传送一个带ACK标志的数据包,代表“握手”结束,连接成功.
-
TCP协议在把请求报文按序号分割成多个报文段
-
讲一下三次握手
- 第一次握手:客户端给服务器发送一个SYN段
- 第二次握手:服务器返回客户端 SYN +ACK 段,表示确认收到客户端的 SYN段
- 第三次握手:客户端给服务器响应一个ACK段,表示确认收到服务器的 SYN段
-
-
网络层根据IP协议传输数据,ARP协议获取MAC地址,OSPF协议选择最优路径,搜索服务器地址,一边中转一边传输数据
-
数据到达后通过数据链路层,物理层负责0,1比特流与物理设备电压高低,光的闪灭之间的互换。数据链路层负责将0,1序列划分为数据帧从一个节点传输到临近的另一个节点,这些节点是通过MAC来唯一标识的(MAC是物理地址,一个中主机会有一个MAC地址)。
服务端
通过数据链路层 - >通过网络层 - >再通过传输层(根据TCP协议接收请求报文并重组报文段) - >再通过应用层(通过HTTP协议对请求的内容进行处理) - >再通过应用层 - >传输层 - >网络层 - >数据链路层 - >到达客户端
客户端
通过数据链路层 - >网络层 - >传输层(根据TCP协议接收响应报文并重组) - >应用层(HTTP协议对响应进行处理) - >浏览器渲染页面 - >断开连接协议(四次挥手)
-
四次挥手
- 第一次挥手:Client发送一个FIN,用来关闭Client到Server的数据传送,Client进入FIN_WAIT_1状态。
- 第二次挥手:Server收到FIN后,发送一个ACK给Client,确认序号为收到序号+1(与SYN相同,一个FIN占用一个序号),Server进入CLOSE_WAIT状态。
- 第三次挥手:Server发送一个FIN,用来关闭Server到Client的数据传送,Server进入LAST_ACK状态。
- 第四次挥手:Client收到FIN后,Client进入TIME_WAIT状态,接着发送一个ACK给Server,确认序号为收到序号+1,Server进入CLOSED状态,完成四次挥手。