计算机网络之运输层

一、概述

物理层、数据链路层以及网络层它们共同解决了将主机通过异构网络互联起来所面临的的问题,实现了主机到主机的通信

但实际上在计算机网络中进行通信的真正实体是位于通信两端主机中的进程

如何为运行在不同主机上的应用进程提供直接的通信服务时运输层的任务,运输层协议又称端到端协议

 

 1.1端口号

为了使运行不同操作系统的计算机的应用进程之间能进行网络通信,必须使用统一的方法对TCP/IP体系的应用进程进行标识,即端口号

逻辑端口的概念(端口):一个整数值(16位);0-65535

 网络上中进程工作方式:C/S 对应的端口号码的分配也分为两大类

服务类(静态的预先指定的)

1-1013(默认系统熟知的服务)

1023-45191(需要申请注册的服务  QQ4000,8000都是它所使用的端口)

客户类(随机的由本地操作系统自己管控)

端口:相当于进程在网络中的地址

IP+PORT(端口号) 构成了网络中唯一的通信端点:我们称之为端到端的通信

(Socket) (Socket) Protocol

 1.2复用与分用

发送方的复用

  • 发送方的某些应用进程所发送的不同应用报文,在运输层使用UDP协议进行封装,这是UDP复用;若用TCP封装则称TCP复用
  • 运输层使用端口号区分不同进程,不管使用何种协议封装的报文,在网络层都需要使用IP协议封装成IP数据报,这是IP复用,数据报中协议字段的值用来表名封装的是何种协议数据单元

接收方的分用

  • 根据协议字段的值,将IP数据报封装的协议数据单元上交运输层的过程叫IP分用
  • 同理,UDP根据端口号将数据交给应用进程叫做UDP分用;TCP根据端口号将数据交给应用进程叫做TCP分用

 1.3运输层引入的协议

1,TCP协议(负责完成端到端的可靠传输)

2,UDP协议(负责完成端到端的数据传输)

用户数据报协议UDP

  • UDP无连接的,随时可向目的主机发送报文,支持单播、多播和广播

  • UDP收到应用层报文后直接为报文添加UDP首部就进行发送,即面向应用报文

  • UDP数据报首部仅8字节

 传输控制协议TCP

  • TCP面向连接的。发送数据前需要"三报文握手"建立连接,数据传输结束后需要"四报文挥手"释放连接

  • 仅支持单播

  • TCP是面向字节流的。其将应用进程交付下来的数据块仅仅看作是一连串的字节流,TCP将这些字节流编号并存储在缓冲中;接收方一边接收数据,一边将缓冲中的数据交给应用进程。

  • 接收方收到的字节流必须和发送方收到的字节流完全一致

  • 不会出现传输差错(误码、丢失、乱序、重复)

  • TCP报文段首部最小20字节,最大60字节

 1.4TCP协议流量控制

1)滑动窗口  发送窗口  接收窗口

2)超时计时器

3)流量控制方法 :接收端控制发送端

2)超时计时器

3)流量控制方法:接收端控制发送端

4)流量控制的实现过程:0窗口

5)TCP协议效率管理:糊涂窗口

流量控制

一般来说,我们希望数据传输能快一些,但如果发送方把数据发送得过快,接收方就可能来不及接收,这会造成数据的丢失

流量控制就是让发送方的发送速率不要太快,要让接收方来得及接收

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

  • 发送方和接收方窗口保持一致,发送方窗口随着接收方窗口变化而变化(通过确认报文告知发送方)
  • 发送方发送完窗口内数据后需要等到确认报文才会滑动窗口并继续发送,若窗口内的某个值很久没有收到回答报文,则超时重传报文

若接收方窗口调为0后,一段时间之后又调为200,此时向发送方传递确认报文,可此时报文丢失,则会造成发送方窗口始终为0,接收方以为发送方收到了确认报文而开始等待数据,造成死锁,如何解决? 

当发送方窗口大小为0时,其隔一段时间就会发送一个1字节大小的零窗口探测报文,看看此时接收窗口大小是否进行调整

零窗口探测报文也有超时重传机制

1.5TCP的拥塞控制

1)拥塞控制的概念:拥塞就是拥堵了(网络拥堵了),拥堵的原因?数据包太多了,导致网络吞吐量下降,网络时延增加;网络时延增加又进而加剧了网络数据包增多

 2)拥塞控制的手段方法

(1)核心方法:减少数据包数量

(2)具体实现:就根据不同情况,采用不同方法来减少数据包数量

(3)拥塞的主要表现就是时延的增加,为此,就围绕时延增加来进行数据包数量的调整

(4)数据包投放数量是由各主机的发送窗口大小决定的

(5)TCP又引入一个拥塞窗口的概念;拥塞发生时应该控制发送窗口的数量

        结论:发送窗口的大小:min(拥塞窗口,接收窗口)

(6)拥塞窗口:拥塞发生时,能够发送数据包的个数

(7)拥塞控制算法:慢开始  拥塞避免 快重传  快恢复

1)慢开始:设置门限值;门限值内,试探着向网络投入数据包,避免拥塞

2)拥塞避免:拥塞发生时,能够发送数据包的个数

3)快重传:当数据包未按序到达,导致重复确认增多,则立即重传该数据包,门限降为重复确认时拥塞窗口的一半,拥塞窗口同时调小

4)快恢复:发生超时时,立即急速的减少投入网络的数据包

在某段时间,若对网络中某一资源的需求超过了该资源所能提供的可用部分,网络性能就要变坏,这种情况叫做拥塞

若出现拥塞而不进行控制,整个网络的吞吐量将随输入负荷的增大而下降

1.6超时重传时间(RTO)选择

正常情况下,超时重传时间应该设为略大于往返时间。但是由于各区域的速率可能不一致,因此将超时重传时间设置为一个固定值是行不通的 

 往返时间测量问题

针对出现超时重传时无法测准往返时间RTT的问题,有以下解决方法

在计算加权平均往返时间RTTs时,只要报文段重传了,就不采用其往返时间TT样本。也就是出现重传时,不重新计算RTTs,进而超时重传时间RTO也不会重新计算。


此方法的漏洞如下:如果报文段时延突然增大很多,并且之后很长一段时间都会保持这种时延。因此在原来得出的重传时间内,不会收到确认报文段,于是重传,造成死锁


修正方法:报文段每重传一次,就把超时重传时间RTO增大一些,典型的做法是将RTO的值取为旧RTO的2倍

1.7可靠传输

可靠性保障可以放在体系结构中的任何一层(数据链路层,网络层)实现,但现代网络系统面向的是主机(独立自主的计算力)系统,可以将可靠性保障交由主机来完成,进而减轻通信子网的负担,使得通信子网专注于数据包的高效传输

1.停止等待协议(ARQ自动请求重传协议)

A给B发送数据,B需要给一个确认,

否认应答:A再发,

 2.后退N帧重传(Go Back N ARQ)(接收窗口固定唯一,而TCP接收窗口不确定)

(1)发送窗口:没有得到确认的情况下,发送端可以连续发送分组的个数

(2)接收窗口:接收数据的个数以及包含能接受数据的序号

(3)工作协议

(4)窗口大小与序号关系

3.选择重传协议

目的提高发送速率,不在采用发送一个数据帧就停下来等待确认的模式,而是可以连续发送多个数据帧后才停下来等待的模式

接收端:引入一个接收窗口的概念(即应当接收的数据帧及数据帧序号);这类协议接收窗口大小为1

其中:连续发送多少个数据帧的个数称为  发送窗口

(1)发送窗口

(2)接收窗口

(3)工作过程

(4)窗口大小与序号关系

1.8运输连接管理

TCP的运输连接管理就是使运输连接的建立和释放都能正常地进行

  • SYN1的报文段不能携带数据,但会消耗一个序列号seq
  • ACK=1代表这是普通确认报文段,ack=x+1表示这是对报文段序列号seq=x的确认

  • 客户端发起关闭请求,一去一回后进入半关闭状态【客户端不再发送数据,服务端可能还会发】
  • 服务器将自己剩余的数据发送完后也发送一个关闭请求,接着客户端给予回应后服务器关闭,客户机则要等到一段时间后完全关闭(防止发给服务器的确认报文丢失)

1.9首部格式

  • 源端口:占16比特,写入源端口号,用来标识发送该TCP报文段的应用进程

  • 目的端口:占16比特,写入目的端口号,用来标识接收该TCP报文段的应用进程

  • 序号:占32比特,取值范围[ 0 , 2^{32} − 1 ] ,序号增加到最后一个后,下一个序号就又回到0。作用是指出本TCP报文段数据载荷的第一个字节的序号
  • 确认标志位ACK:取值为1时确认号字段才有效,为0时确认号字段无效

确认号:占32比特,取值范围 [ 0 , 2^{32} − 1 ],序号增加到最后一个后,下一个序号就又回到0。可理解为若确认号=n,则表明到序号n-1为止的所有数据都已正确接收,期望接收序号为n的数据

  • 数据偏移:占4比特,并以4字节为单位

        用来指出TCP报文段的数据载荷部分的起始处距离TCP报文段的起始处。这个字段实际 上是指出TCP报文段的首部长度

首部固定长度为20字节,因此数据偏移字段的最小值(0101)_2

  • 保留字段:占6比特,保留为今后使用,但是目前应置为0

  • 窗口:占16比特,以字节为单位。指出发送本报文段一方的接收窗口

    窗口值作为接收方让发送方设置其发送窗口的依据,这是以接收方的接收能力来控制发送方的发送能力,称为流量控制

  • 检验和:占16比特,检测范围包括TCP报文段的首部和数据载荷两部分

    在计算校验和时,要在TCP报文段的前面加上12字节的伪首部

  • 同步标志位SYN:在TCP连接建立时用来同步序号

  • 终止标志位FIN:用来释放TCP连接

  • 紧急标志位URG:取值为1紧急指针字段有效;取值为0时紧急指针字段无效。

  • 紧急指针:占16比特,以字节为单位,用来指明紧急数据的长度

选项:增加选项可以增加TCP的功能

  • 最大报文段长度MSS选项TCP报文段数据载荷部分的最大长度
  • 窗口扩大选项:为了扩大窗口(提高吞吐率)
  • 时间戳选项
    • 用来计算往返时间RTT
    • 用于处理序号超范围的情况,又称为防止序号绕回PAWS
  • 选择确认选项:实现选择确认功能
  • 填充:由于选项长度可变,因此使用填充来保证报文段首部能被4整除

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【深度学习】Transformer简介

近年来,Transformer模型在自然语言处理(NLP)领域中横扫千军,以BERT、GPT为代表的模型屡屡屠榜,目前已经成为了该领域的标准模型。同时,在计算机视觉等领域中,Transformer模型也逐渐得到了重视&a…

第十一章 docker swarm集群部署

文章目录 前言一、安装docker1.1 解压1.2 配置docker 存储目录和dns1.3 添加docker.service文件1.4 docker 启动验证 二、docker swarm 集群配置2.1 关闭selinux2.2 设置主机名称并加入/etc/hosts2.3 修改各个服务器名称(uname -a 进行验证)2.4 初始化sw…

【SpringBoot篇】Spring_Task定时任务框架

文章目录 🌹概述🌺应用场景🎄cron表达式🛸入门案例🎍实际应用 🌹概述 Spring Task 是 Spring 框架提供的一种任务调度和异步处理的解决方案。可以按照约定的时间自动执行某个代码逻辑它可以帮助开发者在 S…

PTA 六度空间

“六度空间”理论又称作“六度分隔(Six Degrees of Separation)”理论。这个理论可以通俗地阐述为:“你和任何一个陌生人之间所间隔的人不会超过六个,也就是说,最多通过五个人你就能够认识任何一个陌生人。”如图1所示…

Springboot+vue的新冠病毒密接者跟踪系统(有报告)。Javaee项目,springboot vue前后端分离项目

演示视频: Springbootvue的新冠病毒密接者跟踪系统(有报告)。Javaee项目,springboot vue前后端分离项目 项目介绍: 本文设计了一个基于Springbootvue的新冠病毒密接者跟踪系统,采用M(model)V(v…

【实用】PPT没几页内存很大怎么解决

PPT页数很少但导出内存很大解决方法 1.打开ppt点击左上角 “文件”—“选项” 2.对话框选择 “常规与保存” (1)如果想要文件特别小时可 取消勾选 “将字体嵌入文件” (2)文件大小适中 可选择第一个选项 “仅最入文档中所用的字…

【数组栈】实现

目录 栈的概念及其结构 栈的实现 数组栈 链式栈 栈的常见接口实现 主函数Test.c 头文件&函数声明Stack.h 头文件 函数声明 函数实现Stack.c 初始化SLInit 扩容Createcapacity 压栈STPush 出栈STPop 栈顶元素STTop 判断栈是否为空STempty 栈内元素个数STSzi…

ABB机 器 人 操 作 培 训

目 录 1 培训手册介绍 ---------------------------------------------2 2 系统安全与环境保护 ---------------------------------------------3 3 机器人综述 ---------------------------------------------5 4 机器人示教 --------------------------------------------12…

普通平衡树

题意:略,题中较清晰。 用二叉查找树来存储数据,为了增加效率,尽量使左子树和右子树的深度差不超过一,这样可以时间控制在logn,效率比较高。 右旋和左旋,目的是为了维护二叉树的操作&#xff0…

CSGO搬砖项目全面讲解 ,CSGO搬砖注意事项

Steam/CSGO游戏搬砖全套操作流程之如何选品(第二课) 一个游戏只要能搬,只要体量不够大,很快就会货币价格暴跌,直接凉凉。市面上的能稳定手动搬砖的游戏越来越少。所以对于兼职赚点外快的散人搬砖党来说,找一…

【Vue入门篇】基础篇—Vue指令,Vue生命周期

🎊专栏【JavaSE】 🍔喜欢的诗句:更喜岷山千里雪 三军过后尽开颜。 🎆音乐分享【如愿】 🎄欢迎并且感谢大家指出小吉的问题🥰 文章目录 🍔Vue概述🎄快速入门🌺Vue指令⭐v-…

微信小程序登录获取不到头像和昵称解决办法

微信小程序登录获取不到头像和昵称主要原因是:小程序wx.getUserProfile接口被收回! 大家可以按照文档操作↓ PS: 针对小程序wx.getUserProfile接口将被收回后做出的授权调整 小程序文档中提出的调整说明 对于此次变化,现将小程…

如何满足BMW EDI项目的PKT需求?

近期宝马BMW(以下简称BMW)在其部分供应商之间试点推进PKT项目,BMW为什么要启动 PKT 计划呢? 业务系统全面升级统一全球所有宝马工厂的流程 宝马内部的物流供货流程 近期BMW PKT需求主要针对其内部物流供货流程展开: …

Android : Spinner(列表选项框) + BaseAdapter -简单应用

​​容器与适配器:​​​​​ http://t.csdnimg.cn/ZfAJ7 示例图: 实体类 Demo.java package com.example.mygridviewadapter.entity;public class Demo {private String text;private int img;public Demo(String text, int img) {this.text…

QQ怎么备份聊天记录?3个方法教你快速备份!

QQ聊天记录作为用户和亲人、好友以及同事之间沟通的凭证,可以帮助我们回忆起过去的交流内容。如果我们不小心误删了QQ聊天记录或者更换了新手机,那么这时候就需要备份聊天记录。qq怎么备份聊天记录呢?本文将介绍3个简单方法,帮助您…

Oracle-客户端连接报错ORA-12545问题

问题背景: 用户在客户端服务器通过sqlplus通过scan ip登陆访问数据库时,偶尔会出现连接报错ORA-12545: Connect failed because target host or object does not exist的情况。 问题分析: 首先,登陆到连接有问题的客户端数据库上,…

va-Q-tec实现温度敏感产品运输过程质量控制温控无忧

摘要:温度敏感产品运输对供应链全流程的温度质量要求较高,往往需要借助特殊的温湿度监测技术产品。va-Q-tec与虹科Comet合作,采用虹科Comet的U系列温度记录仪,为集装箱运输过程提供完整的温控包装解决方案。 一、客户背景 va-Q-…

算法通关村第十二关-白银挑战字符串经典题目

大家好我是苏麟 , 今天带来字符串相关的题目 . 大纲 反转问题字符串反转K个一组反转仅仅反转字母反转字符串中的单词 反转问题 字符串反转 描述 : 编写一个函数,其作用是将输入的字符串反转过来。输入字符串以字符数组 s的形式给出。 题目 : LeetCode 344. 反转…

【PPspliT】ppt转pdf-保留过渡动画

网址 http://www.maxonthenet.altervista.org/ppsplit.php 下载安装 使用 再次打开ppt,就能在上方的选项栏里头看到了:

【Unity】接入MAX聚合广告SDK Applovin + GoogleAdmob

版本: Unity:2019.4.35f1gradle plugin: 4.2.0 (实际要7.0 对应build_tools:34.0.0) gradle: 6.7.1 (实际要7.0 对应build_tools:34.0.0) jdk: 1.8.0_241build_tools: 34.0.0 ndk: android-ndk-r19 文档: 6.0.1(Andro…