一、何为HTTP?
超文本传输协议(HTTP,HyperText Transfer Protocol)是互联网上应用最为广泛的一种网络协议。所有的WWW文件都必须遵守这个标准。设计HTTP最初的目的是为了提供一种发布和接收HTML页面的方法。1960年美国人Ted Nelson构思了一种通过计算机处理文本信息的方法,并称之为超文本(hypertext),这成为了HTTP超文本传输协议标准架构的发展根基。Ted Nelson组织协调万维网协会(World Wide Web Consortium)和互联网工程工作小组(Internet Engineering Task Force )共同合作研究,最终发布了一系列的RFC,其中著名的RFC 2616定义了HTTP 1.1。其实严谨的应该是叫“超文本转移协议”。它诞生在1989年3月。
二、网络基础Tcp/IP
计算机与网络设备之间互相通信,双方就必须基于相同的方法。如何探测到通信目标,有那一边发起通信,使用那种语言进行通信、怎么结束通信都需要事先确定。不同的硬件、操作系统之间的通信,所以的这一切都需要一种规则。我们把这种规则称为协议。把互联网相关联的协议集合起来总称为TCP/IP
TCP/IP 分为4层:
应用层
也就是我们平常可以看到的服务,他直接与我们交流。
该层包括的协议有:FTP(文件传输协议)、DNS(域名系统)、HTTP
传输层
传输层连接应用层,提供处于网络连接的两台计算机之间的数据传输。传输层有两个协议分别是TCP(传输控制协议)、UDP(用户数据协议)
网络层
他是处理网络上流动的数据包。数据包是网络传输的最小数据单位。它规定了通过怎么样的路径到达对方计算机,并把数据包传送给对方。IP协议属于网络层
链路层
它是连接网络硬件设备包括:操作系统、设备驱动、网卡以及光纤。
从这个图中,可以分析一下Http 从发送请求工作原理:
1、浏览器输入网址发起一个http 请求。应用层
2、接着来到传输层将从应用层接受的数据(http请求报文)进行分割,并在各个报文打上标记序号以及端口号转发给网络层。
3、在网络层(IP协议)增加作为通信的MAC地址后转发给链路层。
4、服务端在链路层接受到数据按逆序发送(网络层——传输层----应用层)
IP协议中包括IP地址它是指明节点被分配的地址。MAC是网卡所属的固定地址。同时我们实际中是处在不同的局域网通信所以需要使用ARP 协议(解析地址协议)根据IP地址查到MAC。
TCP协议的三次握手:
当Tcp协议把数据包送出去后,TCP不会对送出的数据置之不理,他会向对方确认是否成功送达。握手过程使用SYN和ACK
发送端首先发送一个代SYN标志的数据包给对方,接收端收到后回传一个带SYN/ACK标志的数据包以示传达确认信息。最后发送端在回传一个ACK标志的数据包。代表握手结束。
SYN:代表请求创建连接。ACK:代表确认接受。seq:序列号。ack:下一个数据包的编号。ack= seq+1
为什么需要三次握手:
正常两次就够。但是有一种情况连接超时的时候,客户端就会重新发送请求。但是第一个虽然超时,但是最后还是发送到了,这时候服务端可能接受到两个请求,就会创建两个连接。导致浪费资源。