计网总结
- 什么是网络协议,为什么要对网络协议分层
- 说说HTTP常用的状态码及其含义
- HTTP常用的请求方式,区别和用途
- 如何理解 HTTP 协议是无状态的
- 从浏览器地址栏输入 url 到显示主页的过程
- POST和GET有哪些区别?
- 在交互过程中如果数据传送完了,还不想断开连接怎么办,怎么维持?
- HTTP 如何实现长连接?在什么时候会超时
- HTTP 和 HTTPS的区别
- Https流程是怎么样的?
- 对称加密与非对称加密有什么区别
- Session 和 Cookie 的区别
什么是网络协议,为什么要对网络协议分层 网络协议是计算机在通信过程中要遵循的一些约定好的规则。
网络分层的原因:
○ 易于实现和维护,因为各层之间是独立的,层与层之间不会收到影响。
○ 有利于标准化的制定
说说HTTP常用的状态码及其含义
文章图片
文章图片
HTTP常用的请求方式,区别和用途
请求方式 | 用途 |
---|---|
GET | 对服务器资源获取的简单请求 |
POST | 用于发送包含用户提交数据的请求 |
PUT | 向服务器提交数据,以修改数据 |
DELETE | 删除服务器上的某些资源 |
HEAD | 请求页面的首部,获取资源的元信息 |
CONNECT | 用于ssl隧道的基于代理的请求 |
OPTIONS | 返回所有可用的方法,常用于跨域 |
TRACE | 追踪请求,响应的传输路径 |
HTTP的无状态,指协议对于事务处理没有记忆能力,不对通信状态进行保存,服务器无法判断用户身份。即打开一个服务器上的网页和上一次打开这个服务器上的网页之间没有任何联系。服务器不会去记住你是谁,所以是无状态协议。
从浏览器地址栏输入 url 到显示主页的过程 1、DNS解析,查找域名对应的IP地址
2、与服务器通过三次握手,建立TCP连接
3、向服务器发送HTTP请求(cookies会随着请求发送给服务器)
4、服务器处理请求,返回网页内容(处理请求&它的参数、cookies、生成一个HTML响应)
5、浏览器解析并渲染页面
6、TCP四次挥手,连接结束
POST和GET有哪些区别?
请求方式 | GET | POST |
---|---|---|
数据包 | 产生一个TCP数据包 | 可能产生两个TCP数据包 |
编码方式 | 只能进行url编码 | 支持多种编码方式 |
请求参数 | 把参数包含在URL中,用&连接起来 | 通过 request body 传递参数 |
请求缓存 | 会主动Cache | 不会缓存,除非手动设置 |
收藏为书签 | 支持收藏为书签 | 不支持 |
历史记录 | 参数会被完整保留在浏览历史记录里 | 不会保留 |
参数数据类型 | ASCII的字符 | 没有限制数据类型 |
HTTP 如何实现长连接?在什么时候会超时 什么是HTTP的长连接?
1、HTTP 分为长连接和短连接,本质上说的是TCP的长短连接。TCP连接是一个双向的通道,它可以保持一段时间不关闭的,因此TCP连接才具有真正的长连接和短连接。
2、TCP长连接可以复用一个TCP连接,来发起多次的HTTP请求,这样就可以就爱你少资源的消耗,比如一次请求HTML,如果是短连接,可能还需要请求后续的JS/CSS。
如何 设置长连接?
通过在头部(请求和响应头)设置Connection字段指定为 keep-alive,HTTP/1.0协议支持,但是默认是关闭的,从HTTP/1.1以后,连接默认是长连接。
在什么时候会超时呢?
HTTP 一般会有 httpd 守护进程,里面可以设置keep-alive timeout,当 tcp 连接闲置超过这个时间就会关闭,也可以在 HTTP 的 header 里面设置超时时间HTTP 和 HTTPS的区别
TCP 的keep-alive包含三个参数,支持在系统内核的 net.ipv4 里面设置;当 TCP 连接之后,闲置了tcp_keepalive_time,则会发生侦测包,如果没有收到对方的 ACK,那么会每隔 tcp_keepalive_intvl 再发一次,直到发送了tcp_keepalive_probes,就会丢弃该连接。
从安全性、数据是否加密、默认端口等这几个方面思考。
HTTP,即超文本传输协议,是一个基于TCP/IP通信协议来传递明文数据的协议。HTTP会存在这几个问题:
- 请求信息是
明文传输
,容易被窃听截取。 - 没有
验证
对方身份
,存在被冒充
的风险 - 数据的
完整性没有校验
,容易被中间人篡改。
为了解决HTTP存在的问题,HTTPS出现啦。
HTTPS = HTTP + SSL/TLS,可以理解 HTTPs是身披SSL(安全套接层)的HTTP。
文章图片
Https流程是怎么样的? HTTPs的工作流程,要点:公私钥、数字证书、加密、对称加密、非对称加密
- HTTPS = HTTP + SSL/TLS ,也就是用SSL/TLS 对数据进行加密和解密,HTTP进行传输。
- SSL,即 Secure Sockets Layer(安全套接层协议),是网络通信提供安全及数据完整性的一种安全协议。
- TLS,即 Transport Layer Security(安全传输层协议),它是 SSL3.0 的后续版本。
Https 工作流程:
文章图片
2、服务器必须要有一套数字证书(证书内容有公钥、私钥、证书颁发机构、失效日期)
3、服务器将自己的数 字证书(包含公钥)发送给客户端(私钥由服务器持有)
4、客户端开始验证数字证书的合法性,如果证书验证通过,就会生成一个随机的对称秘钥,用证书的公钥加密。
5、客户端将公钥加密后的密钥发送到服务器。
6、服务器接收到客户端发来的密文密钥之后,用自己之前保留的私钥对其进行非对称解密,解密之后就得到客户端的密钥然后用客户端密钥对返回数据进行对称加密,这样子传输的数据都是密文啦~
7、服务器将加密后的密文返回给客户端
8、客户端收到后,用自己的密钥对其进行对称解密,然后得到服务器返回的数据。
对称加密与非对称加密有什么区别 对称加密:值加密和解密使用同一密钥,要点是运算速度较快,缺点是如何安全将密钥传输给另一方,常见的对称加密算法有:DES、AES等。
非对称加密:指的是加密和解密使用不同的密钥(即公钥和私钥)。公钥和私钥是成对存在的,如果用公钥对数据加密,只有对应的私钥才能解密,常见的非对称加密算法有RSA。
Session 和 Cookie 的区别 概念:
- Cookie 是保存在客户端的一小块文本串的数据。客户端向服务器发起请求时,服务端会向客户端发送一个Cookie,客户端就把Cookie保存起来。在客户端下次向同一服务器再发起请求时,Cookie被携带发送到服务器。服务器就是根据这个Cookie来确认身份的。
- Session 指的就是服务器和客户端一次会话的过程。Session 利用 Cookie 进行信息处理的,当用户首先进行了请求后,服务端就在用户浏览器上创建了一个 Cookie,当这个 Session 结束时,其实就是意味着这个 Cookie 就过期了。Session 对象存储着特定用户会话所需的属性及配置信息。
文章图片
推荐阅读
- 计网|计算机网络——OSI模型以及TCP/IP模型
- JavaScript|函数有参无参真有很大区别吗()
- JavaScript|JavaScript常见数组方法,教你如何转置矩阵
- 笔记|4G/5G远程网络遥控,图传系统-无人车-无人船-无人机械制作方法
- 程序人生|3G网络关闭,4G还会远吗()
- 算法|我工作第五年的学习与读书之法
- 首次公开开源PolarDB的总体结构设计和企业级特性
- Java学习|HTML5 入门( 一)
- 前端|Vue组件六种通信方式的优缺点及应用场景