计算机网络--TCP、UDP相关概念

news/2024/5/18 14:00:58 标签: tcp/ip, 计算机网络, udp

目录

一、TCP拥塞控制

几种拥塞控制的方法:

(1)慢启动

 (2)快速恢复

 (3)快速重传

 二、三次握手、四次挥手抓包

三、UDP 的编程流程

概念

部分代码

特点:


一、TCP拥塞控制

计算机网络中的链路容量(即带宽)、交换结点中的缓存和处理机等,都是网络的 资源。在某段时间,若对网络中某一资源的需求超过了该资源所能提供的可用部分, 网络的性能就要变坏。这种情况就叫做拥塞。 所谓拥塞控制就是防止过多的数据注 入到网络中,这样可以使网络中的路由器或链路不致过载。拥塞控制是一个全局性的 过程,涉及到所有主机,所有路由器,以及与降低网络传输性能有关的所有因素。

几种拥塞控制的方法:

慢开始 拥塞避免 快速重传 快速恢复

(1)慢启动

 (2)快速恢复

 (3)快速重传

 二、三次握手、四次挥手抓包

sudo tcpdump -i ens33 -nt '(src 192.168.31.143 and dst 192.168.31.213) or (src192.168.31.213 and dst 192.168.31.143 ) '

三、UDP 的编程流程

概念

无链接的,不可靠的,数据报服务

socket()用来创建套接字,使用 udp 协议时,选择数据报服务 SOCK_DGRAM。 sendto()用来发送数据,由于 UDP 是无连接的,每次发送数据都需要指定对端的地 址(IP 和端口)。 recvfrom()接收数据,每次都需要传给该方法一个地址结构来存 放发送端的地址。recvfrom()可以接收所有客户端发送给当前应用程序的数据,并 不是只能接收某一个客户端的数据。

部分代码

//UDP 数据读写:

ssize_t recvfrom(int sockfd, void *buff, size_t len, int flags,

struct sockaddr* src_addr, socklen_t *addrlen);

ssize_t sendto(int sockfd, void *buff, size_t len, int flags,

struct sockaddr* dest_addr, socklen_t addrlen);

//recvfrom()读取 sockfd 上的数据, buff 和 len 参数分别指定读缓冲区的位置和大小 //src_addr 记录发送端的 socket 地址

//addrlen 指定该地址的长度

//sendto()往 socket 上写入数据, buff 和 len 参数分别指定写缓冲区的位置和 数据长度 //dest_addr 指定接收数据端的 socket 地址 //addrlen 指定该地址的长度

特点:

 无链接的,不可靠的,数据报服务;

1)多个客户端可以同时给服务器发送数据(因为没有建立链接,也就是说服务器没有只 和某一个客户端建立链接);

2)服务器关掉再打开是可以接收数据的; (因为没有建立链接)

3)数据报接收的特点:

 UDP 数据报服务特点: 发送端应用程序每执行一次写操作, UDP 模块就将其封装 成一个 UDP 数据报发送。

接收端必须及时针对每一个 UDP 数据报执行读操作,否 则就会丢包。

并且,如果用户没有指定足够的应用程序缓冲区来读取 UDP 数据,则 UDP 数据将被截断。

也就是udp协议sendto和recvfrom的次数是相同的,不会出现沾包;


http://www.niftyadmin.cn/n/186120.html

相关文章

ChatGPT,云服务商们的全新“云”阵地?

随着ChatGPT在全球范围内的“大火”,围绕“AI”的产业浪潮再次席卷整个TMT行业。但从目前的市场反馈来看,大众对于ChatGPT在C端市场的应用体验反应更直接一点,而对于技术相对晦涩、难以感知的云计算市场,则反应比较冷淡。 但在这…

Android ART虚拟机 堆Heap类构造函数

前言 本文主要介绍Heap的构造函数,从构造函数里大量使用各种Space,可以看出ART虚拟机的一个重要的特点就是大量使用映射内存。主要代码在art/runtime/gc/heap.cc里。 第一部分 主要完成了boot镜像所需art文件的加载,然后得到一系列的Image…

ASM字节码基础

ASM字节码基础一、几个重要概念1.1 内部名1.2 类型描述符1.3 方法描述符存疑:有范型类型怎么表示?1.4 回头看,总结内部名、类型描述符、方法描述符三个概念的关系二、ASM的核心api2.1 ClassReader: 读取class二进制字节码文件到内存中2.2 Cla…

Go语言精修(尚硅谷笔记)第十二章

十二、单元测试 传统方法的缺点分析 1 ) 不方便, 我们需要在main函数中去调用,这样就需要去修改main函数,如果现在项目正在运行,就可能去停止项目。 2 ) 不利于管理,因为当我们测试多个函数或者多个模块时,都需要写…

【创作赢红包】喂,鬼仔,你还在瞒着我偷偷使用强制相等

我们都知道JavaScript有 (强制相等)和(严格相等)运算符进行比较。但你可能不知道它们两个究竟有什么不同,并且更重要的是,在 js 引擎中使用它们的时候发生了什么? 前面我们提到 是强制比较。强制意味着 VM 试图将进行比较的双方强制为相同的类型&…

Java中的集合(二)

1、Map接口概述 (1)Map接口存储一组成对的键(key)——值(value)对象,提供key到value的映射,通过key来检索; (2)Map接口中的key不要求有序&#…

Java初阶(继承)

文章目录一、什么是继承二、父类的成员访问(super)2.1 访问父类的成员变量2.2 访问父类的成员方法2.3 访问父类的构造方法三、执行顺序问题四、继承方式 final4.1 继承方法4.2 final五、继承与组合一、什么是继承 把对象的共性抽取出来,放在…

Deep Learning for Identifying Metastatic Breast Cancer识别转移性乳腺癌_论文笔记

摘抄: 1.Standardized, accurate and reproducible pathological diagnoses are essential for advancing precision medicine. 2.Limitations of the qualitative visual analysis of microscopic images includes lack of standardization, diagnostic errors, …