Linux 软件编程 网络 tcp

news2024/9/26 5:24:27

6fe04127d2674e259754bf04c9d72b3f.png

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.coloradmin.cn/o/2067364.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【数据库】Mysql 批量变更所有字段类型为varchar的字符集

生成变更语句 SELECT CONCAT(ALTER TABLE , TABLE_NAME, MODIFY , COLUMN_NAME, , COLUMN_TYPE, , CHARACTER SET utf8 COLLATE utf8_general_ci , CASE WHEN IS_NULLABLE YES THEN NULL DEFAULT NULL WHEN IS_NULLABLE NO AND ISNULL(COLUMN_DEFAULT) THEN NOT NULL EL…

Adobe Illustrator矢量绘图软件win/mac软件下载安装

一、软件概述 1.1 Adobe Illustrator简介 Adobe Illustrator是一款由Adobe Systems开发的强大矢量绘图软件,专为设计师、艺术家及图形专家设计。它广泛应用于平面设计、插画、UI设计、图标设计、排版及数字媒体制作等领域。Illustrator以其独特的矢量图形处理能力…

Datawhale X 魔搭 AI夏令营第四期 | AIGC文生图——进阶上分 实战优化 Task3笔记

Hi,大家好,我是半亩花海。在上一个任务中,我们逐行精读baseline,掌握了利用AI工具提升学习效率,并制作了话剧连环画,初步了解Secpter WebUI。今天,我们将深入探讨微调的基本原理及其参数&#x…

海外版多语言互助盘三三复制超级人脉系统

此套源码是全新二开的超级人脉系统,面向海外操作新增多语言,后台可新增其他语言.

【图机器学习系列】(二)从传统机器学习角度理解图(一)

微信公众号:leetcode_algos_life,代码随想随记 小红书:412408155 CSDN:https://blog.csdn.net/woai8339?typeblog ,代码随想随记 GitHub: https://github.com/riverind 抖音【暂未开始,计划开始】&#xf…

java 中的设计模式

文章目录 一、前言二、设计模式的分类三、设计模式的原则1、开闭原则(Open Close Principle)2、里氏代换原则(Liskov Substitution Principle)3、依赖倒转原则(Dependence Inversion Principle)4、接口隔离…

【案例55】WebSphere非root用户启动方案

问题背景 很多项目为了安全因素考虑,想让在Linux服务器中启动的程序都用非root用户启动。 解决方案 创建用户和组 现在我们用 root 用户登录,并创建用户和组。 ##创建用户 [rootnc-test ~]# useradd wasadmin##修改密码 [rootnc-test~]# passwd was…

AT 指令和WIFI模组

此次使用到的wifi模组是乐鑫的wifi模组esp8684,该wifi模组内部集成了MQTT协议 串口发送AT指令与单片机进行通信,一下是ESP8684的管脚布局。 ESP8684管脚描述: 注:30 和 31 号管脚是用于调试的管脚,20 与 21 号管脚才是…

allure实现测试报告的生成

在测试用例编写完成之后,我们可以通过allure生成测试报告 一、配置java环境变量,jdk17的版本 二、安装allure-commanlie工具,可在官网下载,也可通过百度网盘下载 链接: https://pan.baidu.com/s/10123Iv2f7Ht476feDiP0Yw 提取码…

视频智能分析平台烟火检测视频安防监控烟火算法识别应用方案

烟火检测算法的应用方案主要围绕其核心技术——深度学习(特别是卷积神经网络CNN)和计算机视觉技术展开,旨在实现对监控视频中的烟雾和火焰进行实时、准确的检测与识别。以下是一个详细的烟火检测算法应用方案: 一、技术原理 烟火…

如何使用Python进行餐馆满意度分析——K-means算法与NLP情感分析实战

🎓 作者:计算机毕设小月哥 | 软件开发专家 🖥️ 简介:8年计算机软件程序开发经验。精通Java、Python、微信小程序、安卓、大数据、PHP、.NET|C#、Golang等技术栈。 🛠️ 专业服务 🛠️ 需求定制化开发源码提…

TOP10漏洞原理

## 本人为学习网安不久的新人,记一次学习笔记,有缺陷或者表述不对的地方欢迎大家指出,感谢! ## 1、sql注入:web应用程序对用户输入的数据没有进行过滤,或者过滤不严,就把sql语句拼接进数据库…

【C++ Primer Plus习题】3.2

问题: 解答: #include <iostream> using namespace std;const int FOOT_TO_INCH 12; const double INCH_TO_MI 0.0254; const float KG_TO_POUND 2.2;int main() {int inch 0;int foot 0;int inchs 0;double mi 0;int pound 0;double kg 0;double BMI 0;cout &…

QEMU/KVM 虚拟机显卡透传 (vfio-pci)

首发日期 2024-08-22, 以下为原文内容: 本文介绍将 PCIE 设备 (显卡) 透传给 QEMU/KVM 虚拟机的一种方法, 基于 Linux 内核的 vfio-pci 功能. 透传 (pass through) 之后, 虚拟机内可以直接操作 (使用) 显卡硬件, 就像物理机那样, 几乎没有虚拟化的性能损失. 这里是 穷人小水滴…

电商分账系统整个原理 空中分账具体解决方案

电商分账系统最近比较火&#xff0c;比如大家做天猫的时候&#xff0c;直接可以通过网商贷把钱拿出来&#xff0c;但抖店没有这种贷款&#xff0c;大家都有一种不想进对公的方式&#xff0c;那系统本身就是虚拟户加操作系统&#xff0c;虚拟户是银行开的&#xff0c;银行开就需…

【Java】从零到一使用Feign与Sentinel (详细图解)

Java系列文章目录 补充内容 Windows通过SSH连接Linux 第一章 Linux基本命令的学习与Linux历史 文章目录 Java系列文章目录一、前言二、学习内容&#xff1a;三、问题描述四、解决方案&#xff1a;4.1 认识依赖4.1.1 Feign依赖4.1.2 Sentinel依赖4.1.3 负载均衡依赖4.2 父子项目…

基于 Java Web 的校园驿站管理系统

TOC ssm016基于 Java Web 的校园驿站管理系统jsp 第1章 绪论 1.1 课题背景 互联网发展至今&#xff0c;无论是其理论还是技术都已经成熟&#xff0c;而且它广泛参与在社会中的方方面面。它让信息都可以通过网络传播&#xff0c;搭配信息管理工具可以很好地为人们提供服务。…

嵌入式学习(TCP通信和抓包)

粘包问题&#xff1a; TCP协议在传输时&#xff0c;可能会遇到粘包的问题。造成这个问题的原因&#xff0c;是因为tcp流式套接字&#xff0c;数据之间没有边界造成的。导致了多次的数据&#xff0c;粘黏在一起。 解决方法&#xff1a; 1、规定一些数据与数据之间的间隔符 2、…

访客管理系统 对接微信公众号,发送通知消息

微信公众号模板消息 - 要实现的效果图 1 公众号设置对接的域名 打开【公众号设置】 公众号设置域名&#xff0c;需要先用http server做安全验证。 安全验证成功后&#xff0c;域名配置完毕。 2 获取公众号APPID 和 Secret 3 开通模板消息 官方审核需要2-3日 4 设置IP白名单&…

鸿蒙HarmonyOS编程开发:TLS单向认证通讯示例

1.TLS简介 TLS&#xff08;Transport Layer Security&#xff09;协议的前身是SSL&#xff08;Secure Socket Layer&#xff09;安全套接层协议&#xff0c;由Netscape公司于1994年提出&#xff0c;是一套网络通信安全协议。IETF&#xff08;The Internet Engineering Task Fo…