协议汇总 TCP、UDP、Http、Socket、Web Scoket、Web Service、WCF、API

server/2024/9/20 4:03:09/ 标签: tcp/ip, udp, http
http://www.w3.org/2000/svg" style="display: none;">

TCP:
  (1)位于OSI传输层,基于soap(信封)协议;

(2)数据格式是xml、Json;

(3)是面向连接的,需要先建立连接;

(4)TCP协议是一个可靠的传输协议,它可以保证传输的一个正确性,保证我们的不丢包不重复,而且数据是按顺序到达的,保证不丢包(握手需要三次,挥手却要四次);

(5)典型的 TCP/IP之上的协议有 FTP、MSMQ、TCP、Telnet、SMTP、SNTP,HTTP,HTTPS、Named 、Pipes 等;

(6)传输速度慢(原因之一:握手需要三次,挥手却要四次)。
UDP:
  (1)位于OSI传输层;

(2)数据格式是xml、Json;

(3)面向无连接的,不需要先建立连接;

(4)UDP协议是一个不可靠的协议,它是不保证我们的数据能够可靠完整的到达,他只是尽最大的努力去完成交付的,不保证不丢包;

(5)典型的 TCP/IP 应用有ip电话、流媒体、DNS、DHCP、SNMP(简单网络管理协议)等;

(6)传输速度快;

(7)实时性抗干扰性强。

Socket(套接字):
  (1)socket是一个抽象层,它将复杂的TCP、UDP操作简化成一下操作;

(2)表达式:套接字Socket=(IP地址:端口号);

(3)三种类型:

a.流套接字(SOCK_STREAM):
      流套接字用于提供面向连接、可靠的数据传输服务,使用了TCP协议进行数据的传输。
    b.数据报套接字(SOCK_DGRAM):
      提供一种无连接的服务。使用UDP协议进行数据的传输。
    c.原始套接字(SOCK_RAW):
      用来处理其他协议发送的数据(处理IP数据包)
Http协议(超文本传输协议):
  (1)位于OSI应用层,通常运行在TCP之上,可以使用UDP传输;

(2)缺陷:通信只能由客户端发起,HTTP 协议做不到服务器主动向客户端推送信息。

WebSocket:
  (1)WebSocket是一种在单个TCP连接上进行全双工通信的协议。

(2)WebSocket使得客户端和服务器之间的数据交换变得更加简单,允许服务端主动向客户端推送数据。

(3)在WebSocket API中,浏览器和服务器只需要完成一次握手,两者之间就直接可以创建持久性的连接,并进行双向数据传输。

(4)相比http协议可以实现服务器推送技术。

WebService:
  (1)基于SOAP或Http协议,Web Service = SOAP + HTTP + WSDL;很老的东西,只有.net framework支持,net core3.1运行时之后不在支持;

(2)优点支持映射自定义的【数据集(DataSet.xsd)】与WinForm结合使用。

注:DataSet.xsd和实体类用法一样,我没试过WCF和WebApi可不可以。

(3)WebService三要素:

a.SOAP (Simple Object Access Protocol):简易对象访问协议,soap用来描述传递信息的格式;

b.WSDL (WebServices Description Language):Web服务描述语言,用来描述WebService、以及如何访问WebService;

c.UDDI (Universal Description Discovery and Integration):通用描述、发现及整合,用来管理、分发、查询webService。
WCF:
  (1)WCF是对于ASMX,.Net Remoting,Enterprise Service,WSE,MSMQ等技术的整合,WCF最基本的通信机制是SOAP;

(2)可以基于TCP或者MessegeQueue来传输数据;

(3)WCF 支持多种通信协议 Http/Https 、TCP/UDP、MSMQ、命名管道、对等网、消息可达性、事务流等;

(4)WCF 支持多种消息传输格式 :text,binary,mtom,Json 等;

(5)由于WCF完全是由托管代码编写,因此开发WCF的应用程序与开发其它的.Net应用程序没有太大的区别,我们仍然可以像创建面向对象的应用程序那样,利用WCF来创建面向服务的应用程序。

注:WCF与Web Service的关系:Service是早期的技术实现了,也是soap的东西,采用的主要是http协议。微软的Web服务实现称为ASP.NET Web Service,采用Web Service 规范。它使用Soap简单对象访问协议来实现分布式环境里应用程序之间的数据交互。更新完善几代后,微软就推崇WCF了。

WebAPI(是一个比较宽泛的概念,这里指微软WebAPI):
  (1)基于http协议上;

(2)数据格式可以是xml,json,ATOM;

(3)支持MVC的特征,像路由、控制器、action、filter、模型绑定、控制反转(IOC)或依赖注入(DI),单元测试;

注:

SOAP:微软所提出的用于创建在因特网上传输的结构化格式数据或消息的协议。SOAP是使用WCF和XML格式的主要基础。

REST:并非是像SOAP那样的协议。它是用来构建Web Services的一种架构设计模式。Web API使用这种模式来构建Web服务。

补充:
  (1)WCF与WEBAPI的选择:

a.当你想创建一个支持消息、消息队列、双工通信的服务时,你应该选择WCF

b.当你想创建一个服务,可以用更快速的传输通道时,像TCP、Named Pipes或者甚至是UDP(在WCF4.5中),在其他传输通道不可用的时候也可以支持HTTP,你应该选择WCF。

c.当你想创建一个基于HTTP的面向资源的服务并且可以使用HTTP的全部特征时(比如URIs、request/response头,缓存,版本控制,多种内容格式),你应该选择Web API

d.当你想让你的服务用于浏览器、手机、iPhone和平板电脑时,你应该选择Web API


http://www.ppmy.cn/server/106556.html

相关文章

CRUD的最佳实践,联动前后端,包含微信小程序,API,HTML等(二)

CRUD老生常谈,但是我搜索了一圈,发觉几乎是着重在后端,也就是API部分! 无外乎2个思路 1.归总的接口,比如一个接口,实现不同表的CRUD 2.基于各自的表,使用代码生成器实现CRUD 个人来说是推荐2&am…

Linux下单网卡配置多个路由ip方法

Linux下配置网卡ip别名何谓ip别名 用windows的话说,就是为一个网卡配置多个ip。 什么场合增加ip别名能派上用场? 布网需要、多ip访问测试、特定软件对多ip的需要 下面通过几个例子简单介绍一下如何使用ifconfig命令给网卡配置ip别名。 一、首先为服务器…

C#实现数据采集系统-数据反写(2)消息内容处理和写入通信类队列

C#实现数据采集系统-数据反写 实现步骤 MQTT订阅,接收消息 链接-MQTT订阅接收消息反写内容写入通信类,添加到写入队列中实现Modbustcp通信写入 具体实现 2. 消息内容写入通信类,添加到写入队列中 在服务类DAqService中添加通信集合_modb…

MyBatis框架学习

系列文章目录 第一章 基础知识、数据类型学习 第二章 万年历项目 第三章 代码逻辑训练习题 第四章 方法、数组学习 第五章 图书管理系统项目 第六章 面向对象编程:封装、继承、多态学习 第七章 封装继承多态习题 第八章 常用类、包装类、异常处理机制学习 第九章 集…

NRC-SIM:基于Node-RED的多级多核缓存模拟器

整理自: 《NRC-SIM: A NODE-RED Based Multi-Level, Many-Core Cache Simulator》,由 Ezequiel Trevio 撰写,作为他在德克萨斯大学里奥格兰德河谷分校攻读电气工程硕士学位的部分成果。以下是论文的详细主要内容: 摘要(Abstract…

day41.动态规划

一.动态规划 121.买卖股票的最佳时机I 思路:dp[i][1] 表示第i天不持有股票所得最多现金 dp[i][0] 表示第i天持有股票所得最多现金 class Solution { public:int maxProfit(vector<int>& prices) {int len prices.size();if (len 0) return 0;vector<vector&…

强化学习第九章:策略梯度方法

强化学习第九章&#xff1a;策略梯度方法 思路优化函数优化函数的梯度求解 Monte Carlo policy gradient (REINFORCE)总结参考资料 思路 与上一章的思路类似&#xff0c; 状态-动作 对下标索引获取概率π(s, a)的方式转换为状态-动作对 或者状态输入到神经网络中&#xff0c;两…

DevOps实现CI/CD实战(三)- 集成Sonar Qube

七、集成Sonar Qube 1. SonarQube介绍 Sonar Qube是一个开源的代码分析平台&#xff0c;支持Java、Python、PHP、JavaScript、CSS等25种以上的语言&#xff0c;可以检测出重复代码、代码漏洞、代码规范和安全性漏洞的问题。 Sonar Qube可以与多种软件整合进行代码扫描&#…

TCP keepalive和HTTP keepalive区别

TCP 的 Keepalive 在传输层 是内核态实现的&#xff0c;是TCP的保活机制 当两端的TCP连接一直没有数据交互&#xff0c;就达到了触发TCP保活机制的条件&#xff0c;那么内核里的TCP协议栈就会发送探测报文。 如果对端程序是正常工作的&#xff0c;当TCP保活的探测报文发送到对…

wp-autopost-pro 3.7.8最新完美版

插件简介&#xff1a; 插件是wp-autopost-pro 3.7.8最新版本。 采集插件适用对象 1、刚建的wordpress站点内容比较少&#xff0c;希望尽快有比较丰富的内容&#xff1b; 2、热点内容自动采集并自动发布&#xff1b; 3、定时采集&#xff0c;手动采集发布或保存到草稿&#xff…

mysql数据表管理

数据表管理 如果将数据库管理系统与之前的文件管理系统做类比的话&#xff1a; 数据库管理系统文件管理系统数据库文件夹数据表文件夹下的文件 数据表的常见操作指令 进入数据库use 数据库&#xff0c;查看当前所有表:show tables 创建表结构 idnameemailage创建表的基础语…

Leetcode面试经典150题-13.罗马数字转整数

解法都在代码里&#xff0c;不懂就留言或者私信&#xff0c;这个是相对简单点的&#xff0c;感觉会在低职级面试的时候考 class Solution {/**罗马数字转整数还是比较简单的&#xff0c;基本思路&#xff1a;把罗马数字字符串转成字符数组同时创建一个int型数组&#xff0c;遍…

「C#」EF Core的“迁移”(Migration)

1、“迁移”是什么 “迁移”&#xff08;Migration&#xff09;我觉得可以理解为将实体类的变化 转换为对数据库修改的方案&#xff0c;应用迁移就是将这个修改方案应用到数据库。其次&#xff0c;迁移也记录了数据库的版本历史等信息。 2、添加迁移 2.1、dotnet cli tool …

设计模式之简单工厂模式

一 、定义 简单工厂模式是一种创建型设计模式&#xff0c;它提供一个统一的接口来创建对象&#xff0c;而不需要客户端直接实例化对象。简单工厂模式通过封装创建对象的逻辑&#xff0c;简化了对象的创建过程&#xff0c;同时也提高了代码的可维护性和扩展性。缺点是&#xff…

浅谈【数据结构】图-图的存储

目录 1、图的存储 2、邻接表 3、十字链表 谢谢帅气美丽且优秀的你看完我的文章还要点赞、收藏加关注 没错&#xff0c;说的就是你&#xff0c;不用再怀疑&#xff01;&#xff01;&#xff01; 希望我的文章内容能对你有帮助&#xff0c;一起努力吧&#xff01;&#xff01;…

计算机毕业设计pyspark+django+scrapy租房推荐系统 租房大屏可视化 租房爬虫 hadoop 58同城租房爬虫 房源推荐系统

用到的技术: 1. python 2. django后端框架 3. django-simpleui&#xff0c;Django后台 4. vue前端 5. element-plus&#xff0c;vue的前端组件库 6. echarts前端可视化库 7. scrapy爬虫框架 基于大数据的租房信息推荐系统包括以下功能&#xff1a…

选择排序【详解】

本期介绍&#x1f356; 主要介绍&#xff1a;排序中的选择排序。 文章目录 1. 前言2. 选择排序3. 优化选择排序 1. 前言 相信只要接触过C语言的同学都或多或少了解排序问题&#xff0c;其中最基本&#xff0c;且最为人所熟知的排序是&#xff1a;选择排序。下面我会带着大家重新…

JAVA后端程序拉取私人仓库的npm包并将该程序打包成jar包

当前有一个系统用于导出项目&#xff0c;而每次导出的项目并不可以直接使用&#xff0c;需要手动从npm私人仓库中获取一个npm包然后将他们整合到一起它才是一个完整的项目&#xff0c;所以目前我的任务就是编写一个java程序可以自动地从npm私人仓库中拉取下来那个模板代码到指定…

C语言文件操作

目录 文件指针 文件的打开和关闭 文件路径&#xff1a; 相对路径 绝对路径 文件的顺序读写 所有输出流&#xff1a; fputc&#xff1a; fgetc&#xff1a; fputs&#xff1a; fgets&#xff1a; fprintf&#xff1a; fscanf&#xff1a; fwrite&#xff1a; fre…

MVVM框架对比

框架名称 MvvmLigth CommunityToolkit.Mvvm Prism Caliburn.Micro 通知属性 ObservableObject ObservableObject BindableBase PropertyChangedBase ViewModel基类 ViewModelBase 无 无 Screen/Conductor 命令对象 RelayCommand RelayCommand DelegateComman…