定义:
Web使用http(超文本传输协议)协议作为规范,完成客户端向服务器请求,以及服务器响应等一系列运作流程;
网络基础TCP/IP
通常使用的网络是在TCP/IP协议族上进行的,HTTP协议属于它内部的子集。
概念
计算机与网络设备之间的通信都需要一种规则,而我们把这种规则称为协议。把与互联网相关联的协议集合起来总称为TCP/IP;
分层管理
TCP/TP协议族按层次可分为应用层、传输层、网络层和链路层。
- 应用层:决定了向用户提供应用服务时通信的活动。
TCP/IP协议族内预存了各类通用的应用服务,比如FTP和DNS;HTTP协议也处于该层; - 传输层:对上层应用层,提供给处于网络连接中的两台计算机的数据传输。
在传输层有两个性质不同的协议:TCP和UDP; - 网络层:处理网络上流动的数据包
数据包是网络传输的最小数据单位。网络层规定了计算机进行传输时的传输路线,并把数据包传输给对方; - 链路层:处理连接网络的硬件部分。包括控制操作系统、硬件的设备驱动等物理可见部分。硬件上的范畴均在链路层的作用范围之内。
通信传输流
利用TCP/IP通信步骤:
1. 作为发送端的客户端在应用层(http协议)发出一个http请求;
2. 在传输层(tcp协议)把从应用层收到的数据(http请求报文)进行分割,并在各个报文上打上标记序号及端口号转发给网络层;
3. 在网络层(ip协议),增加作为通信目的的MAC地址后转发给链路层。至此,发送网络的通信请求已准备齐全;
4. 服务器在链路层接收到数据,然后向上发送响应。当传输到达应用层时,服务器才算真正接收到来自客户端的http请求。
其他说明:发送端在层与层之间通信时,每经过一层会打上一个该层所属的首部信息;反之,接受端在通信时,每经过一层会把对应的首部去掉。这种把数据信息包装的方法叫做封装。
与HTTP关系密切的协议:IP,TCP和DNS
- 负责传输的IP协议:
- ip协议的作用是将数据包传送给对方,而要确保正确的传输,需要两个重要条件,ip地址和mac地址;
- ip间的通讯依赖与mac地址。在网络上,由于通讯双方基本上不在统一局域网内,因此需要经过多台计算机中转才能连接到对方。在中转过程中会利用下一站中转设备的mac地址来搜索下一个中转目标;
- ARP协议:解析地址,根据通讯方的ip就可以反查出对应的mac地址;
- 路由选择:计算机之间进行中转的机制。
- 确保可靠性的TCP协议:
tcp位于传输层,提供准确可靠(三次握手)的字节流服务。 - 字节流服务:为了方便传输,将大块数据分割成以报文段为单位的数据包进行管理;
- 三次握手:确保数据能准确的到达目标。主要目的防止server端一直等待,浪费资源
若握手过程突然中断,再从头开始再进行握手 - 四次挥手:
- 第一次分手:主机1(可以使客户端,也可以是服务器端),设置Sequence Number和Acknowledgment Number,向主机2发送一个FIN报文段;此时,主机1进入FIN_WAIT_1状态;这表示主机1没有数据要发送给主机2了;
- 第二次分手:主机2收到了主机1发送的FIN报文段,向主机1回一个ACK报文段,Acknowledgment Number为Sequence Number加1;主机1进入FIN_WAIT_2状态;主机2告诉主机1,我“同意”你的关闭请求;
- 第三次分手:主机2向主机1发送FIN报文段,请求关闭连接,同时主机2进入LAST_ACK状态;
- 第四次分手:主机1收到主机2发送的FIN报文段,向主机2发送ACK报文段,然后主机1进入TIME_WAIT状态;主机2收到主机1的ACK报文段以后,就关闭连接;此时,主机1等待2MSL后依然没有收到回复,则证明Server端已正常关闭,那好,主机1也可以关闭连接了。
- 负责域名解析的DNS服务:
DNS服务与HTTP一样位于应用层,DNS协议提供通过域名查找IP地址,或者逆向地从IP地址反查域名的服务。
总结:
一个HTTP请求过程: