[TCP] TCP/IP 基础知识词典(3)

我想统计一下,TCP/IP 尤其是TCP协议,能搜到的常见的问题,整理起来,关键词添加在目录中,便于以后查阅。

目前预计整理共3篇:

[TCP] TCP/IP 基础知识问答 :基础知识
[TCP] TCP/IP 基础知识问答(2) :TCP协议相关知识
[TCP] TCP/IP 基础知识问答(3) :UDP协议相关知识

文章目录

  • UDP协议相关知识
    • 什么是UDP
    • UDP的头
    • UDP可以发送多长的报文
    • TCP 和 UDP 的区别
    • UDP的应用层协议

UDP协议相关知识

什么是UDP

UDP(User Datagram Protocol),是无连接的、不可靠的传输层协议。

UDP的头

源port(16位),目标port(16位),总长度(16位),校验和(16位)

UDP可以发送多长的报文

根据MTU的大小来判断。
MTU是数据链路层数据的最大长度,超出MTU大小的数据会被分片。
比如以太网的MTU大小是1500,IP层的头大小是20字节,UDP头8字节,那UDP的数据长度应该是:
1500 -20 -8 = 1472 字节以下。
windows中可以用ping 命令测试mtu,可以通过-l 指定发送的数据包大小,例如 ping -l 1500 IP地址,
如果提示需要拆分,则MTU比这个值小。
ping 命令基于ICMP协议,是网络层协议。而MTU 实际上就是网络层包的大小。

TCP 和 UDP 的区别

1.TCP是面向连接的,UDP是无连接的。
TCP需要三次握手建立连接,四次挥手断开连接。
UDP没有这个过程。

2.TCP是字节流形式,UDP是数据报的形式。
字节流形式的特点:
TCP的应用层send几次和recv几次是没有关系的。有可能send了一次100字节,recv 10次。
也可能send了10次,结果对端一次recv就全收到了。
这是由于TCP是面向连接的,连接很稳定,TCP可以通过流量控制来控制协议栈中数据具体如何发送。
但是无边界的字节流传输,也就有沾包的问题,就是本来是两段数据,结果对端是连在一起收到的。
需要考虑沾包的问题

数据报形式的特点:
UDP sendto一次,对端就要recvfrom一次,如果发送的报文过长,超出了接收端缓冲区的大小,超出部分将被放弃。
这是由于UDP是无连接的,所以一次就把整个报文发出去。所以应用层需要控制UDP发送的数据大小

3.UDP可以广播、组播
TCP是面向连接的,所以只能一对一。
UDP无连接,可以一对一发送,也可以一对多发送,进行广播和组播。

4.TCP是可靠的,UDP是不可靠的
TCP通过seq num 和ack num保证数据包是有序的、通过重传机制保证数据包不丢失、通过流量控制拥塞控制确保网络传输,
所以TCP是可靠的,TCP数据报不重复、不丢失、不乱序。
但是UDP本身没有这些机制,他只是把报文发出去,不保证对端能收到。

5.TCP是全双工可靠通道,UDP是不可靠通道
TCP是全双工的通信,即连接的双方可以同时发送数据。
但是TCP是传输层协议,它支持全双工,其上的应用层未必支持全双工,例如http 1.0 是半双工,http 2.0是全双工
UDP没有建立稳定的连接,所以我认为他是不是双工通信。

6.TCP头和UDP头的大小不一样
TCP的头大小为 20 - 60 字节之间,由于TCP头中有一个选项字段,他的大小是可变的。
UDP的头大小为固定的8字节。

7.socket编程流程不同
TCP socket编程,一般 创建socket (SOCK_STREAM)、bind、listen、accept(connect),send / recv, close socket。
UDP socket编程,一般 创建socket (SOCK_DGRAM)、sendto(recvfrom, close socket。//可选bind

UDP的应用层协议

SNMP (port 161、162)
DNS 53 (DNS在域名解析时使用UDP协议,在区域传送时使用TCP协议)

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

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

相关文章

R语言数据分析(五)

R语言数据分析(五) 文章目录 R语言数据分析(五)前言一、什么是整洁的数据二、延长数据2.1 列名中的数据值2.2 pivot_longer()的处理原理2.3 列名中包含许多变量的情况2.4 列名同时包含数据和变量 三、扩宽数据3.1 pivot_wider的处…

JavaSec 之 SQL 注入简单了解

文章目录 JDBC 注入语句拼接(Statement)修复方案 语句拼接(PrepareStatement)修复方案 预编译 JdbcTemplate修复方案 MyBatisLike 注入Order By 注入In 注入 寒假学了一个月 pwn,真心感觉这玩意太底层学的我生理不适应了,接下来学一段时间 java 安全缓一…

力扣226 翻转二叉树 Java版本

文章目录 题目描述解题思路代码 题目描述 给你一棵二叉树的根节点 root ,翻转这棵二叉树,并返回其根节点。 示例 1: 输入:root [4,2,7,1,3,6,9] 输出:[4,7,2,9,6,3,1] 示例 2: 输入:root…

[云原生] 二进制k8s集群(下)部署高可用master节点

在上一篇文章中,就已经完成了二进制k8s集群部署的搭建,但是单机master并不适用于企业的实际运用(因为单机master中,仅仅只有一台master作为节点服务器的调度指挥,一旦宕机。就意味着整个集群的瘫痪,所以成熟…

代理技术引领出海征程

在数字娱乐的繁荣时代,游戏开发者和发行商们意识到,要在全球市场立足,必须迈向国际化的出海之路。然而,这一旅程面临着跨越网络壁垒、适应多元文化和提升全球连接性的巨大挑战。本文将深入探讨代理技术在游戏行业出海过程中的创新…

这才开工没几天收到Offer了,简历改的好,找工作没烦恼。

喜报喜报 这才开工没几天,就收到了喜报! 就像上面截图中所说的一样:简历改了真的有用。 我也和大家分享一下优化简历的技巧,希望对大家有帮助,把握住金三银四的机会,都能顺利上岸,升职加薪&am…

Leetcode日记 2583. 二叉树中的第 K 大层和

Leetcode日记 2583. 二叉树中的第 K 大层和 题目:解题思路:代码实现制作不易,感谢三连,谢谢啦 题目: 给你一棵二叉树的根节点 root 和一个正整数 k 。 树中的 层和 是指 同一层 上节点值的总和。 返回树中第 k 大的层和…

Vue2 基础面试题

v-show 和 v-if 区别 v-show 通过 CSS display 控制显示和隐藏v-if 通过判断组件真实渲染和销毁,而不是显示和隐藏频繁切换显示状态用 v-show,否则用 v-if v-if 当 v-if 与 v-for 一起使用时,v-for 具有比 v-if 更高的优先级,意…

PolarDN MISC做题笔记

cat flag 使用01打开flag.png,发现图片尾部有padding的数据。D0 CF 11 E0 A1 B1 1A E1为office2007以前版本的文件头。将其另存为flag.doc,打开发现提示需要密码。(可以注意到:D0CF11E0非常类似DOCFILE) 使用john的office2john.py 提取hash …

【操作系统】处理机调度算法

实验3 处理机管理 一、实验目的 在多道程序或多任务系统中,系统中同时处于就绪态的进程有若干个,即能运行的进程数远远大于处理机个数。为了使系统中的各个进程能有条不紊的运行,必须按照某种调度策略,选择一个进程占用处理机。…

使用puppeteer完成监听浏览器下载文件并保存到自己本地或服务器上完成上传功能

需求场景 获取网站点击的下载pdf,并把pdf重命名再上传到COS云上面 技术使用 “puppeteer”: “^19.7.2”, “egg”: “^3.15.0”, // 服务期用egg搭的 文件服务使用COS腾讯云 核心思路 获取浏览器下载事件,并把文件保存到本地 const session awai…

Unity3D 框架如何搭建基于纯Lua的U框架与开发模式详解

前言 Unity3D 是一款非常流行的游戏开发引擎,它支持C#、JavaScript和Boo等多种脚本语言。而Lua语言作为一种轻量级的脚本语言,也在游戏开发中得到了广泛应用。本文将介绍如何在Unity3D框架中搭建基于纯Lua的U框架,并详细讲解其开发模式。 对…

MYSQL--存储过程操作

一:概念: 存储过程实际上对标了JAVA当中的方法,两者是相似的,同时需要注意的一点是,MYSQL仅仅在5.0版本之后才出现这种存储操作的过程; 优点: 1.存储过程能够让运行的速度变得更加迅速&#xff…

SpringBoot指定外部环境配置

nohup java -Xms256m -Xmx512m -Dfile.encodingUTF-8 -jar /usr/local/xxxx.jar --spring.profiles.activeprod > system.log 2>&1 & --spring.profiles.activeprod修改的是多环境配置中内部application.properties里的spring.profiles.active值 -Dspring.config…

ubuntu 查询流量使用

在Ubuntu系统中,可以使用nethogs命令来查看每个进程的网络流量使用情况。这个工具可以显示每个进程的实时网络流量,从而可以找出使用流量最多的应用。 首先,你需要安装nethogs。在终端中输入以下命令: sudo apt install nethogs…

消息队列MQ 保证消息不丢失(消息可靠性)

文章目录 概述RabbitMQ 怎么避免消息丢失(可靠传输)RocketMQ 怎么确保消息不丢失Kafka 怎么保证消息不丢失activeMQ 怎么避免消息丢失MQ 宕机了消息是否会丢失线上服务宕机时,如何保证数据100%不丢失吗?消息队列消息持久化 概述 …

思伟老友记 | 携手并进17年 中泰公司的稳步发展和企业传承

17年携手并进 合作共赢 2023年是中泰(福建)混凝土发展有限公司携手思伟软件的第17年。在这关键的17年间,我们共同经历了一个行业的兴盛发展,也相互见证了彼此的荣耀成长。中泰从泉州惠安洛阳江边一个简单的搅拌站,到如…

h-table(表格列表组件的全封装)

文章目录 概要h-table的封装过程查询组件封装 h-highForm结果页右侧工具栏封装RightToolbar结果页列表组件h-table结果页vue页面使用js文件有需要的请私信博主,还请麻烦给个关注,博主不定期更新组件封装,或许能够有所帮助!&#x…

如何做代币分析:以 SOL 币为例

作者:lesleyfootprint.network 编译:cicifootprint.network 数据源:Solana Token Dashboard (仅包括以太坊数据) 在加密货币和数字资产领域,代币分析起着至关重要的作用。代币分析指的是深入研究与代币…

springmvc基于springboot 的音乐播放系统 _7sdu8

这就意味着音乐播放系统的设计可以比其他系统更为出色的能力,可以更高效的完成最新的ymj排行榜、ymj音乐资讯等功能。 此系统设计主要采用的是JAVA语言来进行开发,JSP技术、采用SSM框架技术,框架分为三层,分别是控制层Controller&…