各种网络协议的类型、优缺点、作用

2023-10-26

一、网络协议的定义

     ● 网络协议是一种特殊的软件,是计算机网络实现其功能的基本机制

     ● 网络协议的本质是规则,即各种硬件和软件必须遵循的共同规则

     ● 网络协议并不是一套单独的软件,他融合于其他所有软件系统中,协议在网络中无所

        不在

二、常用的网络协议

       TCP  UDP     HTTP   HTTPS    FTP  DNS  Telnet    TCP/IP    SSL/TLS   websocket

1、TCP协议,(transmission control protocol),传输控制协议。

      定义:TCP协议是一种面向连接的、可靠的、传输速度慢、基于字节流传输层通信协议

               在简化的计算机网络OSI模型中完成第四层传输层所指定的功能。

 

提供可靠的端到端的通信,可以保证接收方收到的数据与发送方发送的数据完全一致,能够保证数据不丢失、无差错,同时还有流量控制和拥塞控制的功能,所以TCP协议比较复杂,能够为要求可靠性的应用层协议提供服务,如文件传输、邮件收发、网页浏览、远程登录等等

 

 

      作用:主要用于在主机间建立一个虚拟连接,以实现高可靠性的数据包交换

 

     IP协议的作用:可以进行IP数据包的分割和组装

     IP协议的缺点:但是通过IP协议并不能清楚的了解到数据包是否顺利的发送给目标计算机

     TCP的特点

(1)面向连接的

(2)提供可靠的数据传输服务

(3)提供流量控制。TCP能够控制进程发送数据的速率,保证另一端不被大量的数据“淹没”而出现溢出。

(4)提供拥塞控制。当网络出现拥塞的时候,TCP能够减小向网络注入数据的速率和数量,缓解拥塞。

(5)提供全双工通信。TCP提供双向的数据传输服务。TCP允许通信双方的应用进程在任何时候发送数据。TCP连接的两端都设有发送缓存和接收缓存,用来临时存放双向通信的数据。

(6)TCP是面向字节流的。TCP中的“流”是指流入到进程或从进程流出的字节

 

2、UDP协议

用户数据包协议(User Datagram Protocol)

UDP协议不能保证数据不丢失、无差错,也不能保证接收方收到数据的顺序和发送方发送数据的顺序一样。UDP协议比较简单,但效率比较高,能为对可靠性要求不高,对实时性要求比较高的应用提供服务,如传输音频和视频。

定义:UDP协议是OSI(Open System Interconnection,开放式系统互联)模型中的一种

无连接的、简单不可靠的、传输速度快、面向事务的传输层通信协议。

UDP协议的特点

 

(1)无连接的。

(2)UDP是一种尽力而为的服务方式,不提供可靠的数据传输服务(比如数据的丢失、重复和无序)。

(3)UDP是高效的传输协议。

(4)UDP没有拥塞控制和流量控制。

 

TCP和UDP协议的区别

 

A、TCP面向连接(打电话要先拨号建立连接);

      UDP是无连接的(发送数据之前不需要建立连接)。

B、TCP提供可靠的服务(通过TCP连接传送的数据,无差错、不丢失、不重复、按序到达);

      UDP尽最大努力交付,不保证可靠交付。

C、TCP基于字节流(实际上是TCP把数据看成一连串无结构的字节流)。

      UDP是基于报文的,UDP没有拥塞控制,因此网络出现拥塞不会使源主机的发送速率降低

     (对实时应用很有用,IP电话,实时视频电话)。

D、TCP保证数据正确性;

      UDP可能丢包。

E、TCP保证数据顺序;

      UDP不保证。

F、每一条TCP连接只能是点到点的;

     UDP支持一对一、一对多、多对一、多对多的交互通信

G、TCP的逻辑通信信道是全双工的可靠信道

      UDP则是不可靠信道

H、TCP的首部开销20字节

       UDP的首部开销8字节

I、TCP要求系统资源较多,UDP较少

 

3、TCP/IP协议

     实质: TCP/IP其实就是TCP和IP等协议的组合,即传输控制协议/互联网协议。

    应用场景:主要用于在安装了不同硬件和不同操作系统的计算机之间,实现可靠的网络通

                     信。TCP协议可以保证数据包传输的可靠性;IP协议可以保证数据包被传输到

                    目标计算机上。

4、FTP协议

     文件传输协议(File Transfer Protocol)。

     用途:主要用于在两台计算机之间实现文件的上传与下载,其中一台计算机作为FTP的客

                户端,另一台作为FTP的服务端。通过FTP协议可以上传、下载几乎所有的文件类

                型,比如txt  exe  doc  pdf   mp3  zip rar等

5、Telnet协议

      定义:远程登录协议,是Internet上普遍采用的仿真网络协议,同时Telnet也是从远程

                位置登录常用的程序。

      作用:通过Telnet程序登录远程Telnet计算机。一般采用授权的用户名和密码登录。登录

                之后就如同使用本地计算机一样,使用远程计算机的的硬盘、运行应用程序等。

6、DNS协议

DNS(Domain Name System,域名系统),因特网上作为域名和IP地址相互映射的一个分布式数据库,能够使用户更方便的访问互联网,而不用去记住能够被机器直接读取的IP数串。通过主机名,最终得到该主机名对应的IP地址的过程叫做域名解析(或主机名解析)。

作用

● 该协议主要负责将域名转换成网络可以识别的IP地址(www.cce.com.cn转换成221.122.32.15),域名和IP地址是一一对应的。

● 因为访问网站的时候,最终都是转换成IP地址进行访问的

● 直接设置DNS服务器。可以提高网络的访问速度,保证访问的正确性

 

DNS的两种查询方式:递归查询和迭代查询

a)递归解析
当局部DNS服务器自己不能回答客户机的DNS查询时,它就需要向其他DNS服务器进行查询。此时有两种方式,如图所示的是递归方式。局部DNS服务器自己负责向其他DNS服务器进行查询,一般是先向该域名的根域服务器查询,再由根域名服务器一级级向下查询。最后得到的查询结果返回给局部DNS服务器,再由局部DNS服务器返回给客户端。

b)迭代解析

当局部DNS服务器自己不能回答客户机的DNS查询时,也可以通过迭代查询的方式进行解析,如图所示。局部DNS服务器不是自己向其他DNS服务器进行查询,而是把能解析该域名的其他DNS服务器的IP地址返回给客户端DNS程序,客户端DNS程序再继续向这些DNS服务器进行查询,直到得到查询结果为止。也就是说,迭代解析只是帮你找到相关的服务器而已,而不会帮你去查。比如说:baidu.com的服务器ip地址在192.168.4.5这里,你自己去查吧,本人比较忙,只能帮你到这里了。

 

7、HTTP协议

     超文本传输协议( Hyper Text Transfer Protocol )

    定义:● 是用于从万维网(www)服务器传输超文本到本地浏览器的传送协议

              ● 是 基于TCP/IP通信协议来传递数据(HTML、图片、查询结果等)的协议

              ● 是一个属于应用层的、面向对象的协议

              ● 由于其简捷、快速的适用于分布式超媒体信息系统

    工作原理:HTTP协议工作在客户端-服务端架构上。

                    浏览器作为HTTP客户端通过URL向HTTP服务端(即WEB服务器)发送请求,

                    WEB服务器根据接收到的请求后,向客户端发送响应信息。

    HTTP请求/响应的步骤:

               A、客户端连接到web服务器:一个HTTP客户端通常是浏览器,与web服务器的

                    HTTP端口(默认为80)建立一个TCP套接字连接

               B、发送HTTP请求:通过TCP套接字,客户端向web服务器发送一个文本的请求

                    报文,一个请求报文由请求行、请求头部、空行和请求数据组成

               C、服务器接收请求并返回HTTP响应:WEB服务器解析请求,定位请求资源。服

                     务器将资源副本写到TCP套接字,由客户端读取。一个响应由状态行、响应头

                     部、空行、响应数据组成

               D、释放TCP连接:若connection模式为close,则服务器主动关闭TCP连接,客户

                     端被动关闭连接,释放TCP连接;若connection模式为keepalive,则该连接

                     会保持一段时间,在该时间内可以接着接收请求

                E、客户端(浏览器)解析HTML内容:客户端首先解析状态行,查看表明请求是

                     否成功的状态代码  ;然后解析每一个响应头,向应头告知以下为若干字节的

                      HTML文档和文档的字符集。客户端读取响应数据HTML,根据HTML的语法

                      对其进行格式化,并在浏览器窗口中显示

     特点:● 无连接:其含义是限制每次连接只处理一个请求。服务器处理完客户的请求,并收

                   到客户的应答后,断开连接,可以节省传输时间

               ● 无状态:HTTP协议是无状态协议。无状态是指协议对于事务处理没有记忆能力。

                               缺少状态意味着如果后续处理需要前面的信息,则必须重传。这可能导致

                               每次连接传送的数据量增大。但是在服务器不需要先前信息时,他的应答

                               就较快

                ● 简单快速:客户向服务器发送请求时,只需传送请求方法和路径。

                                   请求方法常用POST  GET  HEAD,每种方法规定了客户与服务器联系的

                                   类型不同。

                                   HTTP协议简单,似的HTTP服务器的程序规模小,因而通信速度快

                 ● 灵活:HTTP允许传输任意类型的数据对象。正在传输的类型由Content-Type

                              标记

                 ● 支持B/S   C/S模式

    HTTP请求方法:HTTP1.0定义三种方法,即POST   GET   HEAD

                              HTTP1.1新增5种方法,OPTIONS   PUT  DELETE  TRACE  CONNECT

                 ● GET:请求指定页面信息,并返回实体主体

                 ● POST:向指定资源提交数据进行处理请求(例如提交表单、上传文件)

                 ● HEAD:类似GET请求,只不过返回的响应中没有具体的内容,用于获取报头

                 ● PUT:从客户端向服务器传送的数据取代指定的文档的内容

                 ●  DELETE:请求服务器删除指定的页面

                 ●  CONNECT:HTTP/1.1协议中预留给能够将连接改为管道式的代理服务器

                 ●  OPTIONS:允许客户端查看服务器的性能

                 ● TRACE:回显服务器收到的请求,主要用于测试或诊断

    POST和GET的区别

                 ● GET提交的数据会显示在地址栏中(即数据放在URL之后,以?分割URL和传输的

                    数据,参数之间以&相连);

                   POST提交的数据放在HTTP包的body中,因此地址栏不会显示提交的数据

                 ● GET提交的数据大小有限制(因为浏览器对URL的长度有限制);

                    POST提交的数据没有限制

                 ● GET方式提交数据会带来安全问题,比如登录页面,通过GET方式提交数据时,

                    用户名和密码会出现在地址栏上,如果页面可以被缓存或者其他人可以访问这台

                    机器,就可以从历史记录获得该用户的用户名和密码。

                     POST不存在安全问题

                ● GET方式需要使用Request.QueryString来取得变量的值

                    POST通过Request.Form来取得变量的值

8、SSL/TLS协议

     ● SSL(Secure Sockets Layer),安全套接层。上世纪90年代由网景公司设计。原先互

         联网使用的HTTP协议是明文的,存在很多缺点(传输内容会被偷窥(嗅探)和篡改)。

         SSL就是为了解决这些问题

      ● 到了1999年,SSL因为广泛应用,已经成为互联网上的事实标准。IETF就在那一年把

          SSL标准化,标准化名称改为TLS(Transport  Layer  Security),传输层安全协议

       ● SSL和TLS是同一个东西的不同阶段

9、HTTPS协议

     定义:HTTPS协议是HTTP协议和SSL/TLS协议的组合

   为什么要设计HTTPS成这样:

          ● 兼容性:基于TCP传输;单独使用新的协议将HTTP,把HTTP协议包裹起来

          ● 可扩展性

          ● 保密性(防泄密)

          ●  完整性(防篡改)

          ● 真实性(防假冒)

          ● 性能

   加密和解密的定义:

         “加密”的过程,就是把“明文”变成“密文”的过程。“解密”的过程就是将“密文”

          变成“明文”的过程。在这两个过程中,都需哟啊“密钥”。

   对称加密:“加密”和“解密”使用“相同密钥”

   非对称加密:加密”和“解密”使用“不同密钥”

   对称加密和非对称加密的优缺点

         ● ”非对称加密“的功能比”对称加密“的功能要多

         ● ”非对称加密“涉及复杂的数学问题,所以其性能相对”对称加密“要差

 

10、websocket协议

1)WebSocket 是Web应用程序的传输协议,是一个Html5协议,它提供了双向的,按序到达的数据流

2)WebSocket的连接是持久的,他通过在客户端和服务器之间保持双工连接,服务器的更新可以被及时推送给客户端,而不需要客户端以一定时间间隔去轮询 

3)WebSocket 连接允许客户端和服务器之间进行全双工通信,以便任一方都可以通过建立的连接将数据推送到另一端。

4)WebSocket 只需要建立一次连接,就可以一直保持连接状态,这相比于轮询方式的不停建立连接显然效率要大大提高

 

11、RPC( Remote Procedure Call,远程过程调用 )协议与HTTP协议的区别

远程过程调用直观说法就是A通过网络调用B的过程方法

首先了解OSI网络七层模型

  • 第一层:应用层。定义了用于在网络中进行通信和传输数据的接口;
  • 第二层:表示层。定义不同的系统中数据的传输格式,编码和解码规范等;
  • 第三层:会话层。管理用户的会话,控制用户间逻辑连接的建立和中断;
  • 第四层:传输层。管理着网络中的端到端的数据传输;
  • 第五层:网络层。定义网络设备间如何传输数据;
  • 第六层:链路层。将上面的网络层的数据包封装成数据帧,便于物理层传输;
  • 第七层:物理层。这一层主要就是传输这些二进制数据

五层协议结构里面是没有表示层和会话层的。应该说它们和应用层合并。

 

1)最本质的区别,就是RPC主要是基于TCP/IP协议的,而HTTP主要是基于HTTP协议的,HTTP协议是在传输层协议TCP之上的应用层,效率上,RPC当然是要更胜一筹

2)一般来说,RPC服务主要是针对大型企业的,而HTTP服务主要是针对小企业的,因为RPC效率更高,而HTTP服务开发迭代会更快

 

RPC服务

从三个角度来介绍RPC服务:RPC架构,同步异步调用、流行的RPC框架

1)RPC架构

包含了四个核心的组件,分别是Client ,Server,Client Stub以及Server Stub,这个Stub大家可以理解为存根。分别说说这几个组件:

  • 客户端(Client),服务的调用方。
  • 服务端(Server),真正的服务提供者。
  • 客户端存根,存放服务端的地址消息,再将客户端的请求参数打包成网络消息,然后通过网络远程发送给服务方。
  • 服务端存根,接收客户端发送过来的消息,将消息解包,并调用本地的方法

2)流行的RPC框架

(1)gRPC是Google最近公布的开源软件,基于最新的HTTP2.0协议,并支持常见的众多编程语言

(2)Thrift是Facebook的一个开源项目,主要是一个跨语言的服务开发框架

(3)Dubbo是阿里集团开源的一个极为出名的RPC框架,在很多互联网公司和企业应用中广泛使用

 

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

各种网络协议的类型、优缺点、作用 的相关文章

随机推荐

  • python调用resnet模型 对人脸图片进行特征提取,提取全连接层特征向量

    resnet feature extraction import os os chdir root caffe master examples import numpy as np import matplotlib pyplot as p
  • 汇编语言----mul指令

    mul指令 把操作数与AX相乘 最后存放在AX中 例子 mov ax 4 mov bx 5 mul bx ax 20
  • 动态设置src路径

    img class sidebar logo data return logo require assets dt logo png 如上动态设置图片的路径需要使用require 不然只能写上固定路径如下 img src assets dt
  • 排行榜|当 DB-Engines 遇见墨天轮国产数据库排行

    提到数据库排名 此时脑海里浮现出的是什么 是 DB Engines 还是墨天轮数据库排行 两者间有什么区别 下面来聊一下业内这两个知名数据库排名平台 本篇文章约有 3000 字 预计阅读时间 7 分钟 如阅读时间有限 请直接阅读文章末尾的对
  • 软件测试/测试开发丨容器编排K8S 下部署分布式UI自动化解决方案

    本文作者为霍格沃兹测试开发学社特约讲师乔巴 K8S目前是业界容器编排领域的事实标准 是几乎所有云原生架构的首选 目前随着云原生架构越来越流行 测试开发人员需要掌握K8S技术栈已经成为越来越迫切的需求 Kubernetes 开源于 2014
  • 敏捷开发-如何理解spring x

    2021年 不断思考一年 从领导风格转变让自己有点不适应 但是一直让自己谦卑心去学习每个人身上特长东西 接触过很多管理者 但是身上特点不足够明显的领导 我觉得不适合这个岗位 所以更多的调整心态去适应 找到每一个天 每个月 每一年战略目标自己
  • vc的编译过程

    对VC 工程编译过程的梳理 VC 的项目和解决方案文件解读 无非就是利用这些信息进行一个软件的编译 这些文件里面是存放的项目的配置和工程的组织 类似于makefile文件 但是只有VC 6 0的时候可以导出makefile文件 VC6的pr
  • python3 [爬虫入门实战]爬虫之scrapy爬取中国医学人才网

    自己第一次试着用scrapy进行爬取网页 总共爬下9240条数据 也就两分钟不到 400多页吧 用的比较简单 但是爬取成功后感觉成就感满满的 来张爬取结果图 爬取字段 hospitalName hospitalDesc hospitalSi
  • 【满分】【华为OD机试真题2023B卷 JS】乱序整数序列两数之和绝对值最小

    华为OD2023 B卷 机试题库全覆盖 刷题指南点这里 乱序整数序列两数之和绝对值最小 知识点排序数组 时间限制 1s 空间限制 256MB 限定语言 不限 题目描述 给定一个随机的整数 可能存在正整数和负整数 数组 nums 请你在该数组
  • X11协议基础与实践

    X11协议基础与实践 概念 X11 X Window System 是一种位图显示的视窗系统 X表示X协议 11是协议版本号 X 协议主要由 X server 和 X client 组成 l X server 管理主机上与显示相关的硬件设置
  • 对角线遍历

    param number matrix return number var findDiagonalOrder function matrix if matrix null matrix length 0 return let m matr
  • “40道高频区块链面试题”——我的一些看法

    最近看到了一篇文章如下 超强攻略 40道高频区块链面试题大放送 年底跳槽看过来 地址我也贴出来吧 https mp weixin qq com s 3Fa2XG4R11QDfMSAaBCngw 哦 CSDN的地址也出来了 https blo
  • vscode好用的前端插件和快捷键

    用到好用的vscode插件 总结一下 文章目录 一 常用主题 1 Material Theme主题 2 Community Material Theme主题 3 vscode icons 二 基础插件 1 Code Spell checke
  • java生成二维码图片(有logo),并在图片下方附文字

    logo配置类 Created by Amber Wang on 2017 11 27 17 25 import java awt public class LogoConfig logo默认边框颜色 public static final
  • 【数据结构】 实现 堆 结构 ---超细致解析

    目录 二叉树的性质 二叉树的存储结构 顺序存储 链式存储 堆的概念和性质 堆的实现 堆的初始化 堆的插入 向上调整函数 堆的删除 向下调整函数 向上建堆 向下建堆 TopK问题 二叉树的性质 在我们实现堆之前我们要知道堆的实现是依靠的是二叉
  • C# Thread启动线程时传递参数

    目录 1 不带参数 使用ThreadStart 2 带一个参数 使用ParameterizedThreadStart 3 带多个参数 1 不带参数 使用ThreadStart private void funcName public voi
  • Java反射学习记录

    一 反射概述 反射允许程序在运行中获取类的内部信息 例如构造器 成员变量 成员方法等 类加载之后 在堆中生成一个Class类的对象 一个类只有一个Class对象 这个对象包含类的完整结构信息 二 入门案例 通过配置文件中的内容生成指定类的对
  • 创建完整团队的艺术:敏捷如何改变我们与客户的工作方式

    来源 Ackarlix博客 http www ackarlix com 十年前 敏捷宣言 的作者们希望我们重新思考 我们作为程序员与客户协作的方式 我和我的博士学位顾问Robert Biddle以及James Noble都深受启发 充满希望
  • python --- multiprocessing实现多进程

    文章目录 进程理论知识 multiprocessing模块实现多进程 进程池 进程理论知识 进程就是正在运行的程序 是计算机进行资源分配的最小单位 各个进程都有独立的数据 相互隔离 Linux里进程的状态 R 运行状态runable S 中
  • 各种网络协议的类型、优缺点、作用

    一 网络协议的定义 网络协议是一种特殊的软件 是计算机网络实现其功能的基本机制 网络协议的本质是规则 即各种硬件和软件必须遵循的共同规则 网络协议并不是一套单独的软件 他融合于其他所有软件系统中 协议在网络中无所 不在 二 常用的网络协议