lv7 嵌入式开发-网络编程开发 11 TCP管理与UDP协议

2023-10-06 11:06

本文主要是介绍lv7 嵌入式开发-网络编程开发 11 TCP管理与UDP协议,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

目录

1 TCP管理

1.1 三次握手

1.2 四次挥手

1.3 保活计时器

2 wireshark安装及实验

3.1 icmp协议抓包演示

3.2 tcp协议抓包演示

3 UDP协议

3.1 UDP 的主要特点:

4 练习


1 TCP管理

1.1 三次握手

TCP 建立连接的过程叫做握手。

采用三报文握手:在客户和服务器之间交换三个 TCP 报文段,以防止已失效的连接请求报文段突然又传送到了,因而产生 TCP 连接建立错误

  1. B 的 TCP 服务器进程先创建传输控制块 TCB,准备接受客户进程的连接请求。
  2. A 的 TCP 向 B 主动发出连接请求报文段,其包头中的同步位 SYN = 1,并选择序号 seq = x,表明传送数据时的第一个数据字节的序号是 x。注意:TCP规定,SYN 报文段(即SYN = 1的报文段)不能携带数据,但要消耗掉一个序号。
  3. B 的 TCP 收到连接请求报文段后,如同意,则发回确认。 B 在确认报文段中应使 SYN = 1,使 ACK = 1,其确认号 ack = x + 1自己选择的序号 seq = y。注意:这个报文段也不能携带数据,但同样要消耗掉一个序号。
  4. A 收到此报文段后向 B 给出确认,其 ACK = 1确认号 ack = y + 1。 A 的 TCP 通知上层应用进程,连接已经建立。注意:TCP 标准规定:ACK 报文段可以携带数据。 但如果不携带数据,则不消耗序号。下一个数据报文段的序号仍是 seq = x + 1
  5. B 的 TCP 收到主机 A 的确认后,也通知其上层应用进程:TCP 连接已经建立。双方可以开始数据传送。

1.2 四次挥手

TCP 连接释放过程比较复杂。

数据传输结束后,通信的双方都可释放连接

TCP 连接释放过程是四报文握手。

  1. A 的应用进程先向其 TCP 发出连接释放报文段,并停止再发送数据,主动关闭 TCP 连接。 A 把连接释放报文段首部的 FIN = 1,其序号seq = u,等待 B 的确认。 TCP规定:FIN 报文段即使不携带数据,也消耗掉一个序号。
  2. B 发出确认,ACK=1,确认号 ack = u+1,这个报文段的序号 seq = v。 TCP 服务器进程通知高层应用进程。 从 A 到 B 这个方向的连接就释放了,TCP 连接处于半关闭 (half-close) 状态。B 若发送数据,A 仍要接收。
  3. 若 B 已经没有要向 A 发送的数据,其应用进程就通知 TCP 释放连接。 FIN=1,ACK=1,确认号 ack = u+1,这个报文段的序号 seq = w
  4. A 收到连接释放报文段后,必须发出确认。  ACK=1,确认号 ack=w+1,自己的序号 seq = u + 1
  5. 请注意:此时 TCP 连接还没有释放掉。必须经过时间等待计时器 (TIME-WAIT timer) 设置的时间 2MSL 后,A 才释放 TCP 连接。

1.3 保活计时器

用来防止在 TCP 连接出现长时期空闲。

通常设置为 2 小时 。

若服务器过了 2 小时还没有收到客户的信息,它就发送探测报文段。

若发送了 10 个探测报文段(每一个相隔 75 秒)还没有响应,就假定客户出了故障,因而就终止该连接。

2 wireshark安装及实验

windows下载:Wireshark · Download

linux下载:

sudo apt-get install wireshark//添加权限
sudo chmod 777 /usr/bin/dumpcap

3.1 icmp协议抓包演示

每ping一下,发送、应答 

3.2 tcp协议抓包演示

http协议的端口是443

3 UDP协议

UDP 只在 IP 的数据报服务之上增加了一些功能:

  • 复用和分用
  • 差错检测

3.1 UDP 的主要特点:

  • 无连接。发送数据之前不需要建立连接。
  • 使用尽最大努力交付。即不保证可靠交付。
  • 面向报文。UDP 一次传送和交付一个完整的报文。
  • 没有拥塞控制。网络出现的拥塞不会使源主机的发送速率降低。很适合多媒体通信的要求。
  • 支持一对一、一对多、多对一、多对多等交互通信。 首部开销小,只有 8 个字节。
  • UDP 通信的特点:简单方便,但不可靠。

UDP 是面向报文的

发送方 UDP 对应用层交下来的报文,既不合并,也不拆分,按照原样发送

接收方 UDP 对 IP 层交上来的 UDP 用户数据报,去除首部后就原封不动地交付上层的应用进程,一次交付一个完整的报文。 

UDP在计算校验和时,需要使用一个伪首部(Pseudo Header)来增强校验的准确性。伪首部通常在计算校验和时与UDP数据包头部一起进行处理,以确保校验和的准确性。伪首部的组成如下:

  1. 源IP地址:4个字节,表示发送方的IP地址。

  2. 目标IP地址:4个字节,表示接收方的IP地址。

  3. 保留字段:1个字节,全为0。

  4. 协议字段:1个字节,表示上层协议的类型,对于UDP来说,该字段的值为17。

  5. UDP数据包长度:2个字节,表示整个UDP数据包的长度。

伪首部的组成不包含在UDP数据包的实际字节中,而是在计算校验和时与UDP数据包头部一同处理。伪首部的目的是增加校验和的准确性,确保校验和的计算正确,并有效地检测数据在传输过程中的任何变化。

需要注意的是,伪首部只用于计算校验和,而不是作为实际的数据传输

UDP数据包的具体字节组成如下:

  1. 源端口和目标端口:每个端口号占用2个字节,共4个字节。源端⼝号。在需要对⽅回信时选⽤。不需要时可⽤全 0。⽬的端⼝号。终点交付报⽂时必须使⽤

  2. 长度字段:2个字节,表示整个UDP数据包的长度。其最⼩值是 8(仅有⾸部)

  3. 校验和字段:2个字节,用于校验数据包的完整性。检测 UDP ⽤户数据报在传输中是否有错。有错就丢弃  

  4. 数据部分:根据应用程序发送的实际数据而定,可以是任意长度。

下面是一个简单的UDP数据包的例子(以16进制表示):

源端口号: 0xABCD (2个字节) 目标端口号: 0x1234 (2个字节) 长度字段: 0x0012 (2个字节) 校验和字段: 0x5678 (2个字节) 数据部分: 0x48656C6C6F20576F726C64 (11个字节,对应ASCII编码的"Hello World")

4 练习

  • 1.画出三次握手的过程
  • 2.画出四次握手的过程
  • 3.实现TCP通信,并使用wireshark抓包,提交wireshark抓包截图,截图内容包含三次握手过程和四次握手过程

这篇关于lv7 嵌入式开发-网络编程开发 11 TCP管理与UDP协议的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/152898

相关文章

这15个Vue指令,让你的项目开发爽到爆

1. V-Hotkey 仓库地址: github.com/Dafrok/v-ho… Demo: 戳这里 https://dafrok.github.io/v-hotkey 安装: npm install --save v-hotkey 这个指令可以给组件绑定一个或多个快捷键。你想要通过按下 Escape 键后隐藏某个组件,按住 Control 和回车键再显示它吗?小菜一碟: <template

Hadoop企业开发案例调优场景

需求 (1)需求:从1G数据中,统计每个单词出现次数。服务器3台,每台配置4G内存,4核CPU,4线程。 (2)需求分析: 1G / 128m = 8个MapTask;1个ReduceTask;1个mrAppMaster 平均每个节点运行10个 / 3台 ≈ 3个任务(4    3    3) HDFS参数调优 (1)修改:hadoop-env.sh export HDFS_NAMENOD

综合安防管理平台LntonAIServer视频监控汇聚抖动检测算法优势

LntonAIServer视频质量诊断功能中的抖动检测是一个专门针对视频稳定性进行分析的功能。抖动通常是指视频帧之间的不必要运动,这种运动可能是由于摄像机的移动、传输中的错误或编解码问题导致的。抖动检测对于确保视频内容的平滑性和观看体验至关重要。 优势 1. 提高图像质量 - 清晰度提升:减少抖动,提高图像的清晰度和细节表现力,使得监控画面更加真实可信。 - 细节增强:在低光条件下,抖

嵌入式QT开发:构建高效智能的嵌入式系统

摘要: 本文深入探讨了嵌入式 QT 相关的各个方面。从 QT 框架的基础架构和核心概念出发,详细阐述了其在嵌入式环境中的优势与特点。文中分析了嵌入式 QT 的开发环境搭建过程,包括交叉编译工具链的配置等关键步骤。进一步探讨了嵌入式 QT 的界面设计与开发,涵盖了从基本控件的使用到复杂界面布局的构建。同时也深入研究了信号与槽机制在嵌入式系统中的应用,以及嵌入式 QT 与硬件设备的交互,包括输入输出设

OpenHarmony鸿蒙开发( Beta5.0)无感配网详解

1、简介 无感配网是指在设备联网过程中无需输入热点相关账号信息,即可快速实现设备配网,是一种兼顾高效性、可靠性和安全性的配网方式。 2、配网原理 2.1 通信原理 手机和智能设备之间的信息传递,利用特有的NAN协议实现。利用手机和智能设备之间的WiFi 感知订阅、发布能力,实现了数字管家应用和设备之间的发现。在完成设备间的认证和响应后,即可发送相关配网数据。同时还支持与常规Sof

活用c4d官方开发文档查询代码

当你问AI助手比如豆包,如何用python禁止掉xpresso标签时候,它会提示到 这时候要用到两个东西。https://developers.maxon.net/论坛搜索和开发文档 比如这里我就在官方找到正确的id描述 然后我就把参数标签换过来

Linux 网络编程 --- 应用层

一、自定义协议和序列化反序列化 代码: 序列化反序列化实现网络版本计算器 二、HTTP协议 1、谈两个简单的预备知识 https://www.baidu.com/ --- 域名 --- 域名解析 --- IP地址 http的端口号为80端口,https的端口号为443 url为统一资源定位符。CSDNhttps://mp.csdn.net/mp_blog/creation/editor

【Python编程】Linux创建虚拟环境并配置与notebook相连接

1.创建 使用 venv 创建虚拟环境。例如,在当前目录下创建一个名为 myenv 的虚拟环境: python3 -m venv myenv 2.激活 激活虚拟环境使其成为当前终端会话的活动环境。运行: source myenv/bin/activate 3.与notebook连接 在虚拟环境中,使用 pip 安装 Jupyter 和 ipykernel: pip instal

软考系统规划与管理师考试证书含金量高吗?

2024年软考系统规划与管理师考试报名时间节点: 报名时间:2024年上半年软考将于3月中旬陆续开始报名 考试时间:上半年5月25日到28日,下半年11月9日到12日 分数线:所有科目成绩均须达到45分以上(包括45分)方可通过考试 成绩查询:可在“中国计算机技术职业资格网”上查询软考成绩 出成绩时间:预计在11月左右 证书领取时间:一般在考试成绩公布后3~4个月,各地领取时间有所不同

ASIO网络调试助手之一:简介

多年前,写过几篇《Boost.Asio C++网络编程》的学习文章,一直没机会实践。最近项目中用到了Asio,于是抽空写了个网络调试助手。 开发环境: Win10 Qt5.12.6 + Asio(standalone) + spdlog 支持协议: UDP + TCP Client + TCP Server 独立的Asio(http://www.think-async.com)只包含了头文件,不依