首页 > 系统相关 >Linux学习(15)-网络编程:滑动窗口、拥塞控制、udp

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

时间:2024-08-29 20:52:56浏览次数:13  
标签:udp 窗口 滑动 报文 TCP 发送 Linux 15

本节学习内容

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由于其简单性和不可靠性,在网络游戏、流媒体和实时通信等场景中广泛应用

 

标签:udp,窗口,滑动,报文,TCP,发送,Linux,15
From: https://blog.csdn.net/weixin_71180088/article/details/141575383

相关文章

  • Linux提权-70种sudo提权汇总
    Linux提权-sudo命令有sudo的权限,我们该如何进行提权呢?跟着红队笔记大佬,汇总了一下当我们有sudo-l时,70条命令可以提权的sudo风暴视频连接:https://www.bilibili.com/video/BV1DV4y1U7bT/?share_source=copy_web&vd_source=385653377c3ce2be6b055cc4a2e9c3cf1)CVE-2019-14......
  • TCP/IP、UDP/IP协议
    参考链接1、OSI七层模型(1)OSI含义“OSI模型,即开放式通信系统互联参考模型(OpenSystemInterconnectionReferenceModel),是国际标准化组织(ISO)提出的一个试图使各种计算机在世界范围内互连为网络的标准框架,简称OSI。”(2)OSI定义了网络互连的七层模型(物理层、数据链路层、网络层......
  • linux centos 启动 nginx 几种方式
    在CentOS上安装Nginx的方法有几种,具体取决于你的需求和系统版本。以下是几种常见的方法:1.使用EPEL仓库安装(推荐)安装EPEL仓库(如果还没有安装):sudoyuminstallepel-release安装Nginx:sudoyuminstallnginx启动Nginx:sudosystemctlstartnginx设置Nginx开机自启:sudos......
  • Linux用户管理
    Linux用户管理Linux下面我们管理系统通过对应的用户.我们当前是root用户.我们就需要有不同类型的用户,然后通过不同的用户管理系统.未来工作中的70%故障,安全事故,基本内部误操作导致.Linux是多用户系统,多个用户登录一般不会互相影响.1.分类UID,GID⭐⭐⭐⭐⭐UID......
  • 面试必备!15个SSH服务器经典问题,助你轻松过关斩将!
    SSH(SecureShell)是Linux系统中最常用的远程管理工具之一,掌握它是每个运维工程师的必备技能。在面试中,关于SSH服务器的相关问题经常会被问到。本文将列出15个常见的SSH服务器面试题,并提供简要解答,帮助你在面试中脱颖而出。什么是SSH?为什么要使用SSH而不是Telnet?在ssh......
  • (7.15-7.21)发一篇博文赢百元奖品!前10有奖!【已结束】
    近期接到刷量举报,参赛的博主一定要看清楚活动规则,刷量行为一经发现取消活动资质。文章内容特别出彩的,才会酌情考虑是否只去掉刷的文章量。AIGC这个话题,让人既熟悉又陌生!你用过哪些AIGC领域的工具?分享AIGC领域的产品测评使用、底层技术分析、应用案例...让大家一起认识AIGC。围绕AIG......
  • Linux文件属性
    Linux文件属性1.inode&block1.1inodeindexnode索引节点,类似于书籍的目录,默认是256biteinode号码:系统可以通过文件名找出文件的inode号码,进而找出文件与文件内容ls-lhi查看文件的inode号码(较少使用)inode包含:文件属性信息(文件类型,大小,权限,所有者,用户组,......
  • 【Linux】Linux Bash Shell 教程
    LinuxBashShell入门教程Linuxbash(Bourne-AgainSHell)是一种为GNU操作系统编写的命令行解释器,它是大多数Linux发行版中最常用的shell。Bash提供了一种强大的方式来控制和管理操作系统,支持命令历史记录、别名、管道、重定向、变量、条件判断、循环以及自定......
  • 信息学奥赛初赛天天练-78-NOIP2015普及组-基础题3-中断、计算机病毒、文件传输协议FTP
    NOIP2015普及组基础题38所谓的“中断”是指()A操作系统随意停止一个程序的运行B当出现需要时,CPU暂时停止当前程序的执行转而执行处理新情况的过程C因停机而停止一个程序的运行D电脑死机9计算机病毒是()A通过计算机传播的危害人体健康的一种......
  • linux mount net fs
    linuxmountnetfsnfsubuntu安装nfs:sudoaptinstallnfs-kernel-server编辑/etc/exports文件,添加如下内容:/home/wyk/nfs*(rw,sync,no_root_squash,no_subtree_check)重启nfs服务sudo/etc/init.d/rpcbindrestartsudo/etc/init.d/nfs-kernel-serverrestart开......