计算机网络之传输层TCP\UDP协议

news2024/11/28 8:26:57

UDP协议

用户数据报协议UDP概述

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

UDP的主要特点:

  1. UDP是无连接的,减少开销和发送数据之前的时延

  2. UDP使用最大努力交付,即不保证可靠交付,可靠性由UDP上层即应用层保证

  3. UDP是面向报文(面向应用层的报文,直接交付给下一层)的,适合一次性传输少量数据的网络应用

因此应用程序需要选择大小合适的报文,报文太长则网络层需要分片以满足链路层MTU的要求,这样就会降低网络层的效率

4.UDP无拥塞控制,适合实时应用(比如IP电话、视频会议)

5.UDP首部开销小,只有8B,TCP20B

UDP首部格式

一定会有首部字段,数据字段可以为0

16位源端口号可有可无。如果期望收到对方的回复则添上,如果不需要就可以是全0。目的端口号一定要有

16位UDP长度单位是1B

各字段意义如下:

  • 源端口。源端口号。在需要对方回信时选用,不需要时可用全0。
  • 目的端口。目的端口号。这在终点交付报文时必须使用到。
  • 长度。UDP数据报的长度(包括首部和数据),其最小值是8 (仅有首部)。
  • 校验和。检测UDP数据报在传输中是否有错。有错就丢弃。该字段是可选的,当源主机不想计算校验和时,则直接令该字段为全0。

UDP校验

17就是IP数据报首部的协议字段,这个协议字段说明IP数据报数据部分使用什么协议,这里数据部分使用UDP协议,对应的协议字段值是17

  • 伪首部和全0字节是不发送的,仅供校验使用

TCP协议

TCP协议特点和TCP报文段

TCP主要特点


1.TCP是面向连接(虚连接)的传输层协议

虚连接 —— 并不是实际的物理连接,只是使用时就好像两个进程之间直接建立了点对点的连接。实际上连接过程是把数据报加上各个层次的首部之后放到链路上传输,然后在接收端进行步步解封装,这是一个完整的物理连接

2.每一条TCP连接只能有两个端点,每一条TCP连接只能是点对点

TCP协议不能用于广播和多播通信方式

3.提供可靠交付的服务,无差错、不丢失、不重复、按序到达。可靠有序,不丢不重

4.提供全双工通信

发送方和接收方角色不定,双方可以同时发送数据也可以同时接收数据

TCP协议连接的两端都会设置发送缓存,接收缓存

发送缓存:应用层准备发送的数据&已发送但尚未收到确认的数据

接收缓存:按序到达但尚未被应用程序读取的数据&不按序到达的数据

5.TCP面向字节流

流:流入到进程或从进程流出的字节序列

虽然进程和TCP交互时一次发送一个数据块,数据块可能大小不一样,但TCP把应用程序交下来的数据看成仅仅是一连串的无结构的字节流

发送方发送文件时会把文件按照字节排序编号并放入TCP缓存,再取几个字节加上TCP头形成TCP报文段再放到链路上传输

TCP报文段首部格式

以上图为例发送”123“报文段时,该报文段首部序号字段填1

接收端已经收到了”123“报文段就会给发送端发送首部确认号字段为4的报文段

由数据偏移字段可知首部最大为60B

将RST置为1还可以用来拒绝一个非法报文段,或者拒绝打开一个链接

同步位SYN。同步SYN= 1表示这是一个连接请求或连接接收报文。当SYN=1, ACK=0时,表明这是一个连接请求报文,对方若同意建立连接,则在响应报文中使用SYN=1, ACK=1。即SYN= 1表示这是一个连接请求或连接接收报文。

校验和。占2B。校验和字段检验的范围包括首部和数据两部分。在计算校验和时,和UDP一样,要在TCP报文段的前面加上12B的伪首部(只需将UDP伪首部的第4个字段,即协议字段的17改成6,其他的和UDP一样)。

窗口字段。占2B。它指出现在允许对方发送的数据量,接收方的数据缓存空间是有限的,因此用窗口值作为接收方让发送方设置其发送窗口的依据,单位为字节。
例如,假设确认号是701,窗口字段是1000。这表明,从701号算起,发送此报文段的接收方方还有接收1000B数据(字节序号为701 ~1700)的接收缓存空间。

紧急指针指出紧急数据的末位在报文段当中的位置。如紧急指针值为50,则TCP数据部分的前50个字节均为紧急数据,剩下的为普通数据

选项字段。长度可变。TCP最初只规定了一种选项,即最大报文段长度(Maximum SegmentSize,MSS)。MSS是TCP报文段中的数据字段的最大长度。窗口扩大、时间戳、选择确认
填充字段。这是为了使整个首部长度是4B的整数倍。填充0.

TCP连接管理

TCP连接管理

TCP连接传输分为三个阶段:

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

TCP的连接建立

三次握手

  • seq为序号字段,标明本次报文段数据部分的第一个字节的序号
  • ack是确认号字段,告诉对方我接下来应该接收的数据是从字节序号ack开始的数据
  • ACK是确认位,0时确认号字段ack无效,1时确认号字段ack有效
  • SYN是同步位

  • 第一步:客户机的TCP首先向服务器的TCP发送一个连接请求报文段。这个特殊的报文段中不含应用层数据,其首部中的SYN标志位被置为1。另外,客户机会随机选择一个起始序号 seq= x(连接请求报文不携带数据,但要消耗一个序号)。
  • 第二步:服务器的TCP收到连接请求报文段后,如同意建立连接,就向客户机发回确认,并为该TCP连接分配TCP缓存和变量。在确认报文段中,SYN和ACK位都被置为1,确认号字段的值为x+ 1, 并且服务器随机产生起始序号seq = y(确认报文不携带数据,但也要消耗-一个序号)。确认报文段同样不包含应用层数据。
  • 第三步:当客户机收到确认报文段后,还要向服务器给出确认,并且也要给该连接分配缓存和变量。这个报文段的ACK标志位被置1,序号字段为x+1,确认号字段ack=y+ 1。该报文段可以携带数据,若不携带数据则不消耗序号。成功进行以上三步后,就建立了TCP连接,接下来就可以传送应用层数据。

TCP提供的是全双工通信,因此通信双方的应用进程在任何时候都能发送数据。

  • 服务器端的资源是在完成第二次握手时分配的
  • 而客户端的资源是在完成第三次握手时分配的,这就使得服务器易于受到SYN洪泛攻击。

SYN洪泛攻击

解决方案:SYN cookie

TCP的连接释放

四次挥手

  • 第一步:客户机打算关闭连接时,向其TCP发送一个连接释放报文段, 并停止发送数据,主动关闭TCP连接,该报文段的FIN标志位被置1, seq=u, 它等于前面已传送过的数据的最后一个字节的序号加1 (FIN报文段即使不携带数据,也要消耗一个序号)。TCP 是全双工的,即可以想象为一条TCP连接上有两条数据通路。发送FIN报文时,发送FIN的一端不能再发送数据,即关闭了其中一条数据通路,但对方还可以发送数据。
  • 第二步:服务器收到连接释放报文段后即发出确认,确认号是ack=u+ 1,而这个报文段自己的序号是v,等于它前面已传送过的数据的最后一个字节的序号加1。此时,从客户机到服务器这个方向的连接就释放了,TCP连接处于半关闭状态。但服务器若发送数据,客户机仍要接收,即从服务器到客户机这个方向的连接并未关闭。
  • 第三步:若服务器已经没有要向客户机发送的数据,就通知TCP释放连接,此时其发出FIN= 1的连接释放报文段。
  • 第四步:客户机收到连接释放报文段后,必须发出确认。在确认报文段中,ACK字段被置为1,确认号ack=w+1,序号seq=u+1.此时TCP连接还未释放,必须经过时间等待计时器设置的时间2MSL后,A才进入连接关闭状态。

TCP连接建立和释放的总结如下

  • 1)连接建立。分为3步:

①SYN=1,seq=x。
②SYN=1, ACK=1, seq=y, ack=x+ 1。
③ACK=1,seq=x+1, ack=y+ 1。

  • 2)释放连接。分为4步:

①FIN=1, seq= u
②ACK=1, seq=v, ack=u+ 1。
③FIN=1,ACK=1, seq=w,ack=u+ 1。
④ACK=1, seq=u+1, ack=w+ 1。
关于连接和释放,ACK、 SYN、 FIN 一定等于1

TCP可靠传输

TCP可靠传输

序号

TCP协议面向字节流,因此TCP传输时以字节为单位,对字节依次编号。实际发送会把多个字节放在一起组成报文段发送,报文段大小不定,取决于链路层MTU

对于文件或者要发送的数据,第一个字节的序号可以是随机的

确认

发送方在收到对发送报文段的确认之前,TCP缓存区应保留报文段

接收方此时收到了“123”报文段,就会发送一个首部确认号字段为4的确认报文段,在发送方收到后把TCP缓存中的“123”报文段删去

接收方可在合适时候发送确认报文段,也可在要发送数据时把确认信息捎带上,即捎带确认

接收方采用累计确认,只确认数据流当中至第一个丢失字节为止的字节

假如发送端此时发送了“456”和“78”两个报文段,但接收端只接收到了“78”报文段,接收端还是会一直发送确认号为4的报文段。在收到确认号为4的报文后,发送端会重传”456“报文段。在接收端收到”456“报文段后,下次发送的确认号应为9

重传

TCP协议也有发送窗口和接收窗口的概念,在发送过程中会使用GBN协议和SR协议,使用时同链路层讲过的大同小异

TCP流量控制

TCP拥塞控制

TCP拥塞控制

拥塞控制是全局性问题,接收方并不知道拥塞情况具体是哪几台主机发送数据过多造成的。而流量控制是点到点之间的问题,接收方知道找哪个发送方

拥塞控制四种算法

慢开始和拥塞避免

cwnd=n表示为n个报文段,长度都为MSS

慢开始cwnd翻倍在收到之前发送报文的确认后立刻发生

快重传和快恢复

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

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

相关文章

《Fundamentals of Power Electronics》——全桥型隔离降压转换器

以下是关于全桥型隔离降压转换器的相关知识点: 全桥变压器隔离型降压转换器如下图所示。 上图展示了一个具有二次侧绕组中心抽头的版本,该电路常用于产生低输出电压。二次侧绕组的上下两个绕组可以看作是两个单独的绕组,因此可以看成是具有变…

#const成员

基于写的日期类的实现,去分析const成员的问题。 需要用到下面的两个函数。 这个时候我们去构建一个const Date,如下,这是不和法的,为什么呢? 其实这里涉及一个权限放大的问题,之前就说了,权限可以缩小&…

项目部署总结

1、安装jdk 第一步:上传jdk压缩安装包到服务器 第二步:将压缩安装包解压 tar -xvf jdk-8uXXX-linux-x64.tar.gz 第三步:配置环境变量 编辑/etc/profile文件,在文件末尾添加以下内容: export JAVA_HOME/path/to/j…

应急学院物联网应急安全产教融合基地解决方案

第一章 背景 1.1物联网应急安全产教融合发展概况 物联网应急安全产教融合发展是当前社会发展的重要趋势。随着物联网技术的广泛应用,应急安全领域对人才的需求日益迫切。因此,产教融合成为培养高素质、专业化人才的关键途径。在这一背景下,…

Kotlin泛型之 循环引用泛型(A的泛型是B的子类,B的泛型是A的子类)

IDE(编辑器)报错 循环引用泛型是我起的名字&#xff0c;不知道官方的名字是什么。这个问题是我在定义Android 的MVP时提出来的。具体是什么样的呢&#xff1f;我们看一下我的基础的MVP定义&#xff1a; interface IPresenter<V> { fun getView(): V }interface IVie…

云原生Kubernetes: K8S 1.29版本 部署Sonarqube

一、实验 1.环境 &#xff08;1&#xff09;主机 表1 主机 主机架构版本IP备注masterK8S master节点1.29.0192.168.204.8 node1K8S node节点1.29.0192.168.204.9node2K8S node节点1.29.0192.168.204.10已部署Kuboard &#xff08;2&#xff09;master节点查看集群 1&…

【已解决】Python Selenium chromedriver Pycharm闪退的问题

概要 根据不同的业务场景需求&#xff0c;有时我们难免会使用程序来打开浏览器进行访问。本文在pycharm中使用selenium打开chromedriver出现闪退问题&#xff0c;根据不断尝试&#xff0c;最终找到的问题根本是版本问题。 代码如下 # (1) 导入selenium from selenium import …

RDD算子使用----transformation转换操作

RDD算子使用 transformation转换操作 map算子 rdd.map(p: A > B):RDD&#xff0c;对rdd集合中的每一个元素&#xff0c;都作用一次该func函数&#xff0c;之后返回值为生成元素构成的一个新的RDD。 val sc new SparkContext(conf)//map 原集合*7val list 1 to 7//构建…

纯血鸿蒙APP实战开发——全局状态保留能力弹窗

全局状态保留能力弹窗 介绍 全局状态保留能力弹窗一种很常见的能力&#xff0c;能够保持状态&#xff0c;且支持全局控制显隐状态以及自定义布局。使用效果参考评论组件 效果图预览 使用说明 使用案例参考短视频案例 首先程序入口页对全局弹窗初始化&#xff0c;使用Globa…

Redis基本數據結構 ― List

Redis基本數據結構 ― List 介紹常用命令範例1. 將元素推入List中2. 取得List內容3. 彈出元素 介紹 Redis中的List結構是一個雙向鏈表。 LPUSH LPOP StackLPUSH RPOP QueueLPUSH BRPOP Queue(消息隊列) 常用命令 命令功能LPUSH將元素推入列表左端RPUSH將元素推入列表右…

ZooKeeper 环境搭建详细教程之三(真集群)

ZooKeeper 搭建详细步骤之三(真集群) ZooKeeper 搭建详细步骤之二(伪集群模式) ZooKeeper 搭建详细步骤之一(单机模式) ZooKeeper 及相关概念简介 真集群搭建 搭建 ZooKeeper 真集群涉及多个步骤,包括准备环境、配置文件设置、启动服务以及验证集群状态。 以下是一个简…

如何基于Zookeeper实现注册中心模型?

在分布式系统中&#xff0c;通常会存在几十个甚至上百个服务&#xff0c;开发人员可能甚至都无法明确系统中到底有哪些服务正在运行。另一方面&#xff0c;我们很难同时确保所有服务都不出现问题&#xff0c;也很难保证当前的服务部署方式不做调整和优化。由于自动扩容、服务重…

天冕科技亮相第十七届深圳国际金融博览会!

第十七届深圳国际金融博览会在深圳会展中心正式开幕&#xff0c;天冕科技跟随南山区组团集体亮相&#xff0c;充分展现金融活力。此次金博会&#xff0c;南山区政府共遴选了包括天冕科技在内的三家优秀金融科技企业组团参展&#xff0c;以特色与创新的案例展示了辖区金融业发展…

Power BI:如何将文件夹批量Excel(多sheet页)文件导入?

故事背景&#xff1a; 业务同事想用Power BI分析近两年市场费用。 数据源全部是Excel文件&#xff0c;并且以每月一个Excel文件的方式&#xff0c;统一存放到同一文件夹下面。 重点&#xff0c;每张Excel文件会有多张sheet页&#xff0c;用区分每家分公司的费用信息。 目前…

照片误删怎么办?华为手机删除的照片如何恢复?

我们在使用华为手机时&#xff0c;可能会因为各种原因不小心删除一些照片。如果这些照片对我们来说很重要&#xff0c;那么恢复它们是非常必要且急迫的。那么华为手机删除的照片如何恢复呢&#xff1f;本文将为您介绍3种恢复华为手机中误删照片的方法。 如何恢复华为手机中被删…

Vue3 v3.4之前如何实现组件中多个值的双向绑定?

文章目录 基础代码1. watch2. computed&#xff08;推荐&#xff09; 官方给的例子是关于el-input的&#xff0c;如下。但是input不是所有组件标签都有的属性啊&#xff0c;有没有一种通用的办法呢&#xff1f; <script setup> defineProps({firstName: String,lastName…

VS2022 配置OpenCV开发环境详细教程

OpenCV OpenCV&#xff08;Open Source Computer Vision Library&#xff09;是一个开源的计算机视觉和机器学习软件库&#xff0c;由Intel开发并首先发布于1999年。OpenCV被广泛用于实时图像处理、视频分析、物体检测、面部识别、机器人视觉以及许多其他领域。它支持C、Pytho…

【vscode环境配置系列】vscode远程debug配置

VSCODE debug环境配置 插件安装配置文件debug 插件安装 安装C/C, C/C Runner 配置文件 在项目下建立.vscode文件夹&#xff0c;然后分别建立c_cpp_properties.json&#xff0c; launch.json&#xff0c;tasks.json&#xff0c;内容如下&#xff1a; c_cpp_properties.json:…

机器学习:基于Sklearn、XGBoost框架,使用逻辑回归、支持向量机和XGBClassifier预测帕金森病

前言 系列专栏&#xff1a;机器学习&#xff1a;高级应用与实践【项目实战100】【2024】✨︎ 在本专栏中不仅包含一些适合初学者的最新机器学习项目&#xff0c;每个项目都处理一组不同的问题&#xff0c;包括监督和无监督学习、分类、回归和聚类&#xff0c;而且涉及创建深度学…

Panoptic Domain Adaptive Mask R-CNN (PDAM) 论文总结

论文&#xff08;CVPR会议&#xff09;&#xff1a; Unsupervised Instance Segmentation in Microscopy Images via Panoptic Domain Adaptation and Task Re-weighting &#xff08;TMI期刊&#xff09;&#xff1a;PDAM: A Panoptic-Level Feature Alignment Framework for …