[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.mfbz.cn/a/403217.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

AI智能分析网关V4智慧工厂视频智能监管与风险预警平台建设方案

一、背景需求分析 1)随着信息技术的迅猛发展和制造业竞争的加剧,智慧工厂成为了推动制造业转型升级的重要引擎。智慧工厂解决方案通过整合物联网、人工智能、大数据分析等先进技术,实现生产过程的智能化、自动化和高效化,为企业提…

java-cef jcefmaven java集成CEF

java-cef 项目地址 Bitbucket jcefmaven 项目地址 GitHub - jcefmaven/jcefmaven: Maven artifacts for JCef 两个项目之间的关系 编译java-cef https://www.cnblogs.com/JpgCode/p/9397166.html jcefmaven 使用例子 Java使用JCEF开发 windows桌面应用-腾讯云开发者社区…

python+vue_django编程语言在线学习平台

本论文的主要内容包括: 第一,研究分析当下主流的web技术,结合学校日常管理方式,进行编程语言在线学习平台的数据库设计,设计编程语言在线学习平台功能,并对每个模块进行说明。 第二,陈列说明该系…

Delphi 11 安卓的蓝牙权限申请

上一篇博客里面的代码,演示如何申请安卓的权限。 如何申请安卓的蓝牙权限? 本博客之前有一篇文章写过。 现在 Google 要求 Android API Level 必须是 33。对于 BLE 的权限申请,有了一些新的要求。 以下描述,基于 Delphi 11。 …

C#之WPF学习之路(2)

目录 控件的父类 DispatcherObject类 DependencyObject类 DependencyObject 类的关键成员和方法 Visual类 Visual 类的主要成员和方法 UIElement类 UIElement 类的主要成员和功能 FrameworkElement类 FrameworkElement 类的主要成员和功能 控件的父类 在 WPF (Windo…

服务网格Service Mesh和Istio

文章目录 服务网格(Service Mesh)市场上三种服务网格解决方案服务网格的特征流量管理安全性可观察性 Istio简介Istio提供了什么功能服务 ?Istio 核心特性流量管理安全可观察性 平台支持 服务网格(Service Mesh) 服务网…

【ECharts】调用接口获取后端数据的四种方法

使用eacharts做大屏,需要使用后端数据,下面的方法是自己试过有效的,有什么不对的,望各位大佬指点。 目录 方法一:在mounted中使用定时器调用eacharts方法(定时器可以获取到data中的数据) 方法…

《游戏引擎架构》 -- 学习4

资源及文件系统 文件系统 游戏引擎的文件系统API通常提供以下功能: 搜需路径:是含一串路径的字符串,各路径之间以特殊字符(如冒号或分号)分隔,找文件时就会从这些路径进行搜寻。例如在命令行下执行程序&a…

汽车制造5G智能工厂数字孪生可视化平台,推进汽车行业数字化转型

汽车制造5G智能工厂数字孪生可视化平台,推进汽车行业数字化转型。在当今数字化时代,汽车行业正面临着前所未有的挑战和机遇。随着5G技术的快速发展,汽车制造正在向智能化、数字化转型,而数字孪生技术作为这一转型的核心驱动力&…

阿里开源低代码引擎 - Low-Code Engine

阿里开源低代码引擎 - Low-Code Engine 本文主要介绍如何在Windows运行/开发阿里开源低代码引擎 - Low-Code Engine 详细文档参见【 阿里开源低代码引擎 - Low-Code Engine 官方文档】 目录 阿里开源低代码引擎 - Low-Code Engine一、环境准备1、使用 WSL 在 Windows 上安装 L…

Istio实战:Istio Kiali部署与验证

目录 前言一、Istio安装小插曲 注意事项 二、Kiali安装三、Istio测试参考资料 前言 前几天我就开始捣腾Istio。前几天在执行istioctl install --set profiledemo -y 的时候老是在第二步就报错了,开始我用的istio版本是1.6.8。 后面查看k8s与istio的版本对应关系后发…

QT 数据库的增加操作和画图 Win

第一步、先配置CMakeLists.txt 在CMakeLists.txt中添加 find_package(Qt6 REQUIRED COMPONENTS Sql) find_package(Qt6 REQUIRED COMPONENTS Charts)target_link_libraries(${PROJECT_NAME} PRIVATE Qt6::Sql) target_link_libraries(${PROJECT_NAME} PRIVATE Qt6::Charts)避…

Web前端3D JS框架和库 整理

在WebGL库和SVG/Canvas元素的支持下,JavaScript变得惊人的强大。几乎可以为网络构建任何东西,包括基于浏览器的游戏和本地应用,许多最新的突破性功能都在3D上运行。 为此,「数维图小编」整理了19个交互式3D Javascript库和框架&am…

永恒之黑和永恒之蓝 漏洞解析及复现

充当攻击机的机器是kali,另外需要关闭防火墙策略。 永恒之黑(CVE-2020-0796) 靶机:windows 10的IP地址:192.168.200.30 原理:实现远程代码执行 注意: 这个脚本运行有时候会导致靶机蓝屏&am…

施华洛世奇 Swarovski EDI需求分析

施华洛世奇为全球首屈一指的光学器材及精确切割仿水晶制造商,为时尚服饰、首饰、灯饰、建筑及室内设计提供仿水晶元素。施华洛世奇有两个主要业务,分别负责制造及销售仿水晶元素,以及设计制造成品。 EDI传输协议 施华洛世奇 Swarovski 与合作…

郑板桥的人生境界是难得糊涂

郑板桥是康熙秀才,雍正举人,乾隆进士。 郑板桥小时候跟父亲在真州读书,长大后在真州教书。后来,郑板桥去扬州卖画谋生。 郑板桥没有老师,画画靠自己琢磨。郑板桥一生画竹,画了四十年的竹子,主…

nginx反向代理和负载均衡配置

配置文件 位置 : /usr/local/software/nginx/conf vim nginx.conf 在http大括号下配置: upstream wnBalance{ server ip:端口 weight比重 :1或者2; 1为配重高 server ip:端口 weight1; } wnBalance : 代表括号中两个ip的变量名 位置 : /usr/local/so…

MFC 皮肤库配置

1.创建MFC 对话框 2.添加皮肤资源 添加资源 添加头文件 关闭SDL检测 添加静态库文件 修改字符集 添加头文件 将皮肤中的ssk文件加载到初始化实例中 > 运行即可

JAVAEE初阶 网络编程(十一)

HTTP协议 一. GET和POST方法二. Post和Get的区别三. HTTP协议中的请求报头部分1. Host2.Content-Length3.Content-Type4.User-Agent5. Referer6.Cookie 一. GET和POST方法 Get方法应用场景有很多,比如下列这个例子. Post方法主要应用在上传和登录上. 一般来说,Get方法没有body,…

Sora:视频生成模型作为世界模拟器

我们探索了视频数据上生成模型的大规模训练。具体来说,我们在可变持续时间、分辨率和长宽比的视频和图像上联合训练文本条件扩散模型。我们利用了一个在视频和图像潜在码的时空块上操作的变压器架构。我们规模最大的模型 Sora 能够生成一分钟的高保真视频。我们的结…