数据从客户端流向服务端会经过几个环节,这几个环节中涉及到一些比较基础也很重要的协议或者概念。
DNS
负责域名解析,也就是会将平常我们进行网络访问的地址解析成计算机认识的 IP 地址,这就代表着服务器所在的地址。
TCP
保证数据传输的准确性。因为应用数据最终会被拆分成一个个数据包,传输过程中数据包的顺序会被打乱,但到了中断又能确保有序。
客户端与服务器建立 TCP 连接会有个经典的三次握手过程,1. 客户端发送 SYN 请求,2. 服务端响应 SYN/ACK 消息,3.客户端发送 ACK 确认消息。断开连接也有个经典的四次挥手过程,1.客户端发送 FIN 请求,2.服务端响应 ACK 消息,3.服务端发送 FIN 请求,4.客户端响应 ACK 消息。
IP
负责将数据包传输到指定终端,终端就是指在网络中能用 IP 地址 + MAC 地址唯一标识的设备。通常 MAC 地址随着设备是固定的,而 IP 地址会有变动的可能。
URI/URL
这两个概念很容易混淆,有时候两者用起来效果又是相同的。这里就记住 URI 包含 URL,URL 是用了 HTTP/HTTPS 协议表示的资源地位标识符,而其他协议表示的统称 URI。
Cookie
由于 HTTP 协议不能保存状态,这就造成了同一个客户端访问服务器,服务器每次都认为是新的,Cookie 技术的引用就是为了解决这个问题。这样一来同一个客户端访问服务器,在第二次及以后服务器就能知道客户端是谁,并且做过什么。
持久连接
最初的 HTTP 通信是一次性的,就是说连接一次,数据传输完就断开了。这样一来如果请求通信一旦多起来就会出现频繁请求连接,断开的操作,导致资源开销大,性能低。
为了解决这一问题,提出了「持久连接」也称「keep-alive」这样一来如果客户端与服务器一直有数据通信,在通信连接的消耗上就小很多,自然效率就会大大提高,并且这也使得 HTTP 请求以管线化的方式进行,使得客户端可以不用等待上一次请求的返回结果直接发起下一个请求。
网友评论