计网Lesson14 - 传输层协议头分析

文章目录

  • 1. 传输层概述
    • 1.1 传输层的作用
    • 1.2 传输层中两个重要协议
      • 1.2.1 TCP
      • 1.2.2 UDP
      • 1.2.3. 因特网中典型应用使用的运输层协议
    • 1.3 运输层端口号
    • 1.4 UDP和TCP的对比
  • 2. UDP报文段格式
    • UDP首部构成
  • 3. TCP报文段格式
    • TCP首部构成
    • 序号和确认号的计算



1. 传输层概述

1.1 传输层的作用

  • 计网中的物理层、数据链路层和网络层共同解决了异构网络之间的通讯问题,实现主机到主机的通信
  • 传输层的主要任务是:为运行在不同主机上的应用进程提供直接的逻辑通信服务,也叫端到端的通信
  • 传输层为应用层提供端口,用来区分不同应用进程的标识符,为应用层屏蔽了下层的细节,好像一根管道直接连接了两主机的同一应用。

1.2 传输层中两个重要协议

1.2.1 TCP

  • 传输控制协议(Transmission Control Protocol,TCP)为其上层提供的是面向连接的可靠的数据传输服务。
  • 使用双方必须先建立逻辑上的TCP连接。在传输完数据之后必须释放TCP连接。
  • TCP为了实现可靠传输,就必须使⽤很多措施,例如TCP连接管理、确认机制、超时重传、流量控制以及拥塞控制等。
  • TCP的实现复杂,TCP报⽂段的首部比较大,占用处理机资源比较多。

1.2.2 UDP

  • ⽤户数据报协议(User Datagram Protocol,UDP)为其上层提供的是⽆连接的不可靠的数据传输服务。
  • 使⽤UDP通信的双方,在传送数据之前不需要建立连接。
  • UDP不需要实现可靠传输,因此不需要使用实现可靠传输的各种机制。
  • UDP的实现简单,UDP⽤户数据报的首部比较小。

1.2.3. 因特网中典型应用使用的运输层协议

在这里插入图片描述

1.3 运输层端口号

在这里插入图片描述
在这里插入图片描述

  • TCP(传输控制协议)和UDP(用户数据报协议)的端口号是独立的,它们之间没有任何关系。也就是说,同一台计算机上的TCP端口12345和UDP端口12345可以同时存在,它们是完全不同的端口,互不影响。这是因为TCP和UDP是两种不同的协议,它们各自维护自己的端口号空间。所以,当我们谈论网络端口时,必须同时指明协议类型(TCP或UDP)和端口号。例如,“TCP端口80”和“UDP端口80”指的是两个完全不同的端口。

1.4 UDP和TCP的对比

在这里插入图片描述



2. UDP报文段格式

  • UDP不需要建立连接,减少了建立与释放连接的开销。
  • UDP不保证可靠传输
    • 所以没有很复杂的协议头的参数,首部仅占 8 8 8字节(TCP占 20 20 20字节)。

在这里插入图片描述

UDP首部构成

  • UDP⻓度
    • 占16位,描述首部的长度+数据长度的和。
  • 校验和
    • 伪首部 + 首部 + 数据在这里插入图片描述

    • 伪首部是由传输层的UDP自行构造出的的首部,用于计算校验和,计算完成后丢掉。
      在这里插入图片描述



3. TCP报文段格式

TCP首部构成

在这里插入图片描述

  • 序号

    • 对于一些大数据,我们会对齐进行分包,所以需要依靠序号来给包排序。
    • 占32⽐特,取值范围 0 0 0 ~ 2 32 − 1 2^{32}-1 2321。当序号增加到最后⼀个时,下⼀个序号又回到0。
    • 序号是根据包的字节数来累加的,例如序号从 0 0 0开始,发出了一个大小为 100 100 100字节的包,那么下一个包的序号就是 99 + 1 = 100 99 + 1 = 100 99+1=100,也就是下一个包开始的序号。
  • 确认号

    • 占用32位,取值范围是 0 0 0 ~ 2 32 − 1 2^{32}-1 2321。当确认号增加到最后一个时,下一个确认号会回到0。这是用来指出期望收到对方下一个TCP报文段的数据载荷的第一个字节的序号,同时也是对之前收到的所有数据的确认
    • 确认号跟序号是联动的。
  • 确认标志位ACK

    • 只有当ACK取值为 1 1 1时,确认号字段才有效。ACK取值为 0 0 0时,确认号字段无效。TCP规定:在TCP连接建立后,所有传送的TCP报文段都必须把ACK置 1 1 1
  • 数据偏移

    • 占4比特,该字段的取值以4字节为单位。
      • 也就是说,真实长度 = 值 * 4
    • 指出TCP报⽂段的数据载荷部分的起始处距离TCP报⽂段的起始处有多远,这实际上指出了TCP报文段的首部长度。
  • 窗口

    • 占16比特,该字段的取值以字节为单位。
    • 指出发送本报文段的一方的接收窗口的大小,即接收缓存的可用空间大小,这⽤来表征接收方的接收能力。
    • 在计算机网络中,经常用接收方的接收能力的大小来控制发送方的数据发送量,这就是所谓的
      流量控制。
  • 校验和

    • 占16比特,用来校验TCP报文段在传输中是否出现错误。在这里插入图片描述
  • 标志位

    • 同步标志位SYN
      • SYN为1的TCP报文段要么是⼀个连接请求报文段,要么是⼀个连接响应报文段。
    • 终⽌标志位FIN
      • ⽤于TCP“四报文挥手”释放连接。
      • 当FIN=1时,表明此TCP报文段的发送方已经将全部数据发送完毕,现在要求释放TCP连接。
    • 复位标志位RST
      • ⽤于复位TCP连接。
      • 当RST=1时,表明TCP连接中出现严重差错,必须释放连接,然后再重新建⽴连接。
      • RST置1还⽤来拒绝⼀个⾮法的TCP报⽂段或拒绝打开⼀个TCP连接。
    • 推送标志位PSH
      • 发送⽅TCP把PSH置1,并⽴即创建⼀个TCP报⽂段发送出去,⽽不需要积累到足够多的数据再发送。
      • 接收⽅TCP收到PSH为1的TCP报⽂段,就尽快地交付给应⽤进程,⽽不再等到接收到足够 多的数据才向上交付。
  • 选项(长度可变,最大40字节)

    • 最⼤报⽂段⻓度MSS选项:指出TCP报⽂段数据载荷部分的最大长度,而不是整个TCP报⽂段的⻓度。
    • 窗⼝扩⼤选项:⽤来扩⼤窗⼝,提⾼吞吐率。
    • 时间戳选项:
      • ⽤于计算往返时间RTT
      • ⽤于处理序号超范围的情况,⼜称为防⽌序号绕回PAWS。
    • 选择确认选项:⽤来实现选择确认功能。

序号和确认号的计算

在这里插入图片描述
在这里插入图片描述
1. 根据第三个包算出第一个包的序列号: 900 − 400 − 300 = 200 900 - 400 - 300 = 200 900400300=200
2. 得到第一个包的确认号: 200 + 300 = 500 200 + 300 = 500 200+300=500
3. 由于第二个包丢了,所以需要重传,返回 500 500 500

总之差不多是这样的:
甲:

  • 序号A,确认号K,数据长度length。

乙:

  • 序号K,确认号A + length。

总结:翻转(加长度)

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

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

相关文章

Typora结合PicGo + 使用Github搭建个人免费图床

文章目录 一、国内图床比较二、使用Github搭建图床三、PicGo整合Github图床1、下载并安装PicGo2、设置图床3、整合jsDelivr具体配置介绍 4、测试5、附录 四、Typora整合PicGo实现自动上传 每次写博客时,我都会习惯在Typora写好,然后再复制粘贴到对应的网…

数据结构--双向链表专题

目录 1. 双向链表的结构2. 实现双向链表预先的准备初始化尾插、头插尾删、头删查找在pos位置之后插⼊数据删除pos位置的数据 3. 顺序表和双向链表的分析 1. 双向链表的结构 注意:这里的“带头”跟前面我们说的“头结点”是两个概念,为了更好的理解直接称…

【教程】 iOS混淆加固原理篇

目录 摘要 引言 正文 1. 加固的缘由 2. 编译过程 3. 加固类型 1) 字符串混淆 2) 类名、方法名混淆 3) 程序结构混淆加密 4) 反调试、反注入等一些主动保护策略 4. 逆向工具 5. OLLVM 6. IPA guard 7. 代码虚拟化 总结 摘要 本文介绍了iOS应用程序混淆加固的缘由…

文献阅读:Transformers are Multi-State RNNs

文献阅读:Transformers are Multi-State RNNs 1. 内容简介2. 方法介绍 1. 基础回顾 1. RNN2. Transformer 2. Transformer解构 1. MSRNN2. Transformer 3. TOVA 1. 现有转换策略2. TOVA 3. 实验考察 & 结论 1. 实验设计2. 实验结果 1. LM2. 长文本理解3. 文本生…

Window部署Exceptionless

Exceptionless Elasticsearch 版本: Exceptionless:8.1.0 Elasticsearch:7.17.5 JDK:11.0.10 目录 一、Elasticsearch运行 二、 Exceptionless 一、Elasticsearch运行 bin目录下elasticsearch.bat 直接运行 访问 http://lo…

【10】知识图谱实战案例(动手做)

目录 案例1:使用neo4j构建小型金融行业知识图谱 案例2:基于金融知识图谱的问答机器人 案例3:基于金融知识图谱的企业风险挖掘 案例4:使用MRC技术完成事件抽取 案例5:基于法律领域的知识图谱 案例【6】&#xff1a…

电路设计(30)——二进制转十进制电路的Multisim仿真

1.设计要求 输入8位二进制数据,输出三位十进制,将转换后的数据显示在数码管上。 2.电路设计 此时输入为0111_1111,结果为127,正确。 3.芯片介绍 74191芯片是一款4位二进制同步上升/下降计数器,它属于TTL(…

线程普通任务执行流程

(1)先判断是否存在空闲线程,存在直接分配,不存在执行(2); (2)判断工作线程数量小于核心数量,未超出创建核心线程执行线程任务,超出执行&#xff…

k8s笔记26--快速实现prometheus监控harbor

k8s笔记26--快速实现prometheus监控harbor 简介采集指标&配置grafana面板采集指标配置grafana面板 说明 简介 harbor是当前最流行的开源容器镜像仓库项目,被大量IT团队广泛应用于生产、测试环境的项目中。本文基于Harbor、Prometheus、Grafana介绍快速实现监控…

查看ubuntu系统的版本信息(3个方法)

查看发现版本信息 lsb_release -a发行版本:Ubuntu 16.04.6 LTS 查看内核和系统位数信息 uname -a内核信息:Linux prod.aixundian.gpu-0 4.4.0-151-generic系统位数:x86_64 查看内核和编译信息 cat /proc/version内核信息:Lin…

林浩然与杨凌芸的Scala编程历险记:变量与数据类型的魔法对决

林浩然与杨凌芸的Scala编程历险记:变量与数据类型的魔法对决 在Scala世界的梦幻殿堂中,两位英勇的程序员——林浩然和杨凌芸正准备开启一场代码之旅。这次,他们将深入探索Scala王国中的变量奥秘与数据类型丛林。 一、变量声明篇 &#xff0…

【Prometheus】概念和工作原理介绍

目录 一、概述 1.1 prometheus简介 1.2 prometheus特点 1.3 prometheus架构图 1.4 prometheus组件介绍 1、Prometheus Server 2、Client Library 3、pushgateway 4、Exporters 5、Service Discovery 6、Alertmanager 7、grafana 1.5 Prometheus 数据流向 1.6 Pro…

2024国际生物发酵展览会独家解读-力诺天晟科技

参展企业介绍 北京力诺天晟科技有限公司,专业致力于智能仪器仪表制造,工业自动控制系统用传感器、变送器的研发、设计、销售和服务。 公司坐落于首都北京行政副中心-通州区,下设生产子公司位于河北香河经济开发区,厂房面积 300…

恢复软件哪个好用?记好这3个文件恢复宝藏!

“现在市面上的恢复软件太多啦!哪款恢复软件比较好用呢?大家可以给我推荐几个靠谱的恢复软件或者方法吗?感谢!” 在日常使用电脑的过程中,文件丢失或删除是一个常见的问题,而恢复软件成为解决这一问题的得力…

B端系统美观和易用上的缺失,该如何补位?

Hi,我是贝格前端工场的老司机,客户对B端系统的界面和体验要求越来越高,但是很多系统在上线之后有很多缺失,本文就列举缺失现象,给出一些补位策略,欢迎友友们支持关注我。 一、缺失的具体表现 在B端系统中…

matlab滤波器设计

1、内容简介 略 51-可以交流、咨询、答疑 2、内容说明 略 3、仿真分析 略 matlab滤波器设计-butter、ellip、cheby1、cheby2_哔哩哔哩_bilibili 4、参考论文 略

【项目部署上线】宝塔部署前端Docker部署后端

【项目部署上线】宝塔部署前端&Docker部署后端 文章目录 【项目部署上线】宝塔部署前端&Docker部署后端1.安装依赖1.1 安装mysql1.2 安装Canal1.3 安装redis1.4 安装rabbitmq1.5 安装nacos 2. 部署前端3. 部署后端 1.安装依赖 1.1 安装mysql docker run -d -p 3306:3…

高效!中科院2区SCI,不到两个月录用!审稿人很给力!

【SciencePub学术】 JOURNAL OF ENVIRONMENTAL SCIENCES IF(2022):6.9,JCR1区,中科院2区 数 期刊数据指标 ISSN:1001-0742 IF(2022):6.9 自引率:4.30% 年发文量:300篇左右 国人占比&…

【其他】简易代码项目记录

1. KeypointDetection 1.1. CharPointDetection 识别字符中的俩个关键点。 1.2. Facial-keypoints-detection 用于检测人脸的68个关键点示例。 1.3. Hourglass-facekeypoints 使用基于论文Hourglass 的模型实现人体关键点检测。 1.4. Realtime-Action-Recognition containing:…

2024年2月16日优雅草蜻蜓API大数据服务中心v1.1.1大更新-UI全新大改版采用最新设计ui·增加心率计算器·退休储蓄计算·贷款还款计算器等数接口

2024年2月16日优雅草蜻蜓API大数据服务中心v1.1.1大更新-UI全新大改版采用最新设计ui增加心率计算器退休储蓄计算贷款还款计算器等数接口 更新日志 前言:本次更新中途跨越了很多个版本,其次本次ui大改版-同步实时发布教程《带9.7k预算的实战项目layuiph…