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

Linux学习(15)-网络编程:滑动窗口、拥塞控制、udp

本节学习内容

1.滑动窗口(1.滑动窗口的作用2.如果如果接收端填充的接收窗口为0,发送端接下来怎么处理3.糊涂窗口综合征4.tcp中nagle算法是什么)

2.拥塞控制

3.udp协议特点及编程流程

本节可能会用到的指令

ifconfig查看自己的ip地址

ping+ ip地址验证通信是否连接

netstat -natp显示当前进程的端口号及数据

一、滑动窗口

1.滑动窗口的作用:

TCP协议是利用滑动窗口实现流量控制。(流量控制:就是是发送方的发送速率不要太快,使接收方及时接收)

在TCP报头中,有一段叫做通告窗口,这一字段由接收端填充,用于告诉发送端自己的接收缓冲区还可以接受多少数据。这个窗口位置会随发送端数据发送和接收端数据接收而不断滑动,所以称为滑动窗口。

2.如果接收端填充的接收通知窗口为0,发送端接下来怎么处理?

假设A主机向B主机发送数据,当B的窗口为0,则A不能再向B发送数据。只能等到B的应用进程将缓存中的数据清空,才能接受新的值。但这里有一个问题,当B的应用进程清空缓存后,并不会主动告知A(TCP当且仅当在它有数据需要确认和发送时才会发送报文段给主机A),这样主机A不可能知道主机B的接收缓存已经有新的空间了。

解决:TCP规范中规定,当主机B的接受窗口为0时,主机A继续发送只有一个字节数据的报文段。这个报文段会被接收方确认。最终缓存将开始清空,并且确认报文段将包含一个非0的值。

3.什么叫糊涂窗口综合征

当发送端应用进程产生数据很慢、或接收端应用进程处理接收缓冲区数据很慢,或二者都有;就会使应用进程间传送的报文段很小,特别是有效载荷很小。 极端情况下,有效载荷可能只有1个字节;而传输开销有40字节(20字节的IP头+20字节的TCP头) 这种现象就叫糊涂窗口综合症

解决方法:

延时确认

当一个报文段到达时并不立即发送确认。接收端在确认收到的报文段之前一直等待,直到入缓存有足够的空间为止。延迟的确认防止了发送端的TCP滑动其窗口。当发送端的TCP发送完其数据后,它就停下来了。这样就防止了这种症状。

4.TCP中Nagle算法是什么?

nagle算法的核心思想是允许网络中最多只能有一个小分组被发送,而待发送的其它小分组会被重新分组成一个”较大的”小分组,等收到上一个小分组的应答后再发送

二、拥塞控制

1.什么是拥塞控制?

所谓的拥塞控制是防止过多的数据注入到网络中而使路由器或链路过载。

2.拥塞控制的几种方法

慢启动

拥塞避免

快速重传

快速恢复

如图

三、udp

1.udp协议特点

UDP提的为无连接、不可靠的数据报服务

无连接:可以做到多个客户端同时向服务器端发送数据(客户端不需要申请与服务器端建立连接)

不可靠:发送给对方的数据,如果对方一次性收不完就会丢失

udp协议各端流程如图

2.udp协议编程

udp服务器端代码如下

udp客户端如下

 

运行结果如下

4.tcp协议和udp协议应用

tcp:TCP适用于对准确性要求较高的场景,如网页浏览、电子邮件和文件传输等

udp:UDP由于其简单性和不可靠性,在网络游戏、流媒体和实时通信等场景中广泛应用


http://www.kler.cn/a/282619.html

相关文章:

  • Spark RDD sortBy算子什么情况会触发shuffle
  • SpringBoot(5)-SpringSecurity
  • 使用React和Vite构建一个AirBnb Experiences克隆网站
  • Linux之vim全选,全部复制,全部删除
  • 二分搜索的三种方法
  • 【环境配置】macOS配置jdk与maven
  • HTML 总结
  • 数据挖掘之分类算法
  • Java框架Spring(一)
  • 向量数据库Faiss的搭建与使用|Faiss|向量数据库|高效检索|机器学习|大规模数据
  • 大模型Prompt提示设计简介(2):有效的建议
  • 在C语言中使用POSIX线程库(pthread)实现多线程编程
  • Redis多线程特性
  • CSS中禁用DOM事件
  • OpenCV绘图函数(12)绘制直线函数 line()的使用
  • 数学基础 -- 线性代数之向量基本概念
  • Flask+LayUI开发手记(五):树型表格实现数据展示与编辑
  • 开源 AI 智能名片 O2O 商城小程序在社交私域中的圈层价值
  • 数据库:笔记03SQL
  • geodatatool(地图资源工具)下载高德数据及数据共享
  • 设计模式之工厂模式和策略模式的区别
  • MFC工控项目实例之八选择下拉菜单添加打钩图标
  • 提高 Web 应用程序安全性的标准
  • Scrapy添加代理IP池:自动化爬虫的秘密武器
  • 大数据技术之Flume 参数调优(12)
  • selenium滚动到页面底部