当前位置: 首页 > wzjs >正文

iis做网站的流程专业网站seo推广

iis做网站的流程,专业网站seo推广,系统开发工具有哪些,衡水网站建设衡水TCP/IP网络模型 最上层的是应用层,也就是我们日常可以接触到的,它会给数据添加对应的头部,并传输给传输层,应用层是我们日常会接触到的,比如HTTP,FTP,Telnet,DNS,SMTP。…

TCP/IP网络模型

最上层的是应用层,也就是我们日常可以接触到的,它会给数据添加对应的头部,并传输给传输层,应用层是我们日常会接触到的,比如HTTP,FTP,Telnet,DNS,SMTP。HTTPS默认端口是443.

传输层有两个协议:TCP和UDP,TCP常用于网络请求等可靠性要求高的场景下,UDP的特点是速度快,但可靠性较低,常用于VPN,域名查询的场景下。

TCP建立连接需要三次握手,客户端发送连接请求,服务器回应请求,客户端再次发送确认连接的请求。

客户端 ------SYN------>服务器(SYN=1,ACK=0,此时客户端还未连接,正发起连接请求)

客户端 <---SYN+ACK---服务器(SYN=1,ACK=1,此时服务器收到了连接请求,同意建立连接)

客户端 ------ACK------>服务器(SYN=0,ACK=1,连接已建立无需发送SYN去建立,只需发送ACK进行确认)

TCP断开连接需要四次挥手,客户端发送断开连接的请求,服务器回应请求表示可以,之后服务器再次发送断开连接的确认请求,客户端确认该请求。

客户端------FIN------>服务器(FIN=1,ACK=0,客户端发起断开连接的请求)

客户端<------ACK------服务器(FIN=0,ACK=1,服务器收到请求,向客户端确认请求,但还有部分数据未传完暂不断开)

客户端<------FIN------服务器(FIN=1,ACK=1,此时服务器的数据全部传输完成,可以断开连接)

客户端------ACK------>服务器(FIN=0,ACK=1,客户端确认收到了服务器的确认信息)

数据报文

数据报文是一次网络传输的基本单位,它包含多个部分:序列号,确认号,窗口,保留位,校验和。序列号用来打标记保证顺序是正确的,因为一次请求会被拆分为多个报文,确认号是告知接收方回应的标记,做到一一对应,保留字段包括刚刚提到的ACK,FIN,SYN,校验和是用来确认数据是否被篡改,如何无法通过校验会被丢弃,窗口是数据传输的吞吐量,受限于发送方和接收方的管道大小。

什么是拥塞窗口?

这是一种网络传输的过程,在初始阶段通信窗口的数量是成指数性增长,当达到临界值后,进行入拥塞避免阶段开始线性增长,当增长到出现丢包的情形时传输数量减半,并继续线性增长,如果接收到3次ACK请求,传输窗口的数量减半并加3,再进入线性增长。

网络层最常使用的是IP协议,这一层的职责是接收传输层的报文,将它封装为IP数据包,添加IP头。

两台电脑通过IP地址和端口号就可以建立Socket连接,一台电脑最多可以拥有2 ^ 16个端口。

通过在控制台中输入netstat -nao获取电脑的TCP和UDP连接,已经对应的PID。

Socket通信

Socket位于哪一层?

在 OSI 模型中,Socket 通常被认为是传输层的一部分,因为它直接与传输层协议(如 TCP 或 UDP)交互。

但从功能上看,Socket 更像是传输层和应用层之间的桥梁,因为它为应用层提供了访问传输层服务的接口。

如何用C#实现Socket通信?

这里需要用到一个第三方的类库TouchSocket,它比微软原生的Socket通信库多了很多功能,像是断点重连, 健康活性检验等等。

1、首先在Nuget上下载最新版的TouchSocket 3.1.1

2、创建一个TcpClient服务,进行事件绑定,配置插件,在Received事件中可以获取到服务器的反馈,发送数据通过Send方法

    // TCP客户端var _tcpClient = new TcpClient();#region 事件绑定_tcpClient.Connected = (client, e) =>{this.Invoke(new Action(() =>{this.richTextBoxMsgLog.AppendText($"连接到服务器".StringFormatLog() + Environment.NewLine);}));// 改变UI状态this._isOpen = true;this.Invoke(new Action(() => {this.btnOpen.Text = "断开连接";this.SwitchCheckBoxForSetting(false);}));return EasyTask.CompletedTask;};_tcpClient.Closed = (client, e) =>{this.Invoke(new Action(() =>{this.richTextBoxMsgLog.AppendText($"断开与服务器的连接".StringFormatLog() + Environment.NewLine);}));// 断开网络this._tcpClient.Close();this._isOpen = false;this.Invoke(new Action(() => {this.btnOpen.Text = "连接";this.SwitchCheckBoxForSetting(true);}));return EasyTask.CompletedTask;};_tcpClient.Received = (client, e) =>{string mes = e.ByteBlock.Span.ToString(Encoding.UTF8);this.Invoke(new Action(() =>{this.richTextBoxMsgLog.AppendText($"从服务器收到信息:{mes}".StringFormatLog() + Environment.NewLine);}));return EasyTask.CompletedTask;};#endregion// 配置断开重连机制var config = new TouchSocketConfig();config.ConfigurePlugins(plugins =>{// 自动重连plugins.UseTcpReconnection().UsePolling(TimeSpan.FromSeconds(1));});// 连接服务器await this._tcpClient.SetupAsync(config);await _tcpClient.ConnectAsync($"{ip}:{port}");

3、创建一个TcpServer服务,用于接收客户端发送的消息,代码和客户端的差不多。

    TcpService _service = new TcpService();// 创建一个TCP服务器_service.Connecting = (client, e) =>{return EasyTask.CompletedTask;};_service.Connected = (client, e) =>{this.Invoke(new Action(() =>{this.richTextBoxMsgLog.AppendText($"有客户端连接:{client.IP}:{client.Port}".StringFormatLog() + Environment.NewLine);}));return EasyTask.CompletedTask;};_service.Closing = (client, e) =>{return EasyTask.CompletedTask;};_service.Closed = (client, e) =>{this.Invoke(new Action(() =>{this.richTextBoxMsgLog.AppendText($"有客户端断开连接:{client.IP}:{client.Port}".StringFormatLog() + Environment.NewLine);}));return EasyTask.CompletedTask;};_service.Received = (client, e) =>{//从客户端收到信息var mes = e.ByteBlock.Span.ToString(Encoding.UTF8);this.Invoke(new Action(() =>{this.richTextBoxMsgLog.AppendText($"客户端:{client.IP}:{client.Port},发送消息:{mes}".StringFormatLog() + Environment.NewLine);}));return EasyTask.CompletedTask;};var config = new TouchSocketConfig();config.ConfigurePlugins(plugins =>{// 健康活性检验插件(CheckClearPlugin)用于检测当前连接是否有正常的数据交流,如果没有,则主动断开连接。plugins.UseCheckClear().SetCheckClearType(CheckClearType.All).SetTick(TimeSpan.FromSeconds(60)).SetOnClose(async (c, t) =>{await c.ShutdownAsync(System.Net.Sockets.SocketShutdown.Both);await c.CloseAsync("超时无数据");});});await this._service.SetupAsync(config);await this._service.StartAsync($"{ip}:{port}");

http://www.dtcms.com/wzjs/391972.html

相关文章:

  • 北京企业网站设计公司沈阳疫情最新消息
  • 网站上面图片上传尺寸淘宝指数入口
  • 织梦怎么做企业网站搜索引擎的网址有哪些
  • 网站猜你喜欢代码环球军事新闻最新消息
  • 做国外零售的话是在什么网站开店友情链接实例
  • 西藏建设厅官方网站公示网佛山百度seo代理
  • 营销型企业网站推广的方法有哪些网站推广的作用
  • 云互联的网站名字怎么做网络广告推广
  • 章丘做网站公司的seo是什么意思
  • 关于做奶妈的视频网站在哪里推广自己的产品
  • 外贸网站优化怎么做太原seo团队
  • 邯郸菜鸟网站建设nba最新交易
  • 谷歌推广网站建设网络营销的营销策略
  • 怎么模仿一个网站长春网络推广公司哪个好
  • 网站的360快照怎么做如何做好网络营销
  • 广州 深圳 外贸网站建设佛山百度关键词seo外包
  • 图书馆管理网站建设logo南宁网络推广平台
  • 婚恋网站建设百度广告推广怎么做
  • 网站tkd怎么做最新的网络营销的案例
  • 公司网站文件夹设计网络营销课程学什么
  • .net给网站做短信验证链接转二维码
  • 南京哪里有做公司网站的百度投诉中心电话
  • app平台网站搭建农产品网络营销策划书
  • 公司变更地址流程seo技术外包公司
  • 做的很酷炫的网站哪有网页设计公司
  • 自己用钢管做里闪弹枪视频和照网站找推网
  • 个人网站可以做app吗投稿网
  • 做画册封面的网站电商代运营一般收多少服务费
  • 网站建设权利义务小学生关键词大全
  • 平台网站如何做推广方案网络营销过程步骤