当前位置: 首页 > news >正文

lec5-传输层原理与技术

lec5-传输层原理与技术

1. 传输层概述

1.1. 关键职责

  • flow control,流量控制
  • reliability,可靠性

1.2. TCP与UDP对比

  • 面向连接 / 不能连接
  • 对数据校验 / 不校验数据
  • 丢失重传 / 不会重传
  • 有确认机制 / 没有确认
  • 滑动窗口流量控制 / 不会流量控制

1.3. 关于端口(可能选择,记住一些)

  • 端口占据 2 Bytes, 数字 0 - 65535;
  • 端口可以分为熟知端口,和登记端口,短暂端口
    • 熟知端口:0-1023(0-255的端口是为了TCP和UDP服务保留的)
    • 登记端口:102-49151
    • 短暂端口:49152-65535

在这里插入图片描述

  • DHCP:服务器端口67,客户端口68;
  • FTP:端口21(控制),20(传数据);
  • TELNET:23;
  • DNS:53;
  • HTTP:80;
  • HTTPS:443;

1.4. socket

<ip_address, port>唯一确定套接字

<ip_address, port> 源加目的 -》唯一确定连接

2. TCP协议

2.1. TCP报文结构

在这里插入图片描述

  • 源端口,目的端口;

  • 序号:TCP为每一个字节进行编号,序号里是该报文的第一字节的序号;

  • 确认号:表示期望收到的下一个字节的编号(前面收到了);

  • 数据偏移(首部长度):4位,表示最多是60个字节长度(固定同样是20,最长同样是60,像IP)

  • URG:紧急情况;

  • ACK:确认,当ACK=1的时候,确认号才生效

  • PSH:推送,不必等缓冲区满

  • RST:出现严重错误,释放连接

  • SYN:同步,表示请求连接或接受连接

  • FIN:请求释放连接(ACK,SYN,FIN是3次握手,4次挥手的关键指示,需要记住

  • 窗口:占 2 字节,用来让对方设置发送窗口的依据,单位为字节。表示可以进行传输的窗口大小是多少,即告诉接收方最多能发给我多长的数据。(这里自然想到,如果是0怎么办,后面有计时器相关问题)

  • 校验和:检验的部分包括==数据和首部两部分==

  • 紧急指针,指出在本报文段中紧急数据共有多少字节,紧急数据放在本报文段最前面

2.2. 3次握手

在这里插入图片描述

  1. 客户请求(SYN),SYN表示请求建立,seq=x表示字节流
  2. 服务器收到(SYN,ACK),SYN表示同意建立,seq=y表示自己的字节流,(ACK=1且ack=x+1,两者要同时出现),表示前面收到了前x个字节了
  3. 客户受到(ACK),ACK表示确认,seq=x+1表示自己的字节流,ack表示受到了对方的前y个字节了
    (第三次就可以开始携带数据了)

注:首部也包括在字节的编号之中,不是只有数据进行编号

2.3. 停止等待协议

  • 发送段之后,暂时保留备份
    • 没有收到确认,就要重传
    • 收到确认,抛弃备份
    • 超时计时器:如果对方的应答超过一定的时间就直接进行重发
      (时间上需要大于 二倍的平均时间

2.4. 数据传输 - 丢失确认和确认延迟

  • 发过去没有应答或者丢失:进行重传
  • 来晚的应答不做处理

2.5. 可靠通信

  • 自动重传请求(Automatic Repeat reQuest,ARQ):这表示“重新发送请求”为自动发送并且接收方无需请求发送方重新发送错误段

  • 三个指针:发送并且得到确认的,发送还没有得到确认的,窗口尾部(可以发送的最多的字节)

一个实例:仔细看,最好手算,容易错

在这里插入图片描述

  • 为什么 201 在 401 后面发送?超时重传(要超过两倍的平均传输时间后才进行重传)

2.6. 4次挥手

在这里插入图片描述

  1. 客户发起(FIN),想要释放连接
  2. 服务器(ACK),同意断开,但是需要进一步传输刚才没传输完毕的数据
  3. 服务器(FIN,ACK),表示正式可以断开
  4. 客户确认受到B的同意断开(ACK)
  • 但是,最后一段客户要等待2MSL时间,防止没有断开

2.7. TCP中的计时器

  1. 重传计时器:多长时间进行重传
  2. 坚持计时器:避免死锁(WIN = 0 的时候修改 WIN 但是没有办法发送过去):收到 WIN = 0 的时候,开始进行计时,到时间主动询问
  3. 保持计时器:(坚持连接计时器)
    1. 发送数据段后,刷新
    2. 如果到达一定的时间,则再次询问是不是还要保持连接
  4. 时间等待计时器

3. UDP

3.1. UDP的概述

  1. UDP 用于:
    1. RIP:定期发送路由信息(periodically)
    2. DNS:避免延迟建立 TCP 连接(DNS 需要快速找到)
    3. SNMP:拥塞时(congestion),SNMP 必须仍然可运行。在没有拥塞和可靠性控制机制的情况下,UDP 在这种情况下的性能要优于 TCP。(主播和多播,大量信息传输)
    4. 其他协议包括 TFTPDHCP
  2. 必要时增加应用层的可靠性
  3. 流媒体就算有数据丢失也问题不大(对屏幕进行模糊化处理就行),但是发送速率是很重要的!(就算丢包了,也可以模糊处理)

3.2. UDP的报文格式(背下来,大题

在这里插入图片描述

  • 校验需要对首部和data一起进行校验(反直觉但是确实如此)

4. NAT / PAT

4.1. NAT

  • 就是网络地址转换,将内部地址转化为外部地址;(可以解决网络地址不够用)

  • 在 NAT 路由器将局部地址转换成网络上的地址(双向转换,有一个 NAT 表)

  • 可以分为静态PAT,动态NAT,PAT

    • 静态 NAT:固定的内部地址(internal address)到注册地址(registered address)的映射(一开始就写死)
    • 动态 NAT:映射以先到先得的方式动态进行(不是写死,配一个地址池,通过更新)
    • PAT(过载,Port address translation):端口地址转换用于允许许多内部用户共享一个“内部全局”地址(基于 Socket 映射,而不是 IP 地址,多个内网主机映射到一个公网地址)

4.2. NAT地址类型

  1. Inside Local address(内部本地地址):内网 IP 地址
  2. Inside Global address(内部全局地址): 注册 IP 地址, 对外部展示的内部地址
  3. Outside Global address(外部全局地址):由主机所有者分配的 IP 地址。通常是注册地址。(对内网而言的外部,是目的地址)
    其实就是目的地址

4.3. NAT优缺点

  1. 优点:由于并非每个内部主机都需要同时进行外部访问,因此您可以使用少量的全局唯一地址池来服务相对大量的私有寻址主机。
  2. 缺点:一一映射,并没有从根本上解决地址短缺的问题。

4.4. PAT

在这里插入图片描述

可以通过端口与内部地址进行映射

相关文章:

lec5-传输层原理与技术

lec5-传输层原理与技术 1. 传输层概述 1.1. 关键职责 flow control&#xff0c;流量控制reliability&#xff0c;可靠性 1.2. TCP与UDP对比 面向连接 / 不能连接对数据校验 / 不校验数据丢失重传 / 不会重传有确认机制 / 没有确认滑动窗口流量控制 / 不会流量控制 1.3. 关…...

【C语言】_指针运算

目录 1. 指针-整数 2. 指针-指针 2.1 指针-指针含义 2.2 指针-指针运算应用&#xff1a;实现my_strlen函数 3. 指针的关系运算&#xff08;大小比较&#xff09; 1. 指针-整数 联系关于指针变量类型关于指针类型和指针-整数相关知识&#xff1a; 原文链接如下&#xff1…...

“AI智慧教学系统:开启个性化教育新时代

大家好&#xff0c;我是老王&#xff0c;一个在产品圈摸爬滚打多年的资深产品经理。今天&#xff0c;我想和大家聊聊一个最近特别火的概念——AI智慧教学系统。这东西听起来好像很高大上&#xff0c;但其实和我们每个人都息息相关&#xff0c;因为它关系到我们下一代的教育。 一…...

商用车自动驾驶,迎来大规模量产「临界点」?

商用车自动驾驶&#xff0c;正迎来新的行业拐点。 今年初&#xff0c;交通部公开发布AEB系统运营车辆标配征求意见稿&#xff0c;首次将法规限制条件全面放开&#xff0c;有望推动商用车AEB全面标配&#xff0c;为开放场景的商用车智能驾驶市场加了一把火。 另外&#xff0c;…...

CSS 学习之正确看待 CSS 世界里的 margin 合并

一、什么是 margin 合并 块级元素的上外边距(margin-top)与下外边距(margin-bottom)有时会合并为单个外边距&#xff0c;这样的现象称为“margin 合并”。从此定义上&#xff0c;我们可以捕获两点重要的信息。 块级元素&#xff0c;但不包括浮动和绝对定位元素&#xff0c;尽…...

杰发科技——使用ATCLinkTool解除读保护

0. 原因 在jlink供电电压不稳定的情况下&#xff0c;概率性出现读保护问题&#xff0c;量产时候可以通过离线烧录工具避免。代码中开了读保护&#xff0c;但是没有通过can/uart/lin/gpio控制等方式进行关闭&#xff0c;导致无法关闭读保护。杰发所有芯片都可以用本方式解除读保…...

uni-app深度解码:跨平台APP开发的核心引擎与创新实践

在当今数字化浪潮中&#xff0c;移动应用市场呈现出爆炸式增长。为了满足不同用户群体在不同操作系统上的需求&#xff0c;跨平台 APP 开发成为众多开发者的首选策略。uni-app 作为一款领先的跨平台开发框架&#xff0c;以其独特的优势和创新的实践在众多同类产品中脱颖而出。它…...

unity团结云下载项目

今天开plastic scm发现它云服务好像停了哈&#xff0c;在hub里下载云端项目也不会出现在项目列表里&#xff0c;之前也有发邮件说让提前迁移到团结云。打开云仓库会弹这个&#xff0c;大概就是plastic scm无法解析域名地址吧 研究了一下团结云咋使&#xff0c;官方手册看半天也…...

Jmeter进阶篇(31)解决java.net.BindException: Address already in use: connect报错

📚前言 近期雪雪妹妹在使用Jmeter执行压测的时候,发现了一个非常让她头疼的问题,她使用20并发跑,正确率可以达到100%,但是一旦使用200并发,就会出现大量的报错,报错内容如下: java.net.BindException: Address already in use: connectat java.net.DualStackPlainSo…...

商米电子秤服务插件

概述 SunmiScaleUTS封装商米电子秤服务模块&#xff0c;支持商米旗下S2, S2CC, S2L CC等设备&#xff0c;设备应用于超市、菜市场、水果店等,用于测量商品的重量,帮助实现快捷、准确、公正的交易等一系列商业场景。 功能说明 SDK插件下载 一. 电子秤参数 型号:S2, S2CC, …...

华为ensp-BGP路由过滤

学习新思想&#xff0c;争做新青年&#xff0c;今天学习的是BGP路由过滤 实验目的&#xff1a; 掌握利用BGP路由属性AS_Path进行路由过滤的方法 掌握利用BGP路由属性Community进行路由过滤的方法 掌握利用BGP路由属性Next_Hop进行路由过滤的方法 实验内容&#xff1a; 本实…...

Sigrity System SI SerialLink模式进行Pcie3协议仿真分析操作指导-pcie3_client_single_post

Sigrity System SI SerialLink模式进行Pcie3协议仿真分析操作指导-pcie3_client_single_post Sigrity System SI SerialLink模式提供了10个协议合规性检查工具模板,用户可以将根据实际应用替换模板中的SPICE文件,然后进行协议仿真分析,同时软件还提供了目标结果的模板MASK以…...

Python提取目标Json键值:包含子嵌套列表和字典

目标&#xff1a;取json中所有的Name、Age字典 思路&#xff1a;递归处理字典中直接包含子字典的情况&#xff0c; import jsondef find_targ_dicts(data,key1,key2):result {}if isinstance(data, dict):if key1 in data and key2 in data: # 第一层字典中包含key1和key2re…...

分享6个对象数组去重的方法

大家好&#xff0c;关于对象数组去重的业务场景&#xff0c;想必大家都遇到过类似的需求吧&#xff0c;针对这样的需求&#xff0c;你是怎么做的呢。 下面我就先和大家讨论下基于对象的某个属性如何去重。 方法一&#xff1a;使用 .filter() 和 .findIndex() 相结合的方法 使…...

Formality:官方Tutorial(一)

相关阅读 Formalityhttps://blog.csdn.net/weixin_45791458/category_12841971.html?spm1001.2014.3001.5482 本文是对Synopsys Formality User Guide Tutorial中第一个实验的翻译&#xff08;有删改&#xff09;&#xff0c;Lab文件可以从以下链接获取。 Formality官方Tu…...

力扣28找出字符串中第一个匹配项的下标

class Solution:def strStr(self, haystack: str, needle: str) -> int:# 特殊情况处理if not needle:return 0# 获取 haystack 和 needle 的长度a len(needle)b len(haystack)# 遍历 haystack&#xff0c;检查每个子字符串是否与 needle 匹配for i in range(b - a 1):if…...

【JAVA】java中将一个list进行拆解重新组装

一、使用场景 1、当需要对一个list中的元素属性进行重新赋值&#xff0c;比如一个list中存储了订单数据&#xff0c;我们需要改变list中每个订单的id&#xff0c;然后再重新输出订单list if(CollectionUtils.isNotEmpty(orderList)){ orderList.forEach(p->{ …...

在 Windows 上使用 SSH 密钥访问 Linux 服务器

本章目录: 前言1. 准备工作2. 生成 SSH 密钥对步骤 1&#xff1a;打开命令行步骤 2&#xff1a;运行 ssh-keygen 命令步骤 3&#xff1a;选择密钥保存位置步骤 4&#xff1a;设置密钥密码&#xff08;可选&#xff09;步骤 5&#xff1a;生成密钥对 3. 查看生成的密钥文件4. 将…...

小白0基础centos8安装docker

总述&#xff1a;博主作为0基础小白将详细记录第一次从centos8的下载到安装docker的过程&#xff0c;包括中间出现的问题和解决方案 1Centos8下载 参见博文CentOS 8 的安装&#xff08;官方安装、清华大学开源软件镜像站、阿里云镜像、网易镜像下的安装步骤&#xff09;_cent…...

机器学习之逻辑回归算法、数据标准化处理及数据预测和数据的分类结果报告

逻辑回归算法、数据标准化处理及数据预测和数据的分类结果报告 目录 逻辑回归算法、数据标准化处理及数据预测和数据的分类结果报告1 逻辑回归算法1.1 概念理解1.2 算法导入1.3 算法优缺点 2 LogisticRegression理解2.1查看参数定义2.2 参数理解2.3 方法2.4基本格式 3 数据标准…...

openGauss连接是报org.opengauss.util.PSQLException: 尝试连线已失败

安装好高斯数据库后然后用java连接时报如下错误: 解决方法: 在openGauss数据库的安装路径下/opt/opengauss/data/single_node&#xff08;这个路径根据自己实际情况变化&#xff09;有个pg_hba.conf文件&#xff0c;修改里面host内容如下&#xff0c;我这里设置的是所有ip都能…...

详细的一条SQL语句的执行流程

SQL 语句的执行流程会因数据库管理系统的不同而略有差异&#xff0c;但一般来说&#xff0c;主要包括以下几个阶段&#xff1a; 查询解析 词法分析&#xff1a;数据库系统首先将输入的 SQL 语句按字符流进行扫描&#xff0c;依据词法规则把它分割成一个个的单词&#xff0c;如…...

适用于小白的程序报错提问 AI 模板

#工作记录 程序报错提问 AI 模板 1、你现在将扮演python专家&#xff0c;请保持连续对话&#xff0c;请基于你的专业知识修改代码并回答&#xff01; 2、可以向我询问任何有利于你分析问题的信息。 3、你修改的程序代码&#xff0c;运行后报错&#xff0c;报错信息我放在最后…...

web实操9——session

概念 数据保存在服务器HttpSession对象里。 session也是域对象&#xff0c;有setAttribute和getAttribute方法 快速入门 代码 获取session和塞入数据&#xff1a; 获取session获取数据&#xff1a; 请求存储&#xff1a; 请求获取&#xff1a; 数据正常打印&#xff1a…...

OFDM学习-(二)长短序列和PPDU整体数据处理流程

OFDM学习 &#xff08;二&#xff09;长短序列和PPDU整体数据处理流程 OFDM学习前言一、短序列短序列的作用 二、长序列三、PLCP/SIGNAL/DATA数据处理流程三、fpga实现STS模块LTS模块训练序列模块仿真波形 总结 前言 根据框图可以知道发射机这部分信号在DA转换之前&#xff0c…...

.NET周刊【12月第4期 2024-12-22】

国内文章 dotnet 简单使用 ICU 库进行分词和分行 https://www.cnblogs.com/lindexi/p/18622917 本文将和大家介绍如何使用 ICU 库进行文本的分词和分行。 dotnet 简单聊聊 Skia 里的 SKFontMetrics 的各项属性作用 https://www.cnblogs.com/lindexi/p/18621674 本文将和大…...

Conda 安装 Jupyter Notebook

文章目录 1. 安装 Conda下载与安装步骤&#xff1a; 2. 创建虚拟环境3. 安装 Jupyter Notebook4. 启动 Jupyter Notebook5. 安装扩展功能&#xff08;可选&#xff09;6. 更新与维护7. 总结 Jupyter Notebook 是一款非常流行的交互式开发工具&#xff0c;尤其适合数据科学、机器…...

鸿蒙开发:实现键值数据库存储

前言 鸿蒙当中数据持久化存储&#xff0c;为我们提供了多种的实现方式&#xff0c;比如用户首选项方式&#xff0c;关系型数据库方式&#xff0c;键值型数据库方式&#xff0c;文件存储方式等等&#xff0c;对于数据量比较的小的&#xff0c;我们直接选择轻量级的用户首选项方式…...

WebGL 实践(一)开发环境搭建

WebGL 是一种基于 JavaScript 的 API&#xff0c;用于在浏览器中渲染 2D和3D 图形&#xff0c;很多场景都能用&#xff0c;例如游戏开发、数据可视化、在线教育和虚拟现实等应用领域。 零、基础知识 相关基础知识很重要&#xff0c;如果会html、JavaScript等技术掌握起来会更…...

在线机考|2024华为实习秋招春招编程题(最新)——第3题_PCB印刷电路板布线_300分(八)

题目内容 在PCB印刷电路板设计中,器件之间的连线需要避免线路的阻抗值增大、而且赛件之间还有别的器件和别的干扰源,在布线时我们希望受到的干扰尽量小。现将电路板简化成一个MN的矩阵,每个位置(单元格)的值表示其源干扰度。 如果单元格的值为0,表示此位置没有干扰源;如果单…...