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 小米 华为 单反 装机 图拉丁
 
   -> 网络协议 -> 计算机网络和浏览器原理——面试题 -> 正文阅读

[网络协议]计算机网络和浏览器原理——面试题

四、计算机网络和浏览器原理

1. HTTP和HTTPS的区别

  • 一、HTTP协议

    1、什么是HTTP

    • "http" ,又被称为超文本传输协议,是互联网上应用最为广泛的一种网络协议。

    • 是一个在计算机世界里专门在两点之间传输文字、图片、音频、视频等超文本数据的约定和规范。

    • 是用于从万维网服务器传输超文本到本地浏览器的传送协会。

    • 基于TCP的应用层协议,它不关心数据传输的细节,HTTP是一个基于 请求 与 响应模式的、无状态的、应用层协议,只有遵循统一的HTTP请求格式,服务器才能正确解析客户端发的请求,同样地,服务器遵循统一的响应格式,服务器才得以正确解析不同网站发过来的响应

    2、HTTP请求内容

    HTTP 请求由请求行、请求头、空行、请求体组成

    在这里插入图片描述

    • **请求行:**请求方法 + URL ++ 协议版本

    3、HTTP响应内容

    HTTP响应格式与请求的格式相似,也是由响应行、响应头、空行、响应体组成

    在这里插入图片描述

    • **响应行:**HTTP 版本号 + 响应状态码 + 状态说明
    • **响应头:**响应头与请求头对应,是服务器对该响应的一些附加说明
    • **响应体:**他才是真正的响应数据,这些数据其实就是网页的HTML源代码

    4、HTTP的缺点

    缺少安全性,http协议信息传输是通过明文的方式传输,不做任何加密,容易被中间人恶意篡改

    二、HTTPS协议

    1、什么是HTTPS协议

    • HTTPS 的全称是(Hypertext Transfer Protocol Secure),它是用来在计算机网络上的两个端系统之间进行 安全的交换信息 ,它相当于在HTTP的基础上加了一个Secure安全的字眼
    • HTTPS是在一个计算机世界里专门在两点之间安全的传输文字、图片、音频、视频等超文本数据的约定和规范
    • HTTPS是HTTP协议的一种扩展,它本身并不保证传输的安全性,在HTTPS中,使用 传输层安全性(TLS)或 安全套接字层(SSL)对通信协议进行加密
    • HTTP + SSL(TLS) = HTTPS

    2、HTTPS做了什么

    • 加密,HTTPS通过对数据加密来使其免受窃听者对数据的监听
    • 数据一致性,数据在传输的过程中不会被窃听者锁修改,用户发送的数据会完整的传输到服务端
    • 身份认证,是指确认对方的真是身份

    除了协议名和默认端口号外,HTTPS协议在语法,语义上和HTTP一样,关键在于这个s也就是SSL/TLS

    三、HTTPS解决了HTTP的什么问题

    由于HTTP天生明文传输的特性,在HTTP的传输过程中,任何人都可能从中截取、修改或者伪造请求发送,所以可以认为HTTP是不安全的;

    • 在HTTP的传输过程中不会验证通信方的身份,因此HTTP信息交换的双方可能会遭到伪装,也就是没有用户验证;

    • 在HTTP的传输过程中,接收方和发送方并不会验证报文的完整性

    四、什么是SSL/TLS

    TLSSSL 的后续版本,他们是用于在互联网两台计算机之间用于身份验证和加密的一种协议

    SSL 是一个独立的协议,不只有 HTTP 可以使用,其他应用层协议也可以使用,比如 SMTP(电子邮件协议)、Telnet(远程登录协议) 等都可以使用。

    TLS 用于两个通信应用程序之间提供保密性和数据完整性。TLS 由记录协议、握手协议、警告协议、变更密码规范协议、扩展协议等几个子协议组成,综合使用了对称加密、非对称加密、身份认证等许多密码学前沿技术

2. HTTP状态码

  • 状态码是由3位数组成,第一个数字定义了响应的类别,且有五种可能取值:

    • 1xx:指示信息——般表示请求已接收,继续处理。
    • 2xx:成功——表示已经成功被接收、理解、接收。
    • 3xx:重定向——要完成请求必须进行更进一步的操作。
    • 4xx:客户端错误——请求有语法错误或请求无法实现。
    • 5xx:服务器端错误——服务器未能实现合法的请求。

    常见的状态码

    • 200(成功):请求成功,通常服务器提供了需要的资源

    • 204(无内容):服务器成功处理了请求,但没有返回任何内容

    • 301(永久移动):请求的网页已经移动到新的位置。服务器返回此响应(对 GET 或 HEAD 请求的响应)时,会自动将请求者转到新的位置。

    • 302(临时移动):服务器目前从不同位置的网页响应请求,但请求者应继续使用原有位置来进行以后的请求。

    • 304(未修改):自从上次请求后,请求的网页未修改过。服务器返回此响应时,不会返回网页内容

    • 400(错误请求):服务器不理解请求的语法(一般为参数错误)。

    • 401(未授权):请求要求身份验证。对于需要登录的网页,服务器可能返回此响应。

    • 403(禁止):服务器拒绝请求。(一般为客户端的用户权限不够)

    • 404(未找到):服务器找不到请求的网页

    • 422(无法处理):请求格式正确,但是由于含有语义错误,无法响应

    • 500(服务器内部错误):服务器遇到错误,无法完成请求

3. 从一个URL地址到浏览器完成渲染的整个过程

    1. 浏览器地址输入URL并回车
    2. 浏览器查找当前URL是否存在缓存,并比较缓存是否过期
    3. DNS解析URL对应的IP
    4. 根据ip建立TCP连接(三次握手)
    5. 发送http请求
    6. 服务器处理请求,浏览器接收HTTP响应
    7. 浏览器解析并渲染页面
    8. 关闭TCP连接

4. GET和POST的区别

  • 这里主要展示 POST 和GET 的区别

    • GET在浏览器回退时是无害的,而POST会再次提交请求。
    • GET产生的URL地址可以被Bookmark,而POST不可以。
    • GET请求会被浏览器主动cache,而POST不会,除非手动设置
    • GET请求只能进行url编码,而POST支持多种编码方式。
    • GET请求参数会被完整保留在浏览器历史记录里,而POST中的参数不会被保留。
    • GET请求在URL中传送的参数是有长度限制的,而POST没有
    • 对参数的数据类型,GET只接收ASCII字符,而POST没有限制
    • GET比POST更不安全,因为参数直接暴露在URL上,所以不能用来传递敏感信息。
    • GET参数通过URL传递,POST放在Request body中

    重点区别: GET 会产生一个TCP数据包,而POST会产生两个TCP数据包。

    • 对于GET方式的请求,浏览器会把http header和data一并发送出去,服务器响应200
    • 而对于POST,浏览器先发送header,服务器响应100 continue,浏览器在发送data,服务器响应200

5. ajax状态码

  • 在AJAX实际运行当中,对于访问XMLHttpRequest(XHR)时并不是一次完成的,而是分别经历了多种状态后取得的结果,对于这种状态在AJAX中共有5种,分别是:
    0 - (未初始化)还没有调用send()方法
    1 - (载入)已调用send()方法,正在发送请求
    2 - (载入完成)send()方法执行完成,
    3 - (交互)正在解析响应内容
    4 - (完成)响应内容解析完成,可以在客户端调用了
    对于上面的状态,其中“0”状态是在定义后自动具有的状态值,而对于成功访问的状态(得到信息)我们大多数采用“4”进行判断

6. cookie和session区别

  • cookie和session的区别

    cookie

    Cookie是访问某些网站以后在本地存储的一些网站相关的信息

    Cookie中一般包括如下主要内容:

    1. key:设置的cookie的key
    2. value:key对应的value
    3. max_age/expire_time:设置cookie的过期时间
    4. domain:该cookie在哪个域名中有效。一般设置子域名,比如cms.example.com。
    5. path:该cookie在哪个路径下有效

    例如:我们登录某一个网站时需要输入用户名和密码,如果用户名和密码保存为cookie,则下次我们登录该网站的时候就不需要在输入用户密码了

    session

    session是存在服务器的一种李永来存放用户数据的类HashTable结构。

    浏览器第一次发送请求时,服务器自动生成了—HashTable和—SessionID来唯一标识这个HashTabe,并将其通过响应发送到浏览器。浏览器第二次发送请求会将前一次服务器响应中的SessionID放在请求中一并发送到浏览器上,服务器从请求中提取出sessionID,并和保存的所有sessionID进行对比,找到这个用户对应的HashTable。

    例如:我们浏览一个购物网站,用户将部分商品添加到购物车中,许久以前许多网站都是用服务端session存储购物车内容(现在基本都是用数据库了),就用到了session存储这部分信息。

    区别:

    1. 存储位置不同

    • cookie的数据信息存放在本地。
    • session的数据信息存放在服务器上

    2. 存储容量大小不同

    • cookie存储的容量较小,一般 <= 4kb
    • session存储容量大小没有限制(但是为了服务器性能考虑,一般不能存放太多数据)。

    3. 存储有效期不同

    • cookie可以长期存储,只要不超过设置的过期时间,可以一直存储
    • session在超过一定的操作时间(通常为30分钟)后会失效,但是当关闭浏览器时,为了保护用户信息,会自动调用session.invalidate()方法,该方法会清除掉session中的信息

    4. 安全性不同

    • cookie存储在客户端,所以可以分析存放在本地的cookie并进行cookie欺骗,安全性较低。
    • session存储在服务器上,不存在敏感信息泄露的风险,安全性比较高。

    5. 域支持范围不同

    • cookie支持跨域名访问。例如:所有a.com的cookie在a.com下都能用。
    • session不支持跨域访问。例如:www.a.com的session在api.a.com下不能用

    6. 对服务器压力不同

    • cookie保存在客户端,不占用服务器资源
    • session是保存在服务器端,每个用户都会产生一个session,session过多的时候会消耗服务器资源,所以大型网站会有专门的session服务器

    7. 存储的数据类型不同

    • cookie中只能保管ASCII字符串,并需要通过编码方式存储为Unicode字符或者二进制数据
    • session中能够存储任何类型的数据,包括且不限于string,integer,list,map等
  网络协议 最新文章
使用Easyswoole 搭建简单的Websoket服务
常见的数据通信方式有哪些?
Openssl 1024bit RSA算法---公私钥获取和处
HTTPS协议的密钥交换流程
《小白WEB安全入门》03. 漏洞篇
HttpRunner4.x 安装与使用
2021-07-04
手写RPC学习笔记
K8S高可用版本部署
mySQL计算IP地址范围
上一篇文章      下一篇文章      查看所有文章
加:2021-10-20 12:51:43  更:2021-10-20 12:53:10 
 
开发: 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年7日历 -2024/7/1 21:25:45-

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