我们访问某个网站的时候,首先要在浏览器的地址栏中输入网址,然后回车,浏览器就会呈现出我们需要的 Web 界面。

这个界面是如何产生的呢? 我们在浏览器中输入的URL(网址),浏览器就会从服务器端获取对应的文件资源等信息,然后将资源显示在浏览器上面,这就是我们看到的界面。
像这种通过发送请求获取服务器资源的 Web 浏览器等,都可以称之为客户端(Client)。
Web 使用 HTTP 协议作为规范,来完成从客户端到服务端等一系列的运作流程,而协议指的就是规则的约定。
为了理解 HTTP,有必要简单介绍下 TCP/IP 协议族。
计算机与网络设备之间互相通信,双方就必须基于同样的方法。比如:如何发现通信目标、由谁发起通信、使用什么语言通信、怎么结束通信都需要事先确定,所有这些都需要一种规则,这种规则就是协议。协议中存在多种的内容:从电缆的规格到 IP地址的选定方法,寻找异地用户的方法,建立通信的顺序,以及 Web 页面显示需要处理的步骤等等。
我们把与这些与互联网相关联的协议,合在一起起统称为 TCP/IP。
TCP/IP 很重要的一个特点就是分层。按照层次分为以下四层:应用层、传输层、网络层、数据链路层。
分层的好处:如果互联网只由一个协议统筹,那么某一地方出问题,整体都会出现问题,无法使用;分层后,只需替换出现问题的或者需要修改的即可,而且分层后针对具体的设计也变得更为简单。
应用进程间通信交互的规则。
TCP/IP 协议族预存了各类通用的应用服务,比如:
ftp:文件传输协议
dns:域名系统协议
http:万维网应用协议
smtp:电子邮件协议
以上几种是常用的几种,还有很多其他的协议,感兴趣的可以找找其他专业的书籍看看。
提供处于网络连接中的两台计算机间的数据传输,其中包括TCP和udp两种性质不同的协议。
TCP:传输控制协议,传输的单位为报文段,提供面向连接的,可靠的数据传输服务。
udp:传输单位为用户数据报,它是尽最大努力的提供数据传输服务,不保证可靠性。
又名网络连接层。
用来处理在网络上流动的数据包(封装)。数据包是网络传输的最小数据单位。该层规定了通过怎样的路径到达对方计算机并把数据包传给对方。
又名数据链路层,网络接口层。
处理连接网络的硬件部分。比如控制操作系统、硬件的驱动、网络适配器、光钎等。
用户端发送一个请求,从应用层开始,一直到链路层,每一层都会被打上该层所属的首部信息;反之,接收端在层与层之间传输时,每经过一层会去掉该层的首部信息,这种做法叫做封装。
位于网络层,作用是把各种数据包传送给对方,而要准确的把数据传送给对方,就需要满足各类条件,其中有2个很重要的条件:IP地址和 MAC 地址。
IP 地址相信有点基础的人都知道,就是节点被分配到的地址,MAC 地址则是指网卡所属的固定地址,IP 和 MAC 地址可以进行配对。
IP 间的通信依赖于 MAC 地址,在信息传输中,有时候由于中转太多,因此会采用 ARP 协议,这是个用来解析地址的协议,通过 IP地址就可以反查出对应的 MAC 地址。
位于传输层,确保传输的可靠性。
数据传输中为了传输方便,会将大块数据分割成报文段,而 TCP 协议能确认数据最终是否传送给对方。
为了准确传输,传输中采用了三次握手策略(这种手段可以理解为多次确认,来确保数据传输的可靠性)。
负责域名解析,位于应用层,提供域名 IP 地址间的解析。
通过域名查找 IP 地址,或者逆向从 IP 地址反查域名。
URL:统一资源定位符:表示资源的地点,具体指向(门牌号)。
URI:统一资源标识符:用字符串标识某些互联网资源(该门牌号的地方具体有什么资源)。
URL 是 URI 的子集。