
日常生活中,我们通过浏览器访问互联网上的万千资源,简单又便捷,朴实而无华。
那么能从互联网上如此简单高效的获取资源,就离不开HTTP的诞生了。
一、HTTP的诞生
1989年,为了能让在不同地方的人共享知识,而诞生了HTTP。借助多文档之间相互关联形成的超文本,连成可相互参阅的WWW(World Wide Web 万维网)。其中,HTTP客户端和HTTP服务器共同组成了WWW的基本组件。
当前广泛使用的是HTTP1.1版本。
那么说到HTTP就离不开TCP/IP协议族。
二、TCP/IP

TCP/IP是互联网相关的各类协议族的总称。
协议中,包含从物理硬件规格到IP地址选定、寻址方式、通信顺序,以及Web处理等等各种内容。
TCP/IP协议族中最重要的一点就是分层的概念:
1、应用层:处于顶层,应用层决定了向用户提供应用服务时通信的活动,如FTP(文件传输协议)、DNS(域名系统),HTTP协议位于该层
2、传输层:承接应用层的数据,提供处于网络连接中的两台计算机之间的数据传输。有TCP(传输控制协议)和UDP(用户数据报协议)
3、网络层:通过传输层的数据就到达网络层,网络层用来处理在网络上流动的数据包,并规定传输路线。IP协议位于该层。
4、数据链路层:用来处理连接网络的硬件部分,包括控制操作系统、硬件驱动、网卡、光纤等硬件。
将TCP/IP协议族层次化的好处就是,把各个层级之间的接口部分规划好之后,每个层级内部的设计就能够自由改动而不影响整体逻辑。
根据TCP/IP协议族进行网络通信时,会通过分层顺序与对方进行通信,发送端从应用层往下走,每经过一层打上该层标记。接收端从数据链路层往上走,每经过一层,去除该层标记。这种将信息包装起来的做法叫做封装。
2.1、 IP协议(Internet Protocol,网际协议)
IP协议位于网络层,主要作用是把各种数据包进行准确传送。而要确保传送成功则需要满足各种条件,其中最重要的为IP地址和MAC地址。
IP地址指明节点被分配的地址,MAC地址是指网卡所属的固定地址。IP地址可以和MAC地址进行配对,其中IP地址可更换,MAC地址基本不会变。
IP之间的通信依赖MAC地址。在网络上,通过ARS(Adress Resolution Protocol,地址解析协议)用IP地址反查出对应的MAC地址来进行设备通信中转。
2.2、TCP协议(Transmission Control Protocol,传输控制协议)
TCP协议位于传输层,提供可靠的字节流服务。
所谓的字节流服务(Byte Stream Service)是指,为了方便运输,将大块数据分割成以报文段(segment)为单位的数据包进行管理。而可靠的传输服务是指,能够把数据准确可靠的进行传递。
也就是说,TCP协议为了方便传送大数据而把数据进行分割,且能确保数据最终送达。
为了确保数据准确送达,TCP采用三次握手(three-way handshaking)的策略。
握手过程为:
1、发送端向接收端发送带有SYN标志的数据包:[SYN] Seq=a
2、接收端确认接收SYN:Seq=0,回传发送端带有SYN,ACK标志的数据包:[SYN,ACK]Seq=b,Ack=a+1
3、发送端接收后,回传接收端带有ACK标志的数据包:[ACK]Seq=a+1,Ack=b+1
2.3、DNS(Domain Name System,域名服务)
DNS协议和HTTP协议一样位于应用层,它提供域名到IP地址之间的解析服务。
三、最后
通过以上的说明,HTTP整个详细的访问流程通过图示的方式完整的呈现出来就是:
参考书籍:《图解HTTP》
