在浏览器中输入URL后 信息会被送往某处,Web浏览器从Web服务端获取文件资源等信息,从而显示出web页面。
像这种通过发送请求获取服务器资源的web浏览器,都可以被称为客户端。web使用一种名为HTTP的协议作为规范完成从客户端到服务器端一系列的运作流程。
1. 网络的基础TCP/IP
我们通常使用的网络是在TCP/IP协议的基础上运行的。HTTP协议是其的一个子集。TCP/IP协议包括IEEE802.3、FDDI、ICMP、IP、FTP、HTTP、UDP等。TCP/IP协议包含了许多内容,包含了从电缆规格到IP地址的选定方式,寻找异地用户的方法、双方建立通讯的顺序,以及web页面显示需要处理的步骤等等。
1.1 TCP/IP的分层管理
TCP/IP协议主要分为四层,各层的作用如下:
- 应用层:决定了向用户提供应用服务时通信活动,(如HTTP协议,FTP协议,DNS服务);
- 传输层:提供网络连接中两台计算机之间的数据传输(主要包含两种协议TCP(传输控制协议)和
UDP(用户数据报协议)协议) - 网络层:用来处理在网络上流动的数据包,数据包是网络中传输的最小数据单位。该层规定了通过怎样的
路径将数据传动到对方计算机,并将数据包传送给对方。(选择路径,传送数据包) - 链路层:处理网络连接的硬件部分。
1 | client servers |
- 首先客户端会在应用层发出想看某个web页面的HTTP请求。
- 传输层对应用层的数据进行分割,并在各个报文上打上标记序号及端口号转发给网络层。
- 在网络层对传输层的数据包添加最为通讯目的地的MAC地址后转发各链路层。
这种将数据信息包装起来的方法称为封装。
2. HTTP相关的IP/TCP/DNS协议
2.1 IP 协议
IP协议位于网络层,将各种数据包传送给对方。其中最重要的是需要IP地址和MAC地址。IP地址指明节点被分配的网络地址,MAC地址指明网卡所属的固定地址(IP地址可以和Mac地址绑定,但是MAC地址基本不会变化)。当服务端和客户端不再同一个LAN下面的时候会通过ARP协议先发送给路由器。
客户端想往10.0.9.110发送数据->使用ARP未在当前LAN下面找到,先发送给MAC地址为XXX的路由器-> MAC地址为XXX的路由器中转给MAC地址为XXXXX的路由器->路由器再次中转->指定IP地址的服务接收端。
2.2 TCP 协议
TCP协议属于传输层,提供可靠字节流服务(将大块的数据分割成报文段为单位的数据包进行管理),同时将数据包准确传递给对方。TCP协议采用三次握手的策略。发送端首先发送一个带有SYN(TCP协议标志)的数据包给对方,接收端收到后回传一个带有SYN/ACK标志的数据包,最后发送端回传一个带有ACK标志的数据包,代表握手结束。
若上述过程在某个阶段中断,TCP协议会按相同的顺序发送相同的数据包。
参考资料
2.3 DNS 服务
DNS协议提供域名查找IP地址,或者逆向从IP地址查找域名的服务。
2.4 小结
通过上面的知识,这里总结当在浏览器中请求一个URL会发生的事情:
1 | 向DNS请求www.baidu.com的地址 |
3 URL VS URI
URI(Uniform Resource Identifier)浏览网页时需要输入的网址。
URL(Uniform Resource Locator)某个协议方案中表示资源的定位标识符。协议方案是指访问资源所要使用的协议类型名称。URI格式如下:
URL表示资源的地址,URI标识某一互联网资源。URL是URI的子集。
1 | http://user:pass@www.zhaoyun.cn:80/dir/index.html?uid=1#ch1 |