1.HTTP—Hyper Text Transfer Protocol,即超文本传输协议。是基于tcp协议,属于应用层协议
2.HTTP由请求报文和相应报文组成
请求报文:
1)请求行:请求方法,URL,协议版本。
2)请求头部
Host:请求的主机名
User-Agent:浏览器的具体类型
Accept:浏览器支持哪些数据类型
Accept-Language:浏览器的语言环境
Content-Encoding:WEB服务器表明自己使用了什么压缩方法(gzip,deflate)压缩响应中的对象。
Cookie:最常用的请求头,浏览器每次都会将cookie发送到服务器上,允许服务器在客户端存储少量数据。
Connection:连接状态
Upgrade-Insecure-Requests:安全升级,表示之后的请求都会通过https进行(我的理解)
3)请求数据:Content-Type: text/html; charset='gb2312'
响应报文:
1)响应行:协议版本,状态码,状态码描述
2)响应头部
3)响应正文
3.HTTP是无状态的协议,可以使用cookie和session保存数据
session本质上也是cookie,seesion存储数据无大小限制,cookies存储有大小和数量限制,不同的浏览器略有差别,一般在2k-3k左右,数量为50-150左右
4.从浏览器输入一个URL,到展示数据都经历了什么
1).查询本地host文件,不存在,则请求dns服务器,dns解析URL得到一个具体IP地址
2)与web服务器建立TCP连接(3次握手机制),HTTP的默认端口是80,HTTPS的默认端口是443
3)服务器对用户的请求做出回应
4)浏览器解析渲染HTML页面
5)窗口关闭,浏览器终端和服务器的连接
5.HTTP1.0和HTTP1.1的区别:HTTP1.0是短连接,一次请求后,连接断开;HTTP1.1支持长连接,同一次连接中可以处理多个请求,在请求头的消息中connection:keepAlive,会保持连接,如果是close则断开连接
6.TCP协议是一种面向连接的、可靠的、基于字节流的运输层通信协议。
7.TCP的三次握手和四次挥手
先搞懂几个概念:ACK确认序号,seq序号,syn请求序号,fin关闭序号,window滑动窗口
等待第三次握手之前的连接称作半连接,syn攻击是一种典型的DDOS攻击
为什么需要四次挥手?
因为收到fin+ack报文之后,只能证明对方不再发送数据,但可以接受数据,自己的数据也有可能还没有接受完,所以当数据接受完的时候,再次发送fin+ack报文,表示可以立即关闭数据。
为什么需要三次握手?