2、TCP和UDP

简介

  • TCP(transmission Control Protocol):是一种通信标准,它使应用程序和计算设备能够在网络上交换消息。它的设计目的是在互联网上发送数据包,并确保数据和信息在网络上的成功传递。
  • UDP(the User Datagram Protocol):是一种跨Internet的通信协议,特别用于时间敏感的传输,如视频播放或DNS查找。它通过在数据传输之前不正式建立连接来加快通信速度。

TCP

  1. TCP是面向连接(虚连接)的传输层协议。
  2. 每一条TCP连接只能有两个端点,每一条TCP连接只能是点对点的。
  3. TCP提供可靠交付的服务,无差错、不丢失、不重复、按需到达。
  4. TCP提供全双工通信(发送缓存,接收缓存)。
  5. TCP面向字节流,TCP把应用程序交下来的数据看成仅仅是一连串的无结构字节流

报文段首部格式:

  • 源端口(2B)
  • 目的端口(2B)
  • 序号(4B):在一个TCP连接中传送的字节流中的每一个字节都按顺序编号,本字段表示本表文段所发送的第一个字节的序号
  • 确认号(4B):期望收到对方下一个报文段的第一个数据字节的序号。若确认号为N,则证明到序号N-1位置的所有数据都已正确收到。
  • 数据偏移(4bit):首部长度,TCP报文段的数据起始处距离TCP报文段的起始处有多远,以4B为单位,即一个数值是4B。
  • 控制位(6bit)
    • 紧急位URG:URG=1时,表明此报文段中有紧急数据,是高优先级的数据,应尽快传送,不用再缓存里排队,配合紧急指针字段使用。
    • 确认位ACK:ACK=1时确认号有效,在连接建立后所有传送的报文段都必须把ACK置为1。
    • 推送位PSH:PSH=1时,接收方尽快交付应用进程,不用再等到缓存存满再向上交付。
    • 复位RST:RST=1时,表明TCP连接中出现严重差错,必须释放连接,然后再重新建立传输链接。
    • 同步位SYN:SYN=1时,表明是一个连接请求/连接接受报文。
    • 终止位:FIN=1时,表明此报文段发送发数据已发完,要求释放链接。
  • 窗口(2B):指的是发送本报文段的一方的接收窗口,即现在允许对方发送的数据量。
  • 检验和(2B):检验首部+数据,检验时要加上12B伪首部,第四个字段为6(TCP为6,UDP为17)。
  • 紧急指针(2B):URG=1时才有意义,指出本报文段中紧急数据的字节数。
  • 选项(可变长度):最大报文段长度MSS、窗口扩大、时间戳、选择确认……
  • 填充(保证4B的整数倍)

连接建立

TCP连接管理

TCP连接传输三个阶段:连接建立—>数据传送—>连接释放

TCP连接的建立采用客户服务器方式,主动发起连接建立的应用进程叫做客户,而被动等待连接建立的应用进程叫服务器。

建立连接过程(三次握手)

  1. 客户端发送连接请求报文段,无应用层数据。SYN=1, seq=x(随机)
  2. 服务器端为该TCP连接分配缓存和变量,并向客户端返回确认报文段,允许连接,无应用层数据。SYN=1, ACK=1, seq=y(随机), ack=x+1
  3. 客户端为该TCP连接分配缓存和变量,并向服务器端返回确认的确认,可以携带数据。SYN=0, ACK=1, seq=x+1, ack=y+1

连接释放过程(四次挥手)

  1. 客户端发送连接释放报文段,停止发送数据,主动关闭TCP连接。FIN=1,seq=u
  2. 服务器端回送一个确认报文段,客户到服务器这个方向的连接释放了。ACK=1, seq=v, ack=u+1
  3. 服务器端发完数据,就发出连接释放报文段,主动关闭TCP连接。FIN=1, ACK=1, seq=w, ack=u+1
  4. 客户端回送一个确认报文段,在等到实践等待计时器设置的2MSL(最长报文段寿命)后,连接彻底关闭。ACK=1, seq=u+1, ack=w+1

可靠传输

TCP可靠传输的机制:校验;序号;确认;重传。

  • 超时重传:TCP咋发送方在规定时间内没收到确认就要重传已发送的报文段。TCP采用自适应算法,动态改变重传时间RTTs(加权平均往返时间)。
  • 每当比期望序号大的失序报文段到达时,发送一个冗余ACK,指明下一个期待字节的序号。连续收到3个对于某序号小的报文段的确认,则认为其丢失,重传报文段(快速重传)。

流量控制

流量控制:让发送方慢点,要让接收方来得及接收。

TCP利用滑动窗口机制实现流量控制。

在通信过程中,接收方根据自己接收缓存的大小,动态的调整发送方的发送窗口大小,即接收窗口rwnd,发送方的发送窗口的大小=min(接收窗口rwnd, 拥塞窗口cwnd)

TCP为每一个连接设有一个持续计时器,只要TCP连接的一方收到对方的零窗口通知,就启动持续计时器。若持续计时器设置的时间到期,就发送一个零窗口探测报文段。接收方收到探测报文段时给出现在的窗口值。

拥塞控制

出现拥塞的条件:对资源需求的综合>可用资源。

四种算法:慢开始、拥塞避免、快重传、快恢复。

假定:

  1. 数据单方向传递,而另一个方向只传送确认
  2. 接收方总是有足够大的缓存空间,因而发送窗口大小取决于拥塞程度,发送窗口 = Min{接收窗口rwnd, 拥塞窗口cwnd}

在这里插入图片描述

UDP

UDP只在IP数据报服务之上增加了很少功能,即复用分用和差错检测功能。

UDP的主要特点:

  1. UDP是无连接的,减少开销和发送数据之前的时延。
  2. UDP使用最大努力交付,即不保证可靠交付
  3. UDP是面向报文的,适合一次性传输是少量数据的网络应用。
  4. UDP无拥塞控制,适合很多实时应用。
  5. UDP首部开销小,为8B(16位源端口号,16位目的端口号,16位UDP长度,16位UDP校验和),TCP为20B。
    请添加图片描述

参考

【王道计算机考研 计算机网络】 https://www.bilibili.com/video/BV19E411D78Q/?p=140&share_source=copy_web&vd_source=a2b60e3364b59c2f5872cb3058666cae

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

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

相关文章

WEB安全篇:浏览器攻击原理及防护

1、XSS:跨站脚本攻击就是攻击者想尽一切办法将可以执行的代码注入到网页中。攻击者在web页面恶意插入HTML或script标签,当用户浏览该页面时,恶意代码就会被执行,从而达到攻击的目的。XSS利用的是用户对指定网站的信任。比如&#…

汇编语言学习2---GNU Debugger (GDB)

学习记录,在汇编语言 ,我们面对的是机器码(以汇编指令形式展现),所以断点要设置在机器码被加载到内存中的位置。 GEF插件使用 安装插件wget -O ~/.gdbinit-gef.py -q https://gef.blah.cat/pyecho source ~/.gdbinit-g…

谈谈架构的内容

一、架构的定义架构是一个界定不清的东西,我们很难讲清楚哪些东西是架构,哪些东西不是架构。但软件行业里其实人人都在搞架构,软件设计就是架构本身。架构这个词出现得很早,有些人认为是 NASA(也可能是NATO&#xff09…

C#文件(夹)读取相关(完善中。。。)

前言阅读项目编辑器的代码时,发现好多与文件(夹)路径相关代码。本来自己之前对路径相关的东西就模模糊糊,希望通过这篇笔记能让自己模糊的地方明朗一下。" / " 与 " \ "你是否有过这样的疑惑:Wind…

FPGA DP1.4 With DSC解决方案

引言:迎接高清高刷时代的显示挑战随着8K分辨率、高刷新率、HDR和更广色域内容的普及,传统视频接口的带宽正面临极限。DisplayPort 1.4标准虽提供了高达32.4 Gbps的带宽(HBR3速率),但要无压缩地传输8K60Hz 10bpp HDR视频…

新手向:Python开发简易网络服务器

Python网络服务器开发指南:从零开始的完整实现网络服务器基础概念网络服务器是互联网基础设施的核心组件,它本质上是一个持续运行的程序,负责监听特定端口(如HTTP服务的80端口或HTTPS的443端口),处理来自客…

819 机器学习-决策树2

一、决策树的算法信息增益:某个属性带来的熵增1、决策树三大经典算法• ID3 → 信息增益 信息增益:某个属性带来的熵增• C4.5 → 信息增益率 信息增益率:信息增益自身熵• CART → 基尼指数(分类);平方误…

Objective-C 版本的 LiveEventBus 效果

想要 Objective-C 版本的 LiveEventBus 效果(跨页面/跨模块通信,支持粘性和非粘性事件)。在 iOS 里对应的就是 NSNotificationCenter,但是它 默认不支持粘性事件,所以如果你想要“粘性”,需要自己封装一层。…

WindowsAPI|每天了解几个winAPI接口之网络配置相关文档Iphlpapi.h详细分析七

上一篇:WindowsAPI|每天了解几个winAPI接口之网络配置相关文档Iphlpapi.h详细分析六 如果有错误欢迎指正批评,在此只作为科普和参考。 C:\Program Files (x86)\Windows Kits\10\Include\10.0.22621.0\um\iphlpapi.h 文章目录CreateIpNetEntry&#xff1…

STM32F407VGT6从零建立一个标准库工程模板+VSCode或Keil5

一、前言 下载平台:STM32F407ZGT6 代码使用平台:VSCode 编译器:arm-none-aebi-gcc ---- 默认你已经安装 程序下载工具:STlink ---- 默认你拥有 批处理工具:make ---- 默认你已经安装 使用此方法可以不借助其它插件,例如:STM32EIDE。这个方法已经经过验证可以在STM3…

佩京VR党建工作站-党建VR系统-VR党建展厅

VR党建工作站是一种依托VR虚拟现实技术的数字化党建文化学习工具。它通过将丰富的学习内容植入到智慧党建科技产品中,构建出沉浸式的学习场景,从而创新了体验式学习模式,促进了党员的自主学习。VR党建工作站核心功能:1、了解实时新…

Kotlin 协程之Channel的概念和基本使用

前言 在 专栏 之前的文章中,我们已经知道了协程的启动、挂起、取消、异常以及常用的协程作用域等基础应用。 这些基础应用适合的场景是一次性任务,执行完就结束了的场景。 launch / async 适合的场景 网络请求数据库查询文件读写并行计算任务等等 而…

安装使用Conda

文章目录Linux安装 Conda(Miniconda 或 Anaconda)​Miniconda (轻量版)激活配置Windows安装配置 Conda​添加清华镜像源加速创建并激活 Conda 环境验证步骤​安装项目依赖运行项目Linux安装 Conda(Miniconda 或 Anaconda)​ Mini…

面向智能空战的深度强化学习技术综述

CSDN大礼包《大模型课程》 CSDN大礼包《深度强化学习课程》 CSDN大礼包《人工智能平台设计开发课程》

DeepSeek-V3.1 Claude Code: 革命性的AI编码助手详解与应用指南

DeepSeek-V3.1 & Claude Code: 革命性的AI编码助手详解与应用指南 今天 DeepSeek模型已支持接入 Claude Code,我们来深入探讨Claude Code ——Anthropic 推出的一个强大工具。它不仅仅是一个简单的代码补全助手,而是一个嵌入终端的智能代理&#xf…

智能求职推荐系统

智能求职推荐系统 基于知识图谱和大语言模型的智能求职推荐系统,为求职者提供个性化岗位推荐和AI驱动的匹配分析。 🚀 系统特性 智能推荐: 基于知识图谱的多维度职位匹配AI分析: 集成DeepSeek大模型提供深度分析和建议可视化展示: 使用ECharts展示推荐结…

瑞芯微:AIoT芯片领航者的全栈突围与生态崛起

一、业绩高速增长的底层逻辑​​瑞芯微的持续爆发式增长源于三大关键支柱:技术纵深​​:深耕“大音频、大视频、大感知、大软件”四大核心技术矩阵,自研NPU/ISP/编解码等核心IP持续迭代;精准定位​​:瞄准边缘侧与端侧…

【报错】Please do not run this script with sudo bash

目录 报错 分析 解决方法 扩展 报错分析 安装conda 报错 Please do not run this script with sudo bash: showHelp: command not found 分析 脚本有以下要求: 不能以root身份运行(当前是root用户)

多线程—飞机大战排行榜功能(2.0版本)

(一)实现功能: 1.基础的成绩排序 2.相同成绩随机排名 3.用户名注册重复 (二)效果视频: (三)代码实现: 3.1 && 3.2 在FileRead类中新增方法如下:具体的代码实现&a…

React + Antd+TS 动态表单容器组件技术解析与实现

概述在现代前端应用中,表单是用户交互的核心部分。本文将深入分析一个基于 React 和 Ant Design 的高级动态表单容器组件,它提供了强大的可配置性、灵活的布局选项和丰富的功能扩展能力。组件核心特性1. 高度可配置的表单结构interface FormContainerPro…