通常使用的网络是在TCP/IP协议族的基础上运作的,和HTTP属于它内部的一个子集。
TCP/IP协议族:
TCP/IP协议族:
TCP/IP 按照层次从上至下分为四层:应用层,传输层,网络层,数据链路层。
1、应用层
作用: 应用层决定了向用户提供应用服务时通信的活动。eg.DNS、FTP、HTTP。
2、传输层
作用:传输层对上层应用层,提供处于网络连接中的两台计算机之间的数据传输。eg.UDP、TCP。
3、 网络层
作用:网络层用来处理在网络上流动的数据包。数据包是网络传输的最小数据单位。该层规定了通过怎样的路径来到达对方的计算机,并把数据包传给对方。
4、链路层
作用:用来处理连接网络的硬件部分。包括控制操作系统、硬件的设备驱动,NIC及光纤等物理可见部分。
—————————————————————————————————————————
HTTP的操作过程
1、浏览器分析指向页面的URL。
2、浏览器向DNS系统请求解析域名所对应的服务器IP地址。
3、DNS系统解析出服务器的IP,并返回给主机。
4、浏览器与该服务器的进程建立TCP链接(三次握手,端口默认为80)
标志位:
SYN:表示连接请求
ACK:表示确认
FIN: 表示关闭连接
seq: 表示报文序号
ack: 表示确认序号
- a、第一次握手:Click将标志位SYN置为1,随机产生一个值seq=J,并将该数据包发送给Server,Client进入SYN_SENT状态,等待Server确认。
- b、第二次握手:Server收到数据包后由标志位SYN=1知道Client请求建立连接,Server将标志位SYN和ACK都置为1,ack(number) = J + 1,随机产生一个值seq = K,并将该数据包发送给Client以确认连接请求,Server进去SYN_RCVD 状态。
- c、第三次握手:Client收到确认后,检查ack是否为 J + 1,ACK是否为1,如果正确则将标志位ACK置为1,ack = K + 1,并将该数据包发送给Server,Server检查ack是否为K+1,ACK是否为1,如果正确则连接建立成功,Client和Server进入ESTABLISHED状态,完成三次握手,随后Client与Server之间可以开始传输数据了。
5、浏览器发出HTTP请求,如GET/details/index.html
6、服务器收到请求并作出相应处理,把文件index.html发送给浏览器
7、释放TCP链接(四次挥手)
-
a、第一次挥手:Client发送一个FIN,用来关闭Client到Server的数据传送。
-
b、第二次挥手:Server收到FIN后,发送一个ACK给Client,确认序号为收到序号+1.
-
c、第三次挥手:Server发送一个FIN,用来关闭 Server到Client的数据传送。
-
d、第四次挥手:Client收到FIN后,接着发送一个ACK给Server,确认序号为收到序号+1。