自己网上看的关于计算机网络的知识的各部分内容总结,可能没有那么专业和深入,应对校招和前端的基础知识。后续还会补充和更新~
目录
一、常见的前后台通信协议
1、通信协议概述
通信协议是指两个节点之间为了协同工作,实现信息交换而协商的规则和约定。例如规定字节序各个字段类型,使用什么压缩算法或加密算法等。
发展过程
原始数据→版本号控制→使用tag→强化拓展性的TLV(tag ,length,value)→自解释的性的TTLV(tag,type,length,value)→跨语言特性→IDL语言的产生→代码自动化
IDL
IDL是一种描述性语言,也是一个中间语言,IDL的一个使命就是规范和约束,就像前面提到的规范使用类型,提供跨域语言特性,通过工具分析IDL文件,生成各种代码。
2、JCE协议
JCE协议是一种二进制支持字段动态增加,代码自动生成,跨平台的通信数据传输协议。是一种类C++的IDL用于生成具体的服务接口文件。
3、Protobuf
Google Protocol Buffer 谷歌公司内部的混合语言数据标准
二、计算机网络体系结构
1、五层协议
应用层(5):为特定应用程序提供数据传输服务,例如 HTTP、DNS 等/协议。数据单位为报文。
传输层(4):为进程提供通用数据传输服务。运输层包括两种协议:传输控制协议 TCP,提供面向连接、可靠的数据传输服务,数据单位为报文段;用户数据报协议 UDP,提供无连接、尽最大努力的数据传输服务,数据单位为用户数据报。TCP 主要提供完整性服务,UDP 主要提供及时性服务。
网络层(3):为主机提供数据传输服务。
数据链路层(2):链路层协议就是为同一链路的主机提供数据传输服务。数据链路层把网络层传下来的分组封装成帧。
物理层(1):物理层的作用是尽可能屏蔽传输媒体和通信手段的差异,使数据链路层感觉不到这些差异。
2、OSI的七层协议
应用层(7)
表示层(6):数据压缩、加密以及数据描述,这使得应用程序不必关心在各台主机中数据内部格式不同的问题。
会话层(5):建立及管理会话。
传输层(4)
网络层(3)
数据链路层(2)
物理层(1)
3、TCP/IP四层协议
(见图)
三、HTTP基本概念和请求方法
1、基本概念
HTTP超文本传输协议 www都必须遵守该协议
基于TCP/IP通信协议来传递数据
2、特点:
1、HTTP是无连接协议,限制每次连接处理一次请求并收到答复后断开连接。→节省传输时间
2、HTTP是媒体独立的 任何数据都可以通过HTTP请求客户端及服务器指定使用适合的MIME-type内容类型。
3、HTTP是无状态协议→对事物处理没有记忆能力
3、消息结构:
1、客户端请求消息:
请求行(request line),请求头部(header),空行,请求数据
请求行:包含了请求方法、URL、协议版本。
请求头部:每个首部都有一个首部名称,以及对应的值。
空行:用来分隔头部和内容主体 Body。
请求数据:请求的内容主体
2、服务器响应消息:
状态行,消息报头,空行,响应正文。
状态行:包含协议版本、状态码以及描述,最常见的是 200 OK 表示请求成功了。
消息报头:头部内容。
空行:分隔首部和内容主体。
响应正文:响应的主体内容。
4、HTTP请求方法
1、GET
请求指定的页面信息好,并返回实体主体。
2、HEAD
获取报文头部,类似于GET 除了报文头部没有具体内容。
3、POST
传输实体主体,传输数据
4、PUT
上传文件,由于自身不带验证机制,任何人都可以上传文件,因此存在安全性问题,一般不使用该方法。
5、PATCH
对资源进行部分修改。PUT 也可以用于修改资源,但是只能完全替代原始资源,PATCH 允许部分修改。
6、DELETE
删除文件,与 PUT 功能相反,并且同样不带验证机制。
7、OPTIONS
查询支持的方法,返回请求方法。
8、CONNECT
要求在与代理服务器通信时建立隧道。
9、 TRACE
追踪路径,服务器会将通信路径返回给客户端。
四、HTTP响应头
有 4 种类型的首部字段:通用首部字段、请求首部字段、响应首部字段和实体首部字段。
1、 通用首部字段
Cache-Control 控制缓存的行为
Connection 控制不再转发给代理的首部字段、管理持久连接
Date 创建报文的日期时间
Pragma 报文指令
Trailer 报文末端的首部一览
Transfer-Encoding 指定报文主体的传输编码方式
Upgrade 升级为其他协议
Via 代理服务器的相关信息
Warning 错误通知
2、 请求首部字段
Accept 用户代理可处理的媒体类型
Accept-Charset 优先的字符集
Accept-Encoding 优先的内容编码
Accept-Language 优先的语言(自然语言)
Authorization Web 认证信息
Expect 期待服务器的特定行为
From 用户的电子邮箱地址
Host 请求资源所在服务器
If-Match 比较实体标记(ETag)
If-Modified-Since 比较资源的更新时间
If-None-Match 比较实体标记(与 If-Match 相反)
If-Range 资源未更新时发送实体 Byte 的范围请求
If-Unmodified-Since 比较资源的更新时间(与 If-Modified-Since 相反)
Max-Forwards 最大传输逐跳数
Proxy-Authorization 代理服务器要求客户端的认证信息
Range 实体的字节范围请求
Referer 对请求中 URI 的原始获取方
TE 传输编码的优先级
User-Agent HTTP 客户端程序的信息
3、响应首部字段
Accept-Ranges 是否接受字节范围请求
Age 推算资源创建经过时间
ETag 资源的匹配信息
Location 令客户端重定向至指定 URI
Proxy-Authenticate 代理服务器对客户端的认证信息
Retry-After 对再次发起请求的时机要求
Server HTTP 服务器的安装信息
Vary 代理服务器缓存的管理信息
WWW-Authenticate 服务器对客户端的认证信息
4、实体首部字段
Allow 资源可支持的 HTTP 方法
Content-Encoding 实体主体适用的编码方式
Content-Language 实体主体的自然语言
Content-Length 实体主体的大小
Content-Location 替代对应资源的 URI
Content-MD5 实体主体的报文摘要
Content-Range 实体主体的位置范围
Content-Type 实体主体的媒体类型
Expires 实体主体过期的日期时间
Last-Modified 资源的最后修改日期时间
五、HTTP状态码
状态码 | 类别 | 含义 |
1XX | Informational(信息性状态码) | 接收的请求正在处理 |
2XX | Success(成功状态码) | 请求正常处理完毕 |
3XX | Redirection(重定向状态码) | 需要进行附加操作以完成请求 |
4XX | Client Error(客户端错误状态码) | 服务器无法处理请求 |
5XX | Server Error(服务器错误状态码) | 服务器处理请求出错 |
六、缓存
1、优点
缓解服务器压力;
降低客户端获取资源的延迟:缓存通常位于内存中,读取缓存的速度更快。并且缓存服务器在地理位置上也有可能比源服务器来得近,例如浏览器缓存。
2、实现方法
让代理服务器进行缓存;
让客户端浏览器进行缓存。
3、Cache-Control
HTTP/1.1 通过 Cache-Control 首部字段来控制缓存。
1. 禁止进行缓存
no-store 指令规定不能对请求或响应的任何一部分进行缓存。
2. 强制确认缓存
no-cache 指令规定缓存服务器需要先向源服务器验证缓存资源的有效性,只有当缓存资源有效时才能使用该缓存对客户端的请求进行响应。
3. 私有缓存和公共缓存
private 指令规定了将资源作为私有缓存,只能被单独用户使用,一般存储在用户浏览器中。
public 指令规定了将资源作为公共缓存,可以被多个用户使用,一般存储在代理服务器中。
4. 缓存过期机制
max-age 指令出现在请求报文,并且缓存资源的缓存时间小于该指令指定的时间,那么就能接受该缓存。
max-age 指令出现在响应报文,表示缓存资源在缓存服务器中保存的时间。
Expires 首部字段也可以用于告知缓存服务器该资源什么时候会过期。
在 HTTP/1.1 中,会优先处理 max-age 指令;
在 HTTP/1.0 中,max-age 指令会被忽略掉。
七、HTTPS
HTTPS是以安全为目标的HTTP通道,在HTTP下加入SSL通信,再由SSL和TCP通信,也就是说HTTPS使用了隧道进行通信,通过SSL,HTTP具有了加密,认证和完整性保护。
1、加密方法
<1>对称密匙加密(加密解密同一密匙)
优点:运算速度快。
缺点:无法安全的将密匙传输给通信方。
<2>非对称密匙(加密解密不同密匙)
优点:更安全的将公开密匙传输给通信方。
缺点:运算速度慢。
<3>HTTPS采用的加密方式→混合加密
使用非对称密钥加密方式,传输对称密钥加密方式所需要的 Secret Key,从而保证安全性;获取到 Secret Key 后,再使用对称密钥加密方式进行通信,从而保证效率。
2、认证
通过使用 证书 来对通信方进行认证。
数字证书认证机构(CA,Certificate Authority)是客户端与服务器双方都可信赖的第三方机构。
服务器的运营人员向 CA 提出公开密钥的申请,CA 在判明提出申请者的身份之后,会对已申请的公开密钥做数字签名,然后分配这个已签名的公开密钥,并将该公开密钥放入公开密钥证书后绑定在一起。
进行 HTTPS 通信时,服务器会把证书发送给客户端。客户端取得其中的公开密钥之后,先使用数字签名进行验证,如果验证通过,就可以开始通信了。
3、完整性保护
SSL 提供报文摘要功能来进行完整性保护。
HTTP 也提供了 MD5 报文摘要功能,但不是安全的。例如报文内容被篡改之后,同时重新计算 MD5 的值,通信接收方是无法意识到发生了篡改。
HTTPS 的报文摘要功能之所以安全,是因为它结合了加密和认证这两个操作。试想一下,加密之后的报文,遭到篡改之后,也很难重新计算报文摘要,因为无法轻易获取明文。
4、缺点
1、HTTPS在TCP时握手更慢,约多50%时间;且增加10%~20%的耗电。
2、SSL需要资金,越高级的SSL证书价格越高。
3、不如HTTP高效,会增加数据开销和功耗。
4、SSL证书需要绑定IP,不能在同一IP上绑定多个域名。
八、Websocket
(未完待续...)
(部分引自力扣(LeetCode)《校招基础知识详解》作者:CyC2018 链接:https://leetcode-cn.com/leetbook/read/tech-interview-cookbook/oewonj/)