http协议简述以及三次挥手四次握手

面试过程中经常容易被问到的http协议,今天进行了总结

HTTP协议简介

HTTP协议就是超文本传输协议(HyperText Transfer Protocol),通俗理解是浏览器和web服务器传输数据格式的协议,HTTP协议是一个应用层协议。

HTTP协议是基于TCP协议的,发送数据之前需要建立好连接

HTTP是万维网的数据通信的基础。设计HTTP最初的目的是为了提供一种发布和接收HTML页面<网页>的方法。

HTTP协议的制作者是蒂姆·伯纳斯-李,他供职于CERN(欧洲核子研究组织)

  • 1991年发布的0.9版,该版本极其简单,只有一个GET请求方法
  • 1996年5月,HTTP/1.0版本发布
  • 1997年1月,HTTP/1.1版本发布,目前使用就是HTTP/1.1版本

HTTP的操作过程

1、浏览器分析指向页面的URL
2、浏览器向DNS系统请求解析域名所对应的服务器IP地址
3、DNS系统解析出服务器的IP,并返回给主机
4、浏览器与该服务器的进程建立TCP链接(三次握手,端口默认为80)

三次握手

标志位:SYN: 表示连接请求     ACK: 表示确认    FIN: 表示关闭连接     seq:表示报文序号      ack: 表示确认序号

  • a、第一次握手:Client将标志位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。

8、浏览器解析index.html文件,将web页显示出来。

HTTP协议的特点:

在HTTP/1.0中, 默认使用的是短连接.也就是说, 浏览器和服务器每进行一次HTTP操作, 就建立一次连接, 但任务结束就中断连接.如果客户端浏览器访问的某个HTML或其他类型的 Web 页中包含有其他的Web资源,如js文件、图像文件、CSS文件等;当浏览器每遇到这样一个Web资源,就会建立一个HTTP会话。

但从 HTTP/1.1起,默认使用长连接,用以保持连接特性。使用长连接的HTTP协议,会在响应头有加入这行代码:

Connection:keep-alive

TCP长短连接的优缺点:

  • 长连接可以省去较多的TCP建立和关闭的操作,节约时间。但是如果用户量太大容易造成服务器负载过高最终导致服务不可用

  • 短连接对于服务器来说实现起来较为简单,存在的连接都是有用的连接,不需要额外的控制手段。但是如果用户访问量很大, 往往可能在很短时间内需要创建大量的连接,造成服务器响应速度过慢

HTTP请求报文中常见的方法:

HTTP请求报文中常见的方法
请求方法 意义
GET 请求获取由URL所标志的信息
POST 给服务器添加信息
HEAD 请求读取由URL所标志的信息的首部
CONNECT 用于代理服务器

完结!(*^▽^*)

猜你喜欢

转载自blog.csdn.net/zzd864582451/article/details/85244211