首页 > 其他分享 >协议汇总 TCP、UDP、Http、Socket、Web Scoket、Web Service、WCF、API

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

时间:2024-08-28 15:24:01浏览次数:7  
标签:协议 UDP Http Service Web TCP WCF

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

标签:协议,UDP,Http,Service,Web,TCP,WCF
From: https://blog.csdn.net/u013400314/article/details/141558272

相关文章

  • nginx访问控制、用户认证、https
    环境rockylinux9虚拟机,时钟同步已完成,基本工具,命令已安装192.168.100.111nginx服务器192.168.100.112客户端访问192.168.100.114客户端访问nginx已经配置完成做了平滑升级一、nginx访问控制默认允许所有主机访问stub_status模块stub_status模块主要作用于查看ng......
  • http和https
    C++遍历数组的有几种方式?answer:1、下标遍历,传统的遍历方式2、指针遍历,数组本身也是指针,所以可以使用指针进行遍历3、for(range-based),用于同一类型的范围数据进行遍历4、迭代器,使用迭代器iter的函数集可以进行较快的遍历,自动回收。http和https的区别?answer:主要区别后置增加......
  • Spring Boot Web开发实践:请求与响应参数的使用方法
    主要介绍了请求响应的简单参数、实体参数、数组集合参数、日期参数、路径参数等各自的使用方法!!!文章目录前言Postman简单参数原始方式 SpringBoot方式实体参数数组集合参数日期参数 路径参数总结前言主要介绍了请求响应的简单参数、实体参数、数组集合参数......
  • Web大学生网页作业成品——香奈儿香水介绍网页设计与实现(HTML+CSS)(1个页面)
    ......
  • 【Shell脚本】监控 httpd 的进程数,根据监控情况做相应处理
    #!/bin/bash################################################################################################################################需求:#1.每隔10s监控httpd的进程数,若进程数大于等于500,则自动重启Apache服务,并检测服务是否重启成功#2.若未成功则需......
  • 【Shell脚本】根据web访问日志,封禁请求量异常的IP,如IP在半小时后恢复正常,则解除封禁
    #!/bin/bash#####################################################################################根据web访问日志,封禁请求量异常的IP,如IP在半小时后恢复正常,则解除封禁####################################################################################lo......
  • 在浏览器上使用transformers.js运行(WebGPU)RMBG-1.4进行抠图(背景移除)
    在浏览器上使用transformers.js运行(WebGPU)RMBG-1.4进行抠图(背景移除)说明:首次发表日期:2024-08-28官方Github仓库地址:https://github.com/xenova/transformers.js/tree/main/examples/remove-background-client准备下载onnx模型文件:https://huggingface.co/briaai/RMBG-1.......
  • 使用Kotlin+协程+Flow+Retrofit+OkHttp搭建一套网络请求工具
    文章目录一、前言二、搭建Java工程1.打开AndroidStudio建一个Android工程2.修改该工程的build.gradle文件为Java工程,并配置如下:3.搭建一个RetrofitUtils请求工具类,这都是常规操作了,如下4.建一个NetWorkAPi作为Retrofit请求接口:5.建一个WXRepository为了和A......
  • Asp.Net Core中Typed HttpClient高级用法
    另一个常见的需求是根据不同的服务接口创建不同的HttpClient实例。为了实现这一点,ASP.NETCore提供了TypedHttpClient的支持。下面是使用TypedHttpClient的示例代码:publicinterfaceIExampleService{Task<string>GetData();}publicclassExampleService:IExampl......
  • 使用idea快速创建springbootWeb项目(springboot+springWeb+mybatis-Plus)
    idea快速创建springbootWeb项目详细步骤如下1)创建项目2)选择springboot版本3)添加web依赖4)添加Thymeleaf5)添加lombok依赖然后点击create进入下一步双击pom.xml文件6)添加mybatis-plus依赖        这里使用的springboot版本比较新,mybatis-plus-boot-star......