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

LINUX下的tcp协议

TCP

1. 面向数据流(流式套接字)
2. 建立连接
3. 安全可靠的传输协议

应用场景:
      HTTP, MQTT,  FTP

     三次握手:TCP建立连接时,需要进行三次握手,确保收发数据前,双方都已准备就绪。

四次挥手:TCP断开连接时,需要进行四次挥手,从而确保通信双发都已收发数据结束。

C/S模型:

ssize_t recv(int sockfd, void *buf, size_t len, int flags);
功能:从tcp套接字接收数据
参数:
        sockfd:套接字
        buf:保存接收数据内容的首地址
        len:期待接收到的字节数
        flags:0:默认方式
返回值:
      成功:实际收到的字节数
      失败:-1
      0:当发送端套接字关闭时,recv不再阻塞,返回0


         int listen(int sockfd, int backlog);
       功能:用来监听TCP套接字
       参数:
             sockfd:监听套接字
             backlog:最多允许同时监听的客户端个数
       返回值:
             成功:0
             失败:-1

int accept(int sockfd, struct sockaddr *addr, socklen_t *addrlen);
     功能:接收建立三次握手的客户端并产生与之通信的套接字
    参数:
          sockfd:监听套接字
          addr:保存客户端地址信息的变量指针
          addrlen:客户端地址大小的变量指针
     返回值:
             成功:通讯套接字
              失败:-1

TCP 和UDP 的区别:

UDP:用户数据报协议

1. 面向数据报
2. 无连接
3. 不安全不可靠(尽最大努力交付)
4. 机制简单,传输效率高

TCP: 传输控制协议

1. 面向数据流(流式套接字)
2. 建立连接
3. 安全可靠的传输协议

相关文章:

LINUX下的tcp协议

TCP 1. 面向数据流(流式套接字) 2. 建立连接 3. 安全可靠的传输协议 应用场景: HTTP, MQTT, FTP 三次握手:TCP建立连接时,需要进行三次握手,确保收发数据前,双方都已准备就绪。 四次挥…...

自定义Linux网络协议的开发与测试

在当今快速发展的技术领域中,定制化网络协议可以为特定的应用场景提供灵活而强大的解决方案。本文将详细介绍如何在Linux系统上开发一个自定义网络协议,并编写相应的用户空间程序进行测试。所有步骤基于2025年3月11日的时间点完成。 开发自定义协议内核模块 定义协议和实现…...

Handy Multi Agent—task1:CAMEL环境配置及你的第一个Agent

目录 1.1 获取CAMEL 1.1.1 通过 PyPI 安装 1.1.2 通过源码安装 1.1.2.1 使用 Poetry 工具从源码安装 1.1.2.2 使用Conda和Pip从源码安装 1.2.2 使用API调用模型 1.2.2.1 使用语言模型 1.2.2.2 使用多模态模型 1.2.2.3 视频理解 1.2.2.4 作业1 1.2.2.5 作业2 1.1 获取…...

CSS元素层叠顺序规则

CSS元素层叠顺序规则 看图说话总结: background/borderz-index(<0)blockfloatinline/inline-blockz-index(0,auto)z-index (>0)...

微服务全局ID方案汇总

自增id 对于大多数系统来说&#xff0c;使用mysql的自增id当作主键再最合适不过了。在数据库层面就可以获取一个顺序的、唯一的、空间占用少的id。 自增id需要是 int、bigint这些整数类型&#xff0c;uint 支持 40 亿的数据量&#xff0c;bigint unsign&#xff08;0 &#x…...

深入 Python 网络爬虫开发:从入门到实战

一、为什么需要爬虫&#xff1f; 在数据驱动的时代&#xff0c;网络爬虫是获取公开数据的重要工具。它可以帮助我们&#xff1a; 监控电商价格变化抓取学术文献构建数据分析样本自动化信息收集 二、基础环境搭建 1. 核心库安装 pip install requests beautifulsoup4 lxml …...

【云原生】动态资源分配(DRA)深度洞察报告

1. DRA 的发展与设计灵感 Kubernetes 早期通过 Device Plugin&#xff08;设备插件&#xff09;机制支持 GPU、NIC 等特殊硬件&#xff0c;将节点上可用设备数量上报给 kubelet 和调度器。但设备插件模式存在局限&#xff1a;调度器只能根据节点标签等属性粗粒度筛选&#xff…...

【论文笔记】Contrastive Learning for Compact Single Image Dehazing(AECR-Net)

文章目录 问题创新网络主要贡献Autoencoder-like Dehazing NetworkAdaptive Mixup for Feature PreservingDynamic Feature Enhancement1. 可变形卷积的使用2. 扩展感受野3. 减少网格伪影4. 融合空间结构信息 Contrastive Regularization1. 核心思想2. 正样本对和负样本对的构建…...

分布式存储学习——HBase表结构设计

目录 1.4.1 模式创建 1.4.2 Rowkey设计 1.4.3 列族定义 1.4.3.1 可配置的数据块大小 1.4.3.2 数据块缓存 1.4.3.3 布隆过滤器 1.4.3.4 数据压缩 1.4.3.5 单元时间版本 1.4.3.6 生存时间 1.4.4 模式设计实例 1.4.4.1 实例1&#xff1a;动物分类 1.4.4.2 …...

vue项目如何实现条件查询?

目录 1.前端 2.后端 3.mybatis的sql语句 结语 1.前端 说白了就是&#xff0c;无论该参数是否是空字符串&#xff0c;都会传递到后端。&#xff08;反正不是null就行&#xff09;。 2.后端 在controller层中&#xff0c;使用RequestParam注解接收名为registerName的参数&…...

使用multiprocessing实现进程间共享内存

在 Python 中,可以使用多种方法来实现几个进程之间的通信。 简单消息传递:使用 multiprocessing.Queue 或 multiprocessing.Pipe。 共享简单数据:使用 multiprocessing.Value 或 multiprocessing.Array。 共享复杂数据:使用 multiprocessing.Manager。 进程间信号控制:使用…...

在Linux中安装Nginx

上传nginx安装包 Nginx的安装包&#xff0c;从官方下载下来的是c语言的源码包&#xff0c;我们需要自己编译安装。具体操作步骤如下&#xff1a; 安装nginx 安装nginx运行时需要的依赖 yum install -y pcre pcre-devel zlib zlib-devel openssl openssl-devel 解压源码包到当…...

【每日学点HarmonyOS Next知识】状态栏字体、生命周期、自定义对话框屏幕中间、透明度、tab居中

1、HarmonyOS 单页面如何控制状态栏字体颜色&#xff1f; 状态栏字体颜色可通过设置statusBarContentColor修改&#xff0c;参考文档如下&#xff1a; https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/js-apis-window-V5 参考代码&#xff1a; import…...

地基Prompt提示常用方式

思维链&#xff08;Chain of Thought, CoT&#xff09;​ 思维链&#xff08;Chain of Thought, CoT&#xff09;​ 是指让 AI 在回答问题时&#xff0c;像人类一样展示出一步步的推理过程&#xff0c;而不仅仅是直接给出最终答案。这种方法的目的是让答案更清晰、可信&#…...

外贸企业可以申请网络专线吗?

在对外业务不断扩大的情况下&#xff0c;外贸企业对网络的需求愈发迫切。稳定、快速的网络连接不仅是企业开展国际业务的基础&#xff0c;更是提升竞争力的关键。外贸企业是否可以申请网络专线&#xff1f;如何选择适合的外贸网络专线服务&#xff1f;本文将为您详细解答。 网络…...

阿里巴巴发布 R1-Omni:首个基于 RLVR 的全模态大语言模型,用于情感识别

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗&#xff1f;订阅我们的简报&#xff0c;深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同&#xff0c;从行业内部的深度分析和实用指南中受益。不要错过这个机会&#xff0c;成为AI领…...

【 Linux 系统中 /etc/resolv.conf 文件的 DNS 配置】

如何在 Linux 系统中修改 /etc/resolv.conf 文件的 DNS 配置 在 Linux 系统中&#xff0c;/etc/resolv.conf 文件用于配置系统的 DNS 服务器。通过修改该文件&#xff0c;可以指定系统使用的 DNS 解析服务器。本文将详细介绍如何通过命令行和脚本修改 /etc/resolv.conf 文件&a…...

《探秘人工智能与鸿蒙系统集成开发的硬件基石》

在科技飞速发展的当下&#xff0c;人工智能与鸿蒙系统的集成开发开辟了创新的前沿领域。这一融合不仅代表着技术的演进&#xff0c;更预示着智能设备生态的全新变革。而在这场技术盛宴的背后&#xff0c;坚实的硬件配置是确保开发顺利进行的关键&#xff0c;它就像一座大厦的基…...

datax源码分析

文章目录 前言一、加载配置文件二、根据加载的配置文件进行调度三、根据配置文件执行读取写入任务总结 前言 在上一篇文章当中我们已经了解了datax的启动原理&#xff0c;以及datax的最基础的配置&#xff0c;datax底层java启动类的入口及关键参数。 接下来我将进行启动类执行…...

QuickAPI 和 DBAPI 谁更香?SQL生成API工具的硬核对比(一)

最近低代码开发火得不行&#xff0c;尤其是能把数据库秒变API的工具&#xff0c;简直是开发者的救星。今天咱就聊聊两款国内玩家&#xff1a;QuickAPI&#xff08;麦聪软件搞出来的低代码神器&#xff09;和 DBAPI&#xff08;开源社区的硬核作品&#xff09;。这两货都能靠SQL…...

Git使用(一)--如何在 Windows 上安装 Git:详细步骤指南

如果你想在 Windows 机器上安装 Git&#xff0c;可以按照以下详细指南进行操作。 第一步&#xff1a;下载 Git 可通过官网下载 适用于 Windows 的 Git 最新版本。 如果下载速度较慢&#xff0c;可以通过下面提供的百度网盘 链接下载安装包&#xff0c; https://git-scm.com/d…...

C#-使用VisualStudio编译C#工程

一.创建csproj文件 二.创建源cs文件 三.生成解决方案 四.运行解决方案 五.VisualStudio功能列表 <1.代码格式化: CtrlKD完成代码整体格式化 <2.窗口布局 窗口->重置窗口布局 <3.引用查找&关联 <4.包管理 <5.日志输出级别 工具->选项->项目解决方案…...

Qt常见面试题合集

零、基本概念 什么是信号槽? 信号槽类似于软件设计模式中的观察者模式&#xff0c;&#xff08;观察者模式是一种对象行为模式。它定义对象间的一种一对多的依赖关系&#xff0c;当一个对象的状态发生改变时&#xff0c;所有依赖于它的对象都得到通知并被自动更新。&#xf…...

使用 Golang 操作 MySQL

在Go语言中&#xff0c;操作SQL数据库&#xff0c;通常会用到一些第三方库来简化数据库的连接、查询和操作过程。其中原生的 database/sql go-sql-driver/mysql 库更符合sql语句使用习惯。‌ 安装 go get github.com/go-sql-driver/mysql 直接上代码来演示基本的创建&#xff…...

单片机—中断系统

什么是中断系统&#xff1f; 为使得CPU具有对外界紧急事件的实时处理能力而设置的&#xff0c;当CPU正在处理某些事的时候&#xff0c;当外界紧急事件请求&#xff0c;CPU会停止当前的事情&#xff0c;先去处理紧急的事件&#xff0c;处理结束后&#xff0c;在返回处理当前事件…...

vscode编译器的一些使用问题

目录 解决pip不可用问题 检查VSCode的终端配置 解决pip不可用问题 eg&#xff1a; C:\Users\student>pip pip 不是内部或外部命令&#xff0c;也不是可运行的程序或批处理文件。 先找到系统环境变量 高级->环境变量 系统属性->Path 变量名随意&#xff0c;自己后续知道…...

ubuntu 和 RV1126 交叉编译Mosqutiio-1.6.9

最近需要交叉编译mosquitto&#xff0c;遇到一些小问题记录一下。 1.众所周知使用它自带的Makefile编译的时候&#xff0c;只需要在编译前&#xff0c;指定它config.mk中的变量&#xff1a;CFLAGS头文件路径 和 LDFLAGS库文件路径就ok&#xff0c;例子如下&#xff1a; expor…...

Docker 》》Docker Compose 》》network 网络 compose

docker 默认的网络 三种模式 # 列出所有当前主机上或Swarm集群上的网络 docker network ls#查看网络详情 docker network inspect network名称# 清除未使用的docker网络 docker network prune -f# 创建网络 ocker network create -d bridge 网络名称 docker network create –s…...

【SpringMVC】深入解析使用 Postman 和浏览器模拟将单个与多个参数传递到后端的原理和后端接收参数的过程

SpringMVC—请求(Request) 访问不同的路径&#xff0c;就是发送不同的请求&#xff1b;在发送请求时&#xff0c;可能会带一些参数&#xff0c;所以学习Spring的请求&#xff0c;主要是学习如何传递参数到后端以及后端如何接收&#xff1b; 我们主要是使用 浏览器 和 Postman …...

VSTO(C#)Excel开发10:启动和卸载顺序 事件处理 监视变化

初级代码游戏的专栏介绍与文章目录-CSDN博客 我的github&#xff1a;codetoys&#xff0c;所有代码都将会位于ctfc库中。已经放入库中我会指出在库中的位置。 这些代码大部分以Linux为目标但部分代码是纯C的&#xff0c;可以在任何平台上使用。 源码指引&#xff1a;github源…...