第三章 传输层

news2024/10/1 15:10:30

传输层基本服务

  • 传输层核心任务是为应用进程之间提供端到端的逻辑通信服务
  • 传输层主要实现功能:传输层寻址、对应用层报文进行分段和重组、对报文进行差错检测、实现进程间的端到端的可靠数据传输控制、面向应用层实现复用与分解、实现端到端的流量控制、拥塞控制

传输层寻址与端口

  • TCP/IP体系结构寻址的解决方案:“IP地址+端口号”标识一个通信端点
  • 端口号为16位整数、0-1023为数字端口号;1024-49151为登记端口号,必须在互联网数字分配结构(IANA)登记,避免重复;49152-65535为客户端口号或短暂端口号,留给客户进程或用户开发的非标准服务器暂时使用
  • FTP默认端口号21,HTTP默认端口号80、SMTP默认端口号25、DNS默认端口号53

传输层的复用与分解

  • 一个网络应用进程通过一个或多个套接字,实现与传输层之间的数据传递即发送数据和接收数据

无连接的多路复用与多路分解

  • 为UDP分配端口号的两种方法:创建一个UDP套接字时,传输层自动为该套接字分配一个端口号;创建一个UDP套接字后,通过调用bind()为该套接字绑定一个特定端口号
  • UDP套接字是一个二元组(源端口号,目的端口号)

在这里插入图片描述

面向连接的多路复用与多路分解

  • TCP套接字是一个四元组(源端口号,目的端口号,源IP地址,目的IP地址)

在这里插入图片描述

停-等协议与滑动窗口协议

  • 实现可靠数据传输的措施:
    • 差错检测:利用差错编码实现数据包传输过程中的比特差错检测(甚至纠正)
    • 确认:接收方向发送方反馈接收状态
    • 重传:发送方重新发送接收方没有正确接收的数据
    • 序号:确保数据按序提交
    • 计时器:解决数据丢失问题
  • 停–等协议基本工作过程:发送方发送经过差错编码和编号的报文段,等待接收方的确认;接收方如果正确接收报文段,即差错检测无误且序号正确,则接收报文段,向发送方发送ACK,否则丢弃报文段,并向发送方NAK
  • 滑动窗口协议:发送方和接收方各维护一个窗口,分别为发送窗口Ws和接收窗口Wr
  • GBN协议——回退N步;发送窗口Ws>=1,接收窗口Wr=1
    • GBN必须响应三种类型的事件:上层调用、收到1个ACKn、计时器超时
    • 工作流程简述如下:发送方连续发送多个帧,接收方一个一个按序接收,若是碰到超时或未收到,则重发该帧及其后所有帧

在这里插入图片描述

  • SR协议——选择重传
    • SR协议工作流程简述:接收方发现某帧出错后,后续收到的帧可以暂时先存起来,将出错的帧位置留出相应空位

在这里插入图片描述

注意:SR可以以排队给没来的人留空位理解,GBN可以简单理解为数据库中的事务操作(“取钱一系列操作”——要做都做,要不做都不做)

用户数据报协议UDP

  • 用户数据报协议UDP是Internet传输层协议,提供无连接、不可靠、数据报尽力传输的服务
  • 应用UDP的原因:
    • 应用进程更容易控制发送什么数据以及何时发送
    • 无需建立连接
    • 无连接状态
    • 首部开销小
  • UDP数据报结构:

在这里插入图片描述

  • UDP首部只有4个字段,每个字段由两个字节组成,源和目的端口号用于UDP实现复用和分解
  • UDP校验和求解过程:
    - 按照16位进行按位求和
    - 运算中有溢出回卷
    - 将得到的结果求反码

传输控制协议TCP

  • 传输控制协议(TCP)是Internet一个重要的传输层协议,提供面向连接、、可靠、有序、字节流传输服务
  • 为了实现可靠传输,TCP采用的措施如下:差错检测、重传、累积确认、定时器以及序号和确认序号等
  • TCP报文段结构

在这里插入图片描述

  • 源端口号和目的端口号,占16位,用于多路复用/分解来自或送到上层应用的数据
  • 序号和确认序号,占32位,序号哦是对每个应用层数据的每个字节进行编号,确认序号是期望从对方接收数据的字节序号,TCP采用累积确认机制
  • 首部长度(数据偏移),占4位,长度可变最大位60字节,选项字段最多为40字节
  • 保留,占6位,目前值为0
  • URG、ACK、PSH、RST、SYN、FIN各占1位,共6位
    • URG=1——紧急指针字段有效,尽快传输
    • ACK=1——确认序号有效,反之无效
    • PSH=1——尽快将报文段中的数据据交付接收应用进程
    • RST=1——出现严重差错,必须释放连接,再重新建立连接
    • SYN=1——建立新连接请求控制段或同意建立新连接的确认段
    • FIN=1——释放一个TCP连接
  • 接收窗口,占16位,向对方通告接收窗口大小
  • 校验和字段,占16位
  • 紧急指针,16位,URG=1时有效
  • 选项字段,最大段长度MSS,用于对付TCP通告其缓存能够接受的数据段的最大长度是MSS个字节
  • 填充字段,长度为0-3字节,取值全为0,目的是为了使整个首部长度是4字节的整数倍
  • TCP连接管理:
    • 三次握手

在这里插入图片描述

  • 详细解释如下:
    • 客户端作为连接建立发起端,选择客户端初始序列号,向服务器发送(SYN=1,seq=x)的SYN段
    • 服务器收到SYN后,选择服务器初始序列号y,向客户发送(syn=1,ack=1,seq=y,ack_seq=x+1)
    • 客户端收到服务器发送报文,向服务器发送(ACK=1,seq=x+1,ack_seq=y+1)的ACK段,当服务器收到ACK后,连接建立
  • 四次挥手

在这里插入图片描述

  • 详细解释如下:
    • 客户向服务器发送完最后一个数据段后,发送一个FIN段(FIN=1,seq=u),请求断开客户到服务器的连接
    • 服务器收到后,发送一个ACK段(ACK=1,seq=v,ack_seq=u+1)
    • 服务器发送完最后一个数据段后,服务器向客户发送FIN段(FIN=1,ACK=1,seq=w,ack_seq=u+1)
    • 客户收到服务器发送的FIN段后,向服务器发送ACK段(FIN=1,ACK=1,seq=w,ack_seq=u+1),断开连接
  • TCP能够提供可靠的数据传输服务,是通过一下工作机制来实现的:
    • 应用数据被分割为TCP任务最适合发送的数据库(MSS),封装为TCP段
    • TCP发出一个段后,启动一个计时器
    • 校验和字段,用于检测数据在传输过程中是否发生差错
    • 根据序号程序排序
    • 重复报文段丢弃
    • 流量控制
  • TCP流量控制:协调协议发送方和接收方的数据发送和接收速度,避免因发送方发送数据太空,超出接收方的数据接收和处理能力,导致接收方被数据“淹没”
  • 拥塞控制:通过合理调度、规范、调整向网络中发送数据的主机数量、发送速率或数据量,以避免拥塞或尽快消除已发生的拥塞

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

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

相关文章

C++中的引用

上一次,我们只是浅浅的提了一下引用‘&’,那么今天,我们就正式减少一下引用,以及引用是什么,还有就是引用和指针的区别,引用的特点 首先,我们回顾一下什么是引用,引用就是取别名…

MapReduce原理

MapReduce 编程规范 MapReduce 的开发一共有八个步骤, 其中 Map 阶段分为 2 个步骤,Shuffle 阶段 4 个步骤,Reduce 阶段分为 2 个步骤Map 阶段 2 个步骤 设置 InputFormat 类, 将数据切分为 Key-Value(K1和V1) 对, 输入到第二步自定义 Map 逻辑, 将第一…

十五周算法训练营——链表专题

今天是十五周算法训练营的第三周,主要讲链表专题,包含:反转链表、移除链表、交换链表、链表相交、删除链表中的倒数第N个节点、环形链表II。(欢迎加入十五周算法训练营,与小伙伴一起卷算法——文章末尾进群&#xff09…

【我的创作纪念日】恒川的创作一周年

机缘 大家好,我是热爱跑步的恒川,今天是个特殊的日子(我的创作纪念日),在去年的今天,我发了第一篇博文。去年的时候,刚接触到CSDN,只想把他当作一个学习的工具,后来&…

Node.js -- Express路由

1.路由的概念 在Express中,路由指的是客户端的请求与服务器处理函数之间的关系。 Express中的路由分为三部分,分别是请求的类型,请求的URL地址和处理函数。格式如下: app.METHOD(PATH,HANDLER)例子如下: // 匹配 GE…

【计算几何3】博物馆问题和相关证明

( gallery problem or museum problem ) Art gallery problem - Wikipedia 一、说明 画廊问题是一个基本的计算几何问题,最现实的反映是,到底对一个场景监视会用到几个摄像头。更深刻的层次是,如何对场景生成地图&am…

C生万物 | 十分钟带你学会位段相关知识

结构体相关知识可以先看看这篇文章 —— 链接 一、什么是位段 位段的声明和结构是类似的,有两个不同: 位段的成员必须是 int、unsigned int 或signed int位段的成员名后边有一个冒号和一个数字 在下面,我分别写了一个结构体和一个位段&…

嵌入式51单片机01-开发版介绍与LED流水灯系列

文章目录1. STC89C52单片机介绍2. 单片机预备知识3. LED灯操作系列1. 点亮LED(1)LED原理图连接方式(2) proteus接线图(3)keil代码2. LED灯闪烁(1)实验电路图(2&#xff0…

每日一题104——转置矩阵

给你一个二维整数数组 matrix, 返回 matrix 的 转置矩阵 。 矩阵的 转置 是指将矩阵的主对角线翻转,交换矩阵的行索引与列索引。 示例 1: 输入:matrix [[1,2,3],[4,5,6],[7,8,9]] 输出:[[1,4,7],[2,5,8],[3,6,9]] 示…

大佬们隔空互怼

阅读本文大概需要 1.14 分钟。1、最近国内各大互联网公司都在掀起一股大模型热潮,要想让这股热潮变得更持久更精彩,离不开互联网大佬们的添砖加瓦。比如上周搜狗的王小川跟百度的肖阳,两位互联网大佬隔空互怼的场景,一度让大家觉得…

时序分析 49 -- 贝叶斯时序预测(一)

贝叶斯时序预测(一) 时序预测在统计分析和机器学习领域一直都是一个比较重要的话题。在本系列前面的文章中我们介绍了诸如ARIMA系列方法,Holt-Winter指数平滑模型等多种常用方法,实际上这些看似不同的模型和方法之间都具有千丝万缕…

SpringBoot中处理日期的两种方式(消息转换器)

在Spring Boot中,我们通常会使用Jackson来序列化和反序列化Java对象到JSON。在进行日期序列化时,我们需要指定日期格式,否则Jackson会使用默认格式,这可能不是我们想要的。要指定日期格式,有两种方式: 如果没有处理按照默认的结果如下图: 所以我们需要通过一些手段来对日期进行…

总结一下Redis的缓存雪崩、缓存击穿、缓存穿透

缓存是提高系统性能的一种常见手段,其中Redis是一种常用的高性能缓存数据库。但是在使用缓存时,可能会遇到一些问题,比如缓存击穿、缓存穿透、缓存雪崩等问题,本文将介绍这些问题的概念、原因以及解决方案。 缓存击穿 缓存击穿指…

Jenkins——用户管理、授权策略配置以及Jenkins安全配置管理

这里写目录标题一、Jenkins用户管理1、进入系统管理界面2、创建用户3、编辑用户信息4、编辑用户信息5、删除用户信息二、Jenkins授权策略配置1、授权策略插件2、安装插件:Role-based Authorization Strategy3、管理角色a、全局角色 Global rolesb、项目角色 Item rolesc、节点角…

CVPR | 达摩院开源自监督学习框架CoKe, 单机8卡可训练

团队模型、论文、博文、直播合集,点击此处浏览 一、论文 论文链接: Unsupervised Visual Representation Learning by Online Constrained K-Means 代码链接:https://github.com/idstcv/CoKe 二、背景 虽然基于instance的自监督学习方法在ImageNet上…

注册claude AI账号 slack工作区账号

Claude 是建立在 slack工作区的一个AI人工助手,更像是将chatgpt集成到了会议模式,一个账号实际上拥有了你的会议室和你的AI助手,你可以让你的朋友和同事进入你的房间体验。 Claude是不是openai的产物?目前还不知道,不…

RS232/RS485/RS422 接线说明

RS232/RS485/RS422 接线 文章目录RS232/RS485/RS422 接线RS232RS485422RS232 设备A 和 设备B 没有硬件流控 设备A设备BTXDRXDRXDTXDGNDGND 设备A 和 设备B 使用RTS/CTS 做硬件流控 一般使用RTS/CTS都会由232芯片自动控制, 比如XR21V1414, 需要设备gpio mode 为00…

Docker安装+利用docker安装MySQL(保姆级教程)

前言:本文基于docker安装MySQL,如果还没安装docker的童鞋,点击这里(超大声)安装卸载老版本docker(超详细) 一、在docker仓库搜你想要的镜像版本 docker镜像仓库 打开官网,在搜索框…

Docker 镜像制作 服务编排 私有仓库

DockerNginx部署Redis部署Dockerfile镜像制作容器转为镜像dockerfileDocker服务编排Docker ComposeDocker Compose安装使用docker compose编排nginxspringboot项目Docker私有仓库私有仓库搭建将镜像上传至私有仓库Nginx部署 案例:需求 在Docker容器中部署Nginx&…

【ARMv8 异常模型入门及渐进2 - 系统寄存器访问方法:op1,CRn,CRm,op2】

文章目录1.1 ARMv8 系统寄存器访问概要1.1.1 系统寄存器访问级别1.1.2 ARMv8 系统寄存器编码1.1 ARMv8 系统寄存器访问概要 ARMv8中,取消了协处理器,之前协处理器实现的功能,全部由系统寄存器来是实现。对于系统寄存器的访问,使用…