计网总结
什么是网络协议,为什么要对网络协议分层
网络协议是计算机在通信过程中要遵循的一些约定好的规则。
网络分层的原因:
○ 易于实现和维护,因为各层之间是独立的,层与层之间不会收到影响。
○ 有利于标准化的制定
说说HTTP常用的状态码及其含义
HTTP常用的请求方式,区别和用途
请求方式用途GET对服务器资源获取的简单请求POST用于发送包含用户提交数据的请求PUT向服务器提交数据,以修改数据DELETE删除服务器上的某些资源HEAD请求页面的首部,获取资源的元信息CONNECT用于ssl隧道的基于代理的请求OPTIONS返回所有可用的方法,常用于跨域TRACE追踪请求,响应的传输路径
如何理解 HTTP 协议是无状态的
如何理解无状态这个词呢?
HTTP的无状态,指协议对于事务处理没有记忆能力,不对通信状态进行保存,服务器无法判断用户身份。即打开一个服务器上的网页和上一次打开这个服务器上的网页之间没有任何联系。服务器不会去记住你是谁,所以是无状态协议。
从浏览器地址栏输入 url 到显示主页的过程
1、DNS解析,查找域名对应的IP地址
2、与服务器通过三次握手,建立TCP连接
3、向服务器发送HTTP请求(cookies会随着请求发送给服务器)
4、服务器处理请求,返回网页内容(处理请求&它的参数、cookies、生成一个HTML响应)
5、浏览器解析并渲染页面
6、TCP四次挥手,连接结束
POST和GET有哪些区别?
请求方式GETPOST数据包产生一个TCP数据包可能产生两个TCP数据包编码方式只能进行url编码支持多种编码方式请求参数把参数包含在URL中,用&连接起来通过 request body 传递参数请求缓存会主动Cache不会缓存,除非手动设置收藏为书签支持收藏为书签不支持历史记录参数会被完整保留在浏览历史记录里不会保留参数数据类型ASCII的字符没有限制数据类型
在交互过程中如果数据传送完了,还不想断开连接怎么办,怎么维持?
使用keep-alive来实现,在HTTP中响应体的Connection字段指定为keep-alive
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 里面设置超时时间
TCP 的keep-alive包含三个参数,支持在系统内核的 net.ipv4 里面设置;当 TCP 连接之后,闲置了tcp_keepalive_time,则会发生侦测包,如果没有收到对方的 ACK,那么会每隔 tcp_keepalive_intvl 再发一次,直到发送了tcp_keepalive_probes,就会丢弃该连接。
HTTP 和 HTTPS的区别
从安全性、数据是否加密、默认端口等这几个方面思考。
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 工作流程:
1、客户端发起HTTPs请求,连接到服务器的443端口
2、服务器必须要有一套数字证书(证书内容有公钥、私钥、证书颁发机构、失效日期)
3、服务器将自己的数 字证书(包含公钥)发送给客户端(私钥由服务器持有)
4、客户端开始验证数字证书的合法性,如果证书验证通过,就会生成一个随机的对称秘钥,用证书的公钥加密。
5、客户端将公钥加密后的密钥发送到服务器。
6、服务器接收到客户端发来的密文密钥之后,用自己之前保留的私钥对其进行非对称解密,解密之后就得到客户端的密钥然后用客户端密钥对返回数据进行对称加密,这样子传输的数据都是密文啦~
7、服务器将加密后的密文返回给客户端
8、客户端收到后,用自己的密钥对其进行对称解密,然后得到服务器返回的数据。
对称加密与非对称加密有什么区别
对称加密:值加密和解密使用同一密钥,要点是运算速度较快,缺点是如何安全将密钥传输给另一方,常见的对称加密算法有:DES、AES等。
非对称加密:指的是加密和解密使用不同的密钥(即公钥和私钥)。公钥和私钥是成对存在的,如果用公钥对数据加密,只有对应的私钥才能解密,常见的非对称加密算法有RSA。
Session 和 Cookie 的区别
概念:
- Cookie 是保存在客户端的一小块文本串的数据。客户端向服务器发起请求时,服务端会向客户端发送一个Cookie,客户端就把Cookie保存起来。在客户端下次向同一服务器再发起请求时,Cookie被携带发送到服务器。服务器就是根据这个Cookie来确认身份的。
- Session 指的就是服务器和客户端一次会话的过程。Session 利用 Cookie 进行信息处理的,当用户首先进行了请求后,服务端就在用户浏览器上创建了一个 Cookie,当这个 Session 结束时,其实就是意味着这个 Cookie 就过期了。Session 对象存储着特定用户会话所需的属性及配置信息。
区别:
版权归原作者 与宇宙对视 所有, 如有侵权,请联系我们删除。