通常使用的网络是在TCP/IP协议族的基础上运作的,而HTTP属于它内部的一个子集。为了解HTTP,先了解一下TCP/IP协议族。
1. TCP/IP协议族
计算机与网络设备要相互通信,双方就必须基于相同的方法。 比如,如何探测到通信目标、由哪一边先发起通信、使用哪种语言进行通信、怎样结束通信等规则都需要事先确定。不同的硬件、操作系统之间的通信, 所有的这一切都需要一种规则。而我们就把这种规则称为协议(protocol)。
协议中存在各式各样的内容。从电缆的规格到 IP 地址的选定方法、寻找异地用户的方法、双方建立通信的顺序,以及 Web 页面显示需要处理的步骤等等。
像这样把与互联网相关联的协议集合起来总称为 TCP/IP。
2 TCP/IP 的分层
TCP/IP 协议族按层次分别分为以下 4 层:应用层、传输层、网络层和数据链路层。
-
应用层
应用层决定了向用户提供应用服务时通信的活动。TCP/IP 协议族内预存了各类通用的应用服务。比如,FTP和 DNS 服务就是其中两类。HTTP 协议也处于该层 。 -
传输层
传输层对上层应用层,提供处于网络连接中的两台计算机之间的数据传输。在传输层有两个性质不同的协议TCP(Transmission Control Protocol,传输控制协议) 和 UDP(User Data Protocol,用户数据报协议) 。 -
网络层
网络层用来处理在网络上流动的数据包。数据包是网络传输的最小数据单位。该层规定了通过怎样的路径(所谓的传输路线) 到达对方计算机,并把数据包传送给对方。与对方计算机之间通过多台计算机或网络设备进行传输时,网络层所起的作用就是在众多的选项内选择一条传输路线。IP协议在这一层。 -
链路层
用来处理连接网络的硬件部分。 包括控制操作系统、 硬件的设备驱动、NIC(Network Interface Card,网络适配器,即网卡),及光纤等物理可见部分(还包括连接器等一切传输媒介) 。硬件上的范畴均在链路层的作用范围之内。
下图用 HTTP 举例
3.IP协议
IP 协议的作用是把各种数据包传送给对方。 而要保证确实传送到对方那里,则需要满足各类条件。其中两个重要的条件是 IP 地址和 MAC地址(Media Access Control Address) 。IP 地址指明了节点被分配到的地址,MAC 地址是指网卡所属的固定地址。IP 地址可以和 MAC 地址进行配对。IP 地址可变换,但 MAC地址基本上不会更改。这篇文章讲得很清楚:IP地址,子网掩码,默认网关,DNS服务器详解
3.TCP协议
TCP协议则是建立在IP协议之上的。TCP协议负责在两台计算机之间建立可靠连接,保证数据包按顺序到达。TCP协议会通过握手建立连接,然后,对每个IP包编号,确保对方按顺序收到,如果包丢掉了,就自动重发。
为了准确无误地将数据送达目标处,TCP 协议采用了三次握手,握手过程中使用了 TCP 的标志(flag)——SYN(synchronize) 和ACK(acknowledgement)。
4.HTTP协议
HTTP 协议和 TCP/IP 协议族内的其他众多的协议相同, 用于客户端和服务器之间的通信。请求访问文本或图像等资源的一端称为客户端, 而提供资源响应的一端称为服务器端。可以看这里HTTP协议简介
补充一下:
- HTTP keep-alive
这个在浏览器network
中Request Headers
中可以看到,为connection :keep-alive
HTTP 协议的初始版本中,每进行一次 HTTP 通信就要断开一次TCP连接。每次的请求都会造成无谓的 TCP 连接建立和断开,增加通信量的开销。
在 HTTP/1.1 中,所有的连接默认都是持久连接。只要任意一端
没有明确提出断开连接,则保持 TCP 连接状态。
持久连接的好处在于减少了 TCP 连接的重复建立和断开所造成的额外开销, 减轻了服务器端的负载。另外,减少开销的那部分时间,使HTTP 请求和响应能够更早地结束,这样 Web 页面的显示速度也就相应提高了。 - cookie与session
看这里Cookie和Session的作用和工作原理