| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 网络协议 -> 计算机网络基础 -> 正文阅读 |
|
[网络协议]计算机网络基础 |
目录 一、常见的前后台通信协议1、通信协议概述通信协议是指两个节点之间为了协同工作,实现信息交换而协商的规则和约定。例如规定字节序各个字段类型,使用什么压缩算法或加密算法等。 发展过程原始数据→版本号控制→使用tag→强化拓展性的TLV(tag ,length,value)→自解释的性的TTLV(tag,type,length,value)→跨语言特性→IDL语言的产生→代码自动化 IDLIDL是一种描述性语言,也是一个中间语言,IDL的一个使命就是规范和约束,就像前面提到的规范使用类型,提供跨域语言特性,通过工具分析IDL文件,生成各种代码。 2、JCE协议JCE协议是一种二进制支持字段动态增加,代码自动生成,跨平台的通信数据传输协议。是一种类C++的IDL用于生成具体的服务接口文件。 3、ProtobufGoogle 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?? ?控制缓存的行为 2、 请求首部字段Accept?? ?用户代理可处理的媒体类型 3、响应首部字段Accept-Ranges?? ?是否接受字节范围请求 4、实体首部字段Allow?? ?资源可支持的 HTTP 方法 五、HTTP状态码
? ? ? ? ? ? ? ? ? ? ? ? ? 该链接有详细的状态码内容 六、缓存1、优点缓解服务器压力; 降低客户端获取资源的延迟:缓存通常位于内存中,读取缓存的速度更快。并且缓存服务器在地理位置上也有可能比源服务器来得近,例如浏览器缓存。 2、实现方法让代理服务器进行缓存; 让客户端浏览器进行缓存。 3、Cache-ControlHTTP/1.1 通过 Cache-Control 首部字段来控制缓存。 1. 禁止进行缓存no-store 指令规定不能对请求或响应的任何一部分进行缓存。 2. 强制确认缓存no-cache 指令规定缓存服务器需要先向源服务器验证缓存资源的有效性,只有当缓存资源有效时才能使用该缓存对客户端的请求进行响应。 3. 私有缓存和公共缓存private 指令规定了将资源作为私有缓存,只能被单独用户使用,一般存储在用户浏览器中。 4. 缓存过期机制max-age 指令出现在请求报文,并且缓存资源的缓存时间小于该指令指定的时间,那么就能接受该缓存。 max-age 指令出现在响应报文,表示缓存资源在缓存服务器中保存的时间。 在 HTTP/1.1 中,会优先处理 max-age 指令; 七、HTTPSHTTPS是以安全为目标的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(未完待续...)
|
|
网络协议 最新文章 |
使用Easyswoole 搭建简单的Websoket服务 |
常见的数据通信方式有哪些? |
Openssl 1024bit RSA算法---公私钥获取和处 |
HTTPS协议的密钥交换流程 |
《小白WEB安全入门》03. 漏洞篇 |
HttpRunner4.x 安装与使用 |
2021-07-04 |
手写RPC学习笔记 |
K8S高可用版本部署 |
mySQL计算IP地址范围 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
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- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |