1.Socket,TCP,UDP,HTTP,WebSocket的区别
socket:TCP、UDP,HTTP 底层通信都是通过 socket 套接字实现 。
TCP,UDP:是一种传输方式,比如去北京,可以选择飞机、火车等交通方式。
HTTP,XMPP则是数据传输格式协议。 HTTP协议是非持久化的,单向的网络协议,在建立连接后只允许浏览器向服务器发出请求后,服务器才能返回相应的数据。当需要即时通讯时,通过轮询在特定的时间间隔(如1秒),由浏览器向服务器发送Request请求,然后将最新的数据返回给浏览器。这样的方法最明显的缺点就是需要不断的发送请求,而且通常HTTP request的Header是非常长的,为了传输一个很小的数据 需要付出巨大的代价,是很不合算的,占用了很多的宽带。
缺点:会导致过多不必要的请求,浪费流量和服务器资源,每一次请求、应答,都浪费了一定流量在相同的头部信息上
WebSocket:同HTTP一样也是应用层的协议,但是它是一种双向通信协议,是建立在TCP之上的。然而WebSocket的出现可以弥补这一缺点。在WebSocket中,只需要服务器和浏览器通过HTTP协议进行一个握手的动作,然后单独建立一条TCP的通信通道进行数据的传送。
2.HTTP系列演进
方式 | 说明 |
---|---|
HttpWebRequest | .NET早期版本,同步方式(20210809更新:Net 5.x 已支持 https://docs.microsoft.com/en-us/dotnet/api/system.net.httpwebrequest.keepalive?view=net-5.0) |
WebClient | HttpWebRequest的封装简化版,同步方式.不建议使用 WebClient 类进行新开发。 请改用 System.Net.Http.HttpClient 类。public class WebClient : System.ComponentModel.Component |
HttpClient | .NET4.5以后,异步方式 |
HttpClientFactory | .NET Core2.1 |
CHANGES SINCE .NET CORE 2.1
1.HttpWebRequest
HttpWebRequest实例对应于一个Url的一次请求.
public class HttpWebRequest : System.Net.WebRequest
2.HttpClient
微软在.NET Framework 4.5中为大家带来了System.Net.Http.HttpClient.HttpClient与众不同的地方是同一个HttpClient实例可以发出多次请求,每次请求是可以是完全不同的URL。
3.WebSocket
Prerequisites
ASP.NET Core 1.1 (does not run on 1.0)
Any OS that ASP.NET Core runs on:
Windows 7 / Windows Server 2008 and later
Linux mac OS
Exception: If your app runs on Windows with IIS, or with WebListener, you must use Windows 8 / Windows Server 2012 or later。For supported browsers, see http://caniuse.com/#feat=websockets.
When to use itUse WebSockets when you need to work directly with a socket connection. For example, you might need the best possible performance for a real-time game.ASP.NET SignalR provides a richer application model for real-time functionality, but it runs only on ASP.NET, not ASP.NET Core. A Core version of SignalR is under development; to follow its progress, see the GitHub repository for SignalR Core. https://github.com/aspnet/SignalR .
WebSocket抓包分析
建立连接的流程概述
步骤1:客户端和服务端完成三次握手建立TCP连接,这一点和HTTP协议没有差异
步骤2:由客户端发起HTTP请求,升级协议为WebSocket
步骤3:只需完成一次握手后,就可以实现客户端和服务端主动发送消息内容
步骤4:客户端发送关闭帧,关闭所有连接
原文链接:https://blog.csdn.net/m0_59464259/article/details/120963829
WebSockets
WebSockets is a bidirectional streaming protocol built on HTTP/1.1 and later adapted to HTTP/2.
SPDY
SPDY is the precursor to HTTP/2 and is commonly used in Kubernetes environments.
https://microsoft.github.io/reverse-proxy/articles/websockets.html
C# HttpListener
https://www.zetcode.com/csharp/httplistener/
C# HttpClient Series
- C# HttpClient Series:how to use HttpClient correctly in .Net core
- C# HttpClient Series:HEAD/GET/Post/authentication/json/DownLoad/ request
- C# HttpClient Series:Make HttpClient Request cookie like browser with c#
- C# HttpClient Series:HttpClient用HttpClientHandler添加Refer、Cookie及UserAgent请求头,解析中文GBk编码
- C# HttpClient Series:how to use HttpClient correctly in .Net core
- Make HTTP requests emulate a web browser using IHttpClientFactory in ASP.NET Core
- JavaScript深入之执行上下文
- JavaScript深入之闭包
- JavaScript深入之参数按值传递
- JavaScript深入之call和apply的模拟实现
- JavaScript深入之bind的模拟实现
- JavaScript深入之new的模拟实现
- JavaScript深入之类数组对象与arguments
- JavaScript深入之创建对象的多种方式以及优缺点
- JavaScript深入之继承的多种方式以及优缺点
- JavaScript深入系列15篇正式完结!
- JavaScript深入之浮点数精度
- JavaScript深入之头疼的类型转换(上)
- JavaScript深入之头疼的类型转换(下)