IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 网络协议 -> 简单梳理Http -> 正文阅读

[网络协议]简单梳理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的正常使用

  网络协议 最新文章
使用Easyswoole 搭建简单的Websoket服务
常见的数据通信方式有哪些?
Openssl 1024bit RSA算法---公私钥获取和处
HTTPS协议的密钥交换流程
《小白WEB安全入门》03. 漏洞篇
HttpRunner4.x 安装与使用
2021-07-04
手写RPC学习笔记
K8S高可用版本部署
mySQL计算IP地址范围
上一篇文章      下一篇文章      查看所有文章
加:2022-09-04 01:45:01  更:2022-09-04 01:46:48 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/19 3:31:03-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码