Linux 软件编程学习第十五天

1.TCP粘包问题
    TCP发送数据是连续的,两次发送的数据可能粘连成一包被接收到

    1.解决粘包问题方法:
        1.接收指定长度:(不稳定)
            发送5个字节     接收5个字节 
        2.睡眠:(效率低)
            让每次发送间设定时间间隔
        3.将两次数据包间添加间隔标志


UDP MTU最大传输单元(理论:65535   实际:1500)

源端口
目的端口
序号:发送数据的编号
确认号:接收到数据的编号(只有当ACK为1时,该位有效)、确认号即想要让对方下次发送数据的序号
数据偏移:拆包组包过程中标识该包的偏移量

SYN:请求应答
ACK:确认应答
FIN:结束连接
RST:重置连接
PSH:数据包 
URG:加急

窗口:滑动串口,用来完成流量控制和拥塞控制
        滑动窗口:用来控制接收和发送窗口的大小,来实现对流量的控制

校验和
紧急指针

本次发送的序号,为上次收到的确认号
本次发送的确认号,为收到的序号 + 实际接收到的数据长度

1.TCP三次握手:
    SYN 
    SYN + ACK 
    ACK 

2.四次挥手: 
    FIN  
    ACK + FIN 
    ACK 

    FIN 
    ACK 
    FIN 
    ACK 

3.传输过程中通过序号和确认号保障数据传输的完整性 
    PSH  
    ACK 

TCP和UDP传输方式:
1.UDP实现方式简单
  资源开销比较小 
  UDP不安全、不可靠
  UDP是无连接的,面向数据包的传输方式
2.TCP实现方式复杂
  资源开销比较大 
  TCP安全、可靠 
  TCP是面向连接的,面向字节流传输方式

HTTP协议:

www.nowapi.com 

APPKey: 44923
sign:   5432c8efd2fc919d409b01241b70c9f4 

HTTP超文本传输协议
应用层 

万维网:大型的信息联网存储所 
统一资源定位符:简称URL
    协议://主机:端口号/资源路径
    https://www.baidu.com  

    协议:https 加密
          http  非加密
    主机:IP地址 
    端口号: 80 
           443
    资源路径: 默认为 /  主页

短连接:想要通信时建立链接 
长连接:通信前建立链接,通过新过程中链接一直保持

客户端如何拿到服务器中的网页文件?
1.客户端向主机发送TCP链接请求
2.服务器收到请求后,与客户端链接成功

3.客户端向发送HTTP请求报文,告诉服务器想要的数据
4.服务器回复HTTP响应报文,将客户端要的数据发回

5.双方关闭通信 


通信报文:

GET /?app=weather.today&weaId=1&appkey=44923&sign=5432c8efd2fc919d409b01241b70c9f4&format=json HTTP/1.1
Host: api.k780.com
User-Agent: Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:109.0) Gecko/20100101 Firefox/113.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
Connection: keep-alive
Upgrade-Insecure-Requests: 1

HTTP/1.1 200 OK
Server: nginx
Date: Sat, 17 Aug 2024 08:08:35 GMT
Content-Type: application/json; charset=utf-8;
Transfer-Encoding: chunked
Connection: keep-alive
Access-Control-Allow-Origin: *

{"success":"1","result":{"weaid":"1","days":"2024-08-17","week":".........","cityno":"beijing","citynm":"......","cityid":"101010100","temperature":"30.../23...","temperature_curr":"32...","humidity":"62%","aqi":"45","weather":"...............","weather_curr":"......","weather_icon":"http://api.k780.com/upload/weather/d/1.gif","weather_icon1":"","wind":".........","winp":"2...","temp_high":"30","temp_low":"23","temp_curr":"32","humi_high":"0","humi_low":"0","weatid":"2","weatid1":"","windid":"5","winpid":"2","weather_iconid":"1"}}


HTTP请求报文格式:
1.方法: 
    GET 
2.资源路径:
    /?app=weather.today&weaId=1&appkey=44923&sign=5432c8efd2fc919d409b01241b70c9f4&format=json

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/403362.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Java | Leetcode Java题解之第342题4的幂

题目: 题解: class Solution {public boolean isPowerOfFour(int n) {return n > 0 && (n & (n - 1)) 0 && n % 3 1;} }

【数据结构算法经典题目刨析(c语言)】使用数组实现循环队列(图文详解)

💓 博客主页:C-SDN花园GGbond ⏩ 文章专栏:数据结构经典题目刨析(c语言) 目录 一.题目描述 二.解题思路 1.循环队列的结构定义 2.队列初始化 3.判空 4.判满 5.入队列 6.出队列 7.取队首元素 8.取队尾元素 三.完整代码实…

接入谷歌支付配置

1.谷歌云创建项目 网址:https://console.cloud.google.com/ 按照步骤创建即可 创建好后选择项目,转到项目设置 选择服务账户,选择创建新的服务账户 名称输入好后访问权限吗账号权限都可以不用填写,默认就好了 然后点击电子邮…

企业高性能web服务器

目录 一.Web 服务基础介绍 1.1 Web 服务介绍 1.2.1 Apache 经典的 Web 服务端 1.2.1.1 Apache prefork 模型 1.2.1.2 Apache worker 模型 1.2.1.3 Apache event模型 1.2.2 Nginx-高性能的 Web 服务端 1.2.3 影响用户体验的因素 1.2.4 服务端 I/O 流程 1.2.4.1 磁盘 I…

【详细】linux 打包QT程序

【详细】linux 打包QT程序 一. 安装linuxdeployqt1.1 下载linuxdeployqt源码并修改如下 二. 安装patchelf三. 打包appimage四. 打包成 Debian包4.1 control文件内容4.2 postinst文件内容4.3 postrm文件内容4.4 打包命令4.4 安装命令4.5 卸载命令 一. 安装linuxdeployqt 下载地…

Gin框架接入Prometheus,grafana辅助pprof检测内存泄露

prometheus与grafana的安装 grom接入Prometheus,grafana-CSDN博客 Prometheus 动态加载 我们想给Prometheus新增监听任务新增ginapp项目只需要在原来的配置文件下面新增ginapp相关metric 在docker compose文件下面新增 执行 docker-compose up -d curl -X POST http://lo…

复现dom破坏案例和靶场

文章目录 靶场网址第一个实验步骤和原理(代码为示例要根据自己的实验修改) 第二个实验步骤和原理(代码为示例要根据自己的实验修改) 靶场网址 注册后点击 第一个实验 此实验室包含一个 DOM 破坏漏洞。注释功能允许“安全”HTML。为了解决这个实验,请构造一个 HT…

依赖注入+中央事件总线:Vue 3组件通信新玩法

​🌈个人主页:前端青山 🔥系列专栏:Vue篇 🔖人终将被年少不可得之物困其一生 依旧青山,本期给大家带来Vue篇专栏内容:Vue-依赖注入-中央事件总线 目录 中央事件总线使用 依赖注入使用 总结 中央事件总线 依赖注入…

【TiDB】09-修改tidb客户端访问密码

目录 1、修改配置文件 2、停止tidb-server 3、以root方式启动脚本 4、修改密码 5、停止脚本重启服务 1、修改配置文件 进入tidb-server默认部署位置 #切换tidb账号 su tidb# 进入tidb-server部署路径 cd /tidb-deploy/tidb-4000# 修改配置 vim ./conf/tidb.toml添加内容…

Datawhale AI 夏令营 第四期 AIGC Task3

活动简介 活动链接:Datawhale AI 夏令营(第四期) 以及AIGC里面的本次任务说明:Task 3 进阶上分-实战优化 这次任务呢,主要是对知识的一个讲解,包括ComfyUI工具的使用啊,以及LoRA的原理啊&…

学习记录第三十天

管道: 无名管道:只能用于亲缘关系进程之间的通信: 有名管道:是一种特殊的文件,存在于内存中,在系统中有对应的名称,文件大小为0字节; 编程: Linux系统中,…

Deepin-获取屏幕缩放比例

Deepin-获取屏幕缩放比例 一、概述二、实现代码 一、概述 环境:UOS、Deepin 我的目的是为了获取屏幕的缩放比例值,就是获取如下的值 我们可以去读取当前的环境变量值,在Qt Creator中可以看到这个值 二、实现代码 相关的Qt接口如下&…

串口通信协议(hal库)

目录 串口通信协议 串行/并行 同步/异步 单工/半双工/全双工 DR寄存器 轮询方式 中断方式 主要中断事件: DMA方式 USART 模块的常用 HAL 库常用接口函数 串口通信协议 串口通信(Serial Communication)指的是数据通过一个串行的通道…

前端如何使用Nginx代理dist网页,代理websocket,代理后端

本文将指导您如何配置Nginx以代理前后端分离的项目,并特别说明了对WebSocket的代理设置。通过本教程,您将能够实现一次性配置,进而使项目能够在任意局域网服务器上部署,并可通过IP地址或域名访问服务。 笔者建议 先速览本文了解大…

Java、python、php版的企业单位考勤打卡管理系统的设计与实现(源码、调试、LW、开题、PPT)

💕💕作者:计算机源码社 💕💕个人简介:本人 八年开发经验,擅长Java、Python、PHP、.NET、Node.js、Android、微信小程序、爬虫、大数据、机器学习等,大家有这一块的问题可以一起交流&…

C语言-使用数组法,指针法实现将一个5X5的矩阵中最大的元素放在中心,四个角分别放四个最小的元素(顺序为从左到右,从上到下,从小到大存放),写一函数实现之。

1.题目要求: 将一个5X5的矩阵中最大的元素放在中心,四个角分别放四个最小的元素(顺序为从左到右,从上到下,从小到大存放),写一函数实现之。 2.数组法实现 #define _CRT_SECURE_NO_WARNINGS 1…

【自动驾驶】控制算法(一)绪论与前期准备

写在前面: 🌟 欢迎光临 清流君 的博客小天地,这里是我分享技术与心得的温馨角落。📝 个人主页:清流君_CSDN博客,期待与您一同探索 移动机器人 领域的无限可能。 🔍 本文系 清流君 原创之作&…

ROW_NUMBER(), RANK(), DENSE_RANK() SQL排序函数图文详解

ROW_NUMBER(), RANK(), DENSE_RANK() ROW_NUMBER(): 为结果集中的每一行分配唯一的连续编号。即使有重复的值,ROW_NUMBER() 也会为它们分配不同的序号。 SELECT column_name, ROW_NUMBER() OVER (ORDER BY column_name) AS row_num FROM table_name;2. RANK(): 对结…

2-68 基于matlab的小波分解子模式和盒维数的车型识别程序

基于matlab的小波分解子模式和盒维数的车型识别程序,可以选择不同车型,包括小车、中车、大车。GUI可视化界面操作,已包括多种图片。程序已调通,可直接运行。 2-68 小波分解子模式和盒维数 - 小红书 (xiaohongshu.com)

RabbitMQ实现多线程处理接收消息

前言:在使用RabbitListener注解来指定消费方法的时候,默认情况是单线程去监听队列,但是这个如果在高并发的场景中会出现很多个任务,但是每次只消费一个消息,就会很缓慢。单线程处理消息容易引起消息处理缓慢&#xff0…