TCP与UDP协议

TCP与UDP协议

1、TCP协议:

1、TCP特性:

  • TCP 提供一种面向连接的、可靠的字节流服务。
  • 在一个 TCP 连接中,仅有两方进行彼此通信。广播和多播不能用于 TCP。
  • TCP 使用校验和,确认和重传机制来保证可靠传输。
  • TCP 给数据分节进行排序,并使用累积确认保证数据的顺序不变和非重复。
  • TCP 使用滑动窗口机制来实现流量控制,通过动态改变窗口的大小进行拥塞控制。

滑动窗口协议,属于TCP协议的一种应用,用于网络数据传输时的流量控制,以避免拥塞的发生。该协议允许发送方在停止并等待确认前发送多个数据分组。由于发送方不必每发一个分组就停下来等待确认。因此该协议可以加速数据的传输,提高网络吞吐量。

总的来说,TCP 协议是通过序列号、确认应答、重发控制、连接管理以及窗口控制等机制实现数据稳定可靠性的传输

2、TCP协议的报文格式:

在这里插入图片描述

TCP 报文段包括协议首部和数据两部分,协议首部的固定部分是 20 个字节,头部是固定部分,后面是选项部分。

  • 源端口号以及目的端口号:各占 2 个字节,端口是传输层和应用层的服务接口,用于寻找发送端和接收端的进程,一般来讲,通过端口号和IP地址,可以唯一确定一个 TCP 连接,在网络编程中,通常被称为一个 socket 接口
  • 序号:Seq 序号,占 4 个字节。用来标识从 TCP 发送端向 TCP 接收端发送的数据字节流序号,发起方发送数据时对此进行标记。
  • 确认序号:Ack 序号,占 4 个字节,包含接受端所期望收到的下一个序号。只有 ACK 标记位为 1 时,确认序号字段才有效,因此,确认序号应该是上次已经成功收到数据字节序号加 1,即 Ack = Seq + 1。
  • 数据偏移:占 4 个字节,用于指出 TCP 首部长度。
  • 保留字段:占 6 位,暂时可忽略,值全为 0。
  • 六位标志位:值内容含义如下
  • 窗口:占 2 个字节,用于流量控制和拥塞控制,表示当前接收缓冲区的大小。
  • 校验和:占 2 个字节,范围包括首部和数据两部分
  • 紧急指针:指出了紧急数据的末尾在报文段中的位置,和 URG 搭配使用
  • 选项和填充:是可选的,默认情况是不选。

3、TCP三次握手:

计算机之间使用 TCP 协议进行传输数据时,每次连接都需要经过 3 个阶段:创建连接、数据传送和释放连接,即传输数据之前,在发送端和接收端建立逻辑连接、然后传输数据、最后断开连接,它保证两台计算机之间比较可靠的数据传输。

1、创建连接:

当两个设备之间准备传输数据之前,TCP 会建立连接,创建连接的阶段需要三次握手。

在这里插入图片描述

详细过程如下:

  • 第一次握手:客户端向服务器端发出连接请求,等待服务器确认。
  • 第二次握手:服务器端收到请求后,向客户端回送一个确认,通知客户端收到了连接请求。
  • 第三次握手:客户端再次向服务器端发送确认信息,确认连接。

完成以上 3 次握手之后,可靠性连接建立完成,就可以进行数据传输了。

4、TCP四次挥手:

1、释放连接:当数据传输完毕之后,TCP 会释放连接,连接的释放需要四次挥手。

在这里插入图片描述

  • 第一次挥手:客户端向服务器端发出请求切断连接,等待服务器确认。
  • 第二次挥手:服务器端收到请求后,向客户端回送一个确认信息,并同意关闭请求。
  • 第三次挥手:服务器端再次向客户端发出请求切断连接,等待客户端确认。
  • 第四次挥手:客户端收到请求后,向服务器端回送一个确认信息,并同意关闭请求。

5、重传机制介绍:

当网络不稳定的时候,很容易出现数据包丢失,TCP 采用了哪些重传手段来解决数据包丢失问题呢?

常见的重传方式有以下几种:

  • 超时重传
  • 快速重传
  • SACK
  • D-SACK
  1. 超时重传:

    超时重传,顾名思义,就是在发送数据时,设定一个定时器,当超过指定的时间后,没有收到对方的 ACK 确认应答报文,就会重发数据。

    TCP 会在以下两种情况发生超时重传:

    • 发送的数据包丢失。
    • 确认应答丢失。

    那如何来设定超时重传的时间呢?

    • RTT:指的是数据从网络的一端传送到另一端所需要的时间,也就是数据包发送出去的往返时间。
    • RTO:超时重传时间。

    1)当RTO较大时,重传时间间隔就会比较大,会出现数据传输效率差的现象,比如数据包丢失之后,需要等很长时间才重发,性能差;

    2)当RTO较小时,可能会出现并没有丢失包就重发,多次重发会造成网络拥堵,导致出现更多的超时,更多的超时意味着更多的重发;

    3)TCP每当遇到一次超时重传的时候,会将下一次超时时间间隔设为先前值的两倍,多次超时说明网络环境差,不宜频繁反复重发。

  2. 快速重传:

    • 快速重传就是来补充超时重传机制中时间过长的问题

    • 快速重传不像超时重传那样通过时间来驱动重发,而是通过次数来驱动重发。

    • 当收到报文重复的 ACK 数量,到达一定的阀值(一般为3),TCP 会在定时器过期之前,检查丢失的报文段并重传丢失的报文段。

  3. SACK方法:

    具体实现就是需要在 TCP 头部选项字段里加一个 SACK 的东西,接受方可以将缓存的数据地图发送给发送方,这样发送方就可以知道哪些数据收到了,哪些数据没收到,知道了这些信息,就可以只重传丢失的数据。

    注意:如果要支持 SACK 机制,必须发送方和接受方都要支持。在 Linux 操作系统中,开发者可以通过net.ipv4.tcp_sack参数打开这个功能(Linux 2.4 后默认打开)。

  4. Duplicate SACK 方法:

    D-SACK,这个方法实现主要是使用 SACKACK来告诉发送方有哪些数据被重复接收了,以防止 TCP 反复的重发。

    使用D-SACK方法的好处,可以让发送方知道,是发出去的包丢了还是接收方回应的 ACK 包丢了,然后来决定是否需要继续重发包。

    在 Linux 操作系统下,可以通过net.ipv4.tcp_dsack参数来开启/关闭这个功能(Linux 2.4 后默认打开)。

2、UDP协议:

1、简介

UDP协议是一种在计算机网络中广泛使用的传输层协议。与TCP协议相比,UDP协议具有更轻量级、无连接和不可靠的特点。

UDP协议基于IP协议,它提供了一种简单的数据传输机制。与TCP协议不同,UDP协议不需要在通信双方建立可靠的连接。它通过将数据划分为一系列称为"数据报"的小块来传输数据。每个数据报都包含了源端口号、目标端口号、数据长度和校验和等信息。

在这里插入图片描述

2、UDP协议工作原理:

  • 应用程序将数据传递给UDP协议。
  • UDP协议将数据封装成数据报,并加上源端口号和目标端口号等信息。
  • 数据报通过网络传输到目标主机。
  • 目标主机的UDP协议接收数据报,并将数据传递给目标应用程序。

3、UDP协议特点:

  1. 无连接性:UDP协议在通信之前不需要建立连接,数据报直接发送给目标主机,从而降低了通信的延迟。

  2. 面向报文:UDP协议将应用程序传递给它的数据封装成独立的数据报进行传输,每个数据报都是独立的实体,不会进行拆分和重组。

  3. 不可靠性:UDP协议不提供数据的可靠传输,数据报在传输过程中可能会丢失、重复、乱序等。它不保证数据的完整性和顺序性,也不提供重传机制。

  4. 简单高效:由于UDP协议的简单性,它的开销相对较小,传输效率较高。适用于一些对传输速度要求较高、但对数据完整性要求不那么严格的应用场景。

4、UDP协议的应用:

  • 实时音视频传输。
  • DNS解析。
  • 游戏应用。
  • loT设备通信。
  • 广播和多播。

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

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

相关文章

[C++]:8.C++ STL引入+string(介绍)

C STL引入string(介绍) 一.STL引入:1.什么是STL2.什么是STL的版本:2-1:原始版本:2-2:P. J 版本:2-3:RW 版本:2-4:SGL版本: 3.STL 的六大组件&…

WhatsApp新营销全解:如何才能真正留住你的客户

WhatsApp营销这件事上,从获取线索、留存客户、成交转化到复购推荐的整个流程中,方方面面的因素影响着最终的转化效果。今天开始,我们会在公众号内新增WhatsApp新营销全解系列,结合前人踩过的坑和成功经验,来为大家说说…

读《Segment Anything in Defect Detection》

摘要 (好像只是说把SAM应用到了红外缺陷分割领域) 引言 无损检测得到红外图像,根据热能观察异常 贡献: •从两个光学脉冲热成像系统构建广泛的缺陷热数据库,包括各种材料并释放它们。 • 开发DefectSAM,这是第一个用于缺陷检测…

Android 解决CameraView叠加2个以上滤镜拍照黑屏的BUG (二)

1. 前言 这段时间,在使用 natario1/CameraView 来实现带滤镜的预览、拍照、录像功能。 由于CameraView封装的比较到位,在项目前期,的确为我们节省了不少时间。 但随着项目持续深入,对于CameraView的使用进入深水区,逐…

Semi-Supervised Multi-Modal Learning with Balanced Spectral Decomposition

Y是所有模态的表征矩阵, ∑ i 1 d h ( λ i ) \sum_{i1}^dh(\lambda_i) ∑i1d​h(λi​) is the proposed eigenvalue-based objective function,the final similarity matrix W for the multimodal data as a block matrix 辅助信息 作者未提供代码

腾讯云轻量数据库是什么?性能如何?费用价格说明

腾讯云轻量数据库测评,轻量数据库100%兼容MySQL 5.7和8.0,腾讯云提供1C1G20GB、1C1G40GB、1C2G80GB、2C4G120GB、2C8G240GB五种规格轻量数据库,腾讯云百科txybk.com分享腾讯云轻量数据库测评、轻量数据库详细介绍、特性、配置价格和常见问题解…

滚珠螺杆在航天工业领域中的重要性

滚珠螺杆是重要的航天工业配件之一,在航天工业领域中具有非常重要的地位和作用。 首先,滚珠螺杆作为一种高精度、高刚度的传动元件,能够提供准确的传动和定位精度,从而保证航天器的可靠性和性能。航天器在飞行过程中需要精确控制其…

NX二次开发UF_CAM_ask_f_s_db_object 函数介绍

文章作者:里海 来源网站:里海NX二次开发3000例专栏 UF_CAM_ask_f_s_db_object Defined in: uf_cam.h int UF_CAM_ask_f_s_db_object(UF_CAM_db_object_t * db_obj ) overview 概述 This function provides the database object which is currently u…

软文推广如何实现效果?媒介盒子为你支招

当今数字化时代,软文已经成为各个品牌推广的常用方式,它通过优质内容输出和有效传播渠道的搭建,实现企业品牌、服务、产品的传播,在消费者心中构建起鲜明的传播形象,但有许多企业在进行推广时都会存在瓶颈,…

centos虚拟机无法接受消息(防火墙)

1.利用wireshark抓包, 发现发送信息后, 虚拟机返回 :host administratively prohibited 2.发现是centos虚拟机未关闭防火墙 (关闭后可正常接收消息)

瑞吉外卖Day06

1.用户地址 1.1实体类 /*** 地址簿*/ Data public class AddressBook implements Serializable {private static final long serialVersionUID 1L;private Long id;//用户idprivate Long userId;//收货人private String consignee;//手机号private String phone;//性别 0 女…

centos7 探测某个tcp端口是否在监听

脚本 nc -vz 192.168.3.128 60001 if [ $? -eq 0 ]; thenecho "tcp succeed" elseecho "tcp failed" fi nc -vz 192.168.3.128 60001 探测192.168.3.128服务器上60001 tcp端口, -vz说明是探测TCP的 端口开启的情况 执行脚本 端口禁用情况 执行脚本

“腾易视连”构建汽车生态新格局 星选计划赋能创作者价值提升

11月16日,在2023年广州国际车展前夕,以“腾易视连,入局视频号抓住增长新机会”为主题的腾易创作者大会在广州隆重举办。此次大会,邀请行业嘉宾、媒体伙伴、生态伙伴、视频号汽车领域原生达人等共济一堂,结合汽车行业数…

Typescript 的 class 类

介绍 1. 类介绍 传统的JavaScript通过函数和基于原型的继承来创建可重用的组件,从ES6开始,JavaScript程序员也可以使用面向对象的方法来创建对象。例如,下列通过class关键词,来声明了一个类:Greeter class Greeter …

所有做海外营销的,都应该知道什么是SocialSelling

#01 社媒社交营销,早已不是选择题 当下,一个共同的认识已越来越深刻,不管是跨境电商还是外贸,又或者是海外实体店、APP出海、SaaS出海、金融出海等不同业态,社媒和社交营销已是所有企业的共识。 社媒社交营销&#xf…

使用drawio的图层构建更强大的图表

drawio中使用图层 drawio是一款强大的图表绘制软件,支持在线云端版本以及windows, macOS, linux安装版。 如果想在线直接使用,则直接输入网址draw.io或者使用drawon(桌案), drawon.cnhttps://www.drawon.cn?useSourcecsdn内部完整的集成了drawio的所有功…

信息中心网络提出的背景、研究现状及研究内容

信息中心网络什么时候提出的?未来发展前景?有什么著名实验室在做? 1、提出背景: 互联网产生于上世纪60年代: (1)网络设备数量呈指数性增长 截至2022年底全球范围内预计将有超过280亿台终端设…

「项目阅读系列」go-gin-example star 6.5k!(1)

文章目录 准备工作适宜人群项目信息 项目结构代码阅读主要模块代码主函数模块router 路由模块auth 授权模块数据库 修改文章请求分析其他依赖 总结 准备工作 适宜人群 初学 go 语法,希望了解 go 项目的构建过程和方式。 项目信息 go-gin-example 项目是使用 gin…

JUnit 单元自动化

一、Junit 是什么? Junit 是 Java 中用于单元测试的框架。使用 Junit 能让我们快速高效的完成单元测试。 自动化测试:JUnit提供了自动化测试的能力,开发人员可以编写一次测试用例,然后通过简单的命令或集成到持续集成工具中进行…

100套Axure RP大数据可视化大屏模板及通用组件库

106套Axure RP大数据可视化大屏模板包括了多种实用美观的可视化组件库及行业模板库,行业模板涵盖:金融、教育、医疗、政府、交通、制造等多个行业提供设计参考。 随着大数据的发展,可视化大屏在各行各业得到越来越广泛的应用。可视化大屏不再…