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、通信协议概述

发展过程

IDL

2、JCE协议

3、Protobuf

二、计算机网络体系结构

1、五层协议

2、OSI的七层协议

3、TCP/IP四层协议

三、HTTP基本概念和请求方法

1、基本概念

2、特点:

3、消息结构:

1、客户端请求消息:

2、服务器响应消息:

4、HTTP请求方法

四、HTTP响应头

1、 通用首部字段

2、 请求首部字段

3、响应首部字段

4、实体首部字段

五、HTTP状态码

六、缓存

1、优点

2、实现方法

3、Cache-Control

1. 禁止进行缓存

2. 强制确认缓存

3. 私有缓存和公共缓存

4. 缓存过期机制

七、HTTPS

1、加密方法

2、认证

3、完整性保护

4、缺点

八、Websocket


一、常见的前后台通信协议

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状态码

状态码类别含义
1XXInformational(信息性状态码)接收的请求正在处理
2XXSuccess(成功状态码)请求正常处理完毕
3XXRedirection(重定向状态码)需要进行附加操作以完成请求
4XXClient Error(客户端错误状态码)服务器无法处理请求
5XXServer 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

(未完待续...)

? ? ? ? ? ? ?点击查看 JS基础总结地址

? ? ? ? ? ? ?点击查看 JS高级总结地址

(部分引自力扣(LeetCode)《校招基础知识详解》作者:CyC2018 链接:https://leetcode-cn.com/leetbook/read/tech-interview-cookbook/oewonj/)

  网络协议 最新文章
使用Easyswoole 搭建简单的Websoket服务
常见的数据通信方式有哪些?
Openssl 1024bit RSA算法---公私钥获取和处
HTTPS协议的密钥交换流程
《小白WEB安全入门》03. 漏洞篇
HttpRunner4.x 安装与使用
2021-07-04
手写RPC学习笔记
K8S高可用版本部署
mySQL计算IP地址范围
上一篇文章      下一篇文章      查看所有文章
加:2021-12-24 18:52:13  更:2021-12-24 18:54:47 
 
开发: 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年11日历 -2024/11/26 11:45:46-

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