简单梳理Http

什么是Http?

Http是一种超文本传输协议,是一个在计算机世界里专门在两点间传输文字,图片,音视频等超文本数据的约定和规范

超文本指的是网络传输的内容不仅限于简单的文本,还包括图片,音视频,超链接的跳转等等。

传输是指我们的超文本数据被解析成二进制数据包后由传输载体(电缆,光缆等)由一个计算机终端传输到另一个计算机终端的过程

协议是指网络中进行数据传输的规范

OSI七层模型:

自上而下分别是:

应用层:包含了各种应用程序协议,如HTTP,FTP,SMTP等。他是唯一面向用户的,直接向用户提供服务,是计算机用户以及各种应用程序和网络之间的接口

表示层:处理信息的语法语义,进行加密解密,压缩解压缩等,把数据按照一定的格式传输给会话层

会话层:不同计算机上的用户间建立和管理会话

传输层:提供建立,维护和拆除传输连接的功能,起到承上启下的作用,保证报文的正确传输

网络层:进一步管理网络中的数据通信,控制数据链路层与传输层之间的信息转发,建立,维持和终止网络的连接,将数据点对点从源端经过若干中间节点传送到目的端,从而向传输层提供最基本的数据传输服务

数据链路层:负责建立和管理节点间的链路。由于在网络中存在各种干扰,所以光靠物理链路是不可靠的。所以数据链路层在物理层提供的比特流的基础上,通过差错控制,流量控制方法,使得有差错的物理线路变为无差错的数据链路

物理层:利用传输介质为数据链路层提供物理连接,实现比特流的透明传输

一个形象的举例:来自博主Java小白白又白

TCP/IP模型和OSI模型的对比

CDN:Content Delivery NetWork,即内容分发网络,它应用了http协议里的缓存和代理技术,代替源站响应客户端的请求。CDN依靠部署在各地的边缘服务器,通过负载均衡,内容分发调度等功能,使用户就近获取所需内容,减少了网络阻塞,提高用户体验。

TCP/IP:协议簇,顾名思义,TCP/IP协议簇中不仅有TCP和IP协议,它是一系列的网络通信协议的总称。而其中最核心的协议就是TCP/IP,他们和其他的例如UDP,ICMP等共同构成了一个协议栈

HTTPS:因为HTTP是明文传输,所以很容易被攻击,所以处于安全考虑,HTTPS出面解决了这个问题。他在HTTP的基础上通过传输加密和身份认证保证了传输过程的安全性。HTTPS在HTTP的基础上增加了SSL加密协议层。

TCP和UDP的区别?

TCP和UDP都是传输层的协议,他们在数据传输特点上有很大区别。

TCP:数据的传输需要经过三次握手四次挥手的过程,从而保证数据一定传输到位。TCP协议是一种面向连接的,可靠的,基于字节流的传输层通讯协议。他只能进行点对点的数据传输,不支持广播传输。他还能提供拥塞控制,当网络拥塞时,TCP能够减小向网络注入数据的速率和数量,缓解拥塞。使用于要求可靠传输的场景

UDP:无连接,并且是不可靠传输,不使用流量控制和拥塞控制,支持一对一,一对多,多对多的交互通信,面向报文,适用于实时应用的场景。他的效率要高于TCP

TCP的三次握手和四次挥手的过程

三次握手:TCP需要经过客户端和服务端的三次确认才可以互相建立连接

第一次握手:客户端A向服务端B发出连接请求报文段

第二次握手:服务端B接收到请求,因为TCP是全双工协议,因此服务端也可能会向客户端发送数据,所以服务端B也会向客户端A发送连接请求报文段

第三次握手:客户端A接收到服务端B的连接请求,但是要跟服务端说一下自己收到了,此时才真正达到了互连的目的

四次挥手:发生在TCP断开连接的时候

第一次挥手:客户端A向服务端B发送一个FIN,表示自己这边已经完事了,要关闭客户端到服务端的数据传输。

第二次挥手:服务端B收到A的关闭请求,此时向A发送一个ACK表示确认。若此时服务端还有数据则继续传输

第三次挥手:服务端B向A发出FIN,表示要关闭服务端到客户端的数据传输

第四次挥手:客户端接收到服务端发来的FIN请求,并向服务端发送一个ACK表示确认,完成四次挥手

HTTP的请求响应过程

拿一个网址举例

当我们输入网址点击回车后

  1. 首先DNS服务器会先对此网址进行域名的映射,即,然后客户端发起一个到此域名服务器的TCP连接。
  2. 客户端通过它的套接字向服务端发送一个HTTP请求报文
  3. 服务端通过它的套接字接收到该报文,并进行解析工作,并从磁盘或内存中检索出对应资源对象,并把对象封装到HTTP响应报文中,通过套接字向客户端进行发送
  4. 服务端发送完成,等客户端接收到数据并响应后,断开TCP连接
  5. 客户端从响应报文中提取出资源文件,并进行检查
  6. 检查完成后,客户端把对应的资源展示给用户

HTTP1.0和HTTP1.1的主要区别?

1.1中默认使用长连接,在http1.0中,默认使用短连接,也就是每次请求都要重新建立一次连接,而建立连接和断开连接需要经过三次挥手四次握手的过程,所以会有比较大的开销。在1.1时,默认使用长连接,默认开启Connection:keep-alive。

Cookie和Session

Cookie:是网站为了辨别用户身份进行Session跟踪而存储在用户本地的数据,通常保存在客户端内存中或本地磁盘。Cookie解决了HTTP协议无状态的问题,由于http对于事务处理没有记忆能力,所以当后续请求需要前面的信息时,就必须重新发起请求获得之前的信息,比较麻烦。而拥有cookie之后,某用户第一次请求服务器时,服务器会返回给浏览器一些数据(cookie),浏览器把cookie保存在本地,当用户第二次发起请求时,会把存储的cookie数据也一并带到服务器,服务器会通过这个cookie判断当前用户是哪个

 

Cookie的生命周期:Cookie在生成时会被指定一个expire值,在这个周期内cookie有效,超过后cookie就会被清除。

Cookie的缺点:

  1. 数量有限。浏览器会有Cookie数量上限,每个Web站点也会有数量上限
  2. 不安全。它存储在浏览器,容易被攻击者篡改

Session:会话控制。一个会话是指用户打开浏览器,进行请求访问,关闭浏览器的整个过程。Session对象中存储了特定用户一次会话所需的属性及配置信息

Session的工作过程:当用户第一次请求服务器时,此时用户还没有自己的会话,所以Web服务器会自动创建一个Session对象,里面包含了这个用户特定的SessionID,并把这个ID发送给客户端,存在cookie里,同时服务器也会把ID和对应的用户信息和操作记录在session中。当客户端再次访问服务器时,因为会把cookie带上,所以也就把SessionID也带上了,服务器通过这个SessionID找到对应的用户的信息

Session生命周期:一般是半小时。比如某个用户第一次登陆了服务器,服务器给他一个SessionID,在半小时内用户没有再次发起过请求,那这个Session就会被清除,用户此时在请求就需要重新登录

Session和Cookie的不同

  1. 存储位置不同:Session存储在服务器,Cookie存储在客户端。
  2. Cookie有数量限制,Session虽然没有数量限制,但是会占用服务器资源
  3. Cookie不安全

如果Cookie被浏览器禁用了,那Session还能用吗?

能。我们知道虽然Cookie中保存了SessionID,但就算不用Cookie,我们也可以通过在URL上加SessionID的方式保证Session的正常使用

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Superzl1002

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值