当前位置:网站首页>第三章 传输层
第三章 传输层
2022-08-08 23:50:00 【我不配拥有55kg的你】
传输层
1. 传输层为网络应用进程之间的通信提供了端到端的报文传输服务。
2.在五层参考模型中,传输层位于 应用层和网络层之间,向下使用 网络层提供的分组传输服务,向上为各种网络应用提供端到端的报文传输服务
第一节 传输层的基本服务
1.传输层功能
1.传输层的核心任务是为应用进程之间提供端到端的逻辑通信服务。主要为应用层提供服务
2.传输层的基本功能
(1)传输层寻址
(2)对应用层报文进行分段和重组
(3)对报文进行差错检测
(4)实现进程间端到端的可靠数据传输控制
(5)面向应用层实现复用与分解
(6)实现端到端的流量控制
(7)拥塞控制
3.Internet的传输层主要有两个协议:面向连接的TCP和无连接的UDP,TCP提供可靠数据传输服务,UDP不提供可靠数据传输服务。
4.传输层协议为运行在不同主机或不同端系统上的进程提供了逻辑通信服务。
5.作为向上层应用提供端到端的逻辑通信服务的传输层协议,只需要在端系统中实现,而在路由器等网络设备中无需实现传输层协议。
6.端到端的通信是应用进程间的通信,即传输层负责的是应用进程之间的通信。
7.各种网络设备例如路由器,交换机等不去实现传输层的功能,即网络设备不具备传输层协议。
8.网络设备只有网络层,数据链路层和物理层的功能,
9.网络层只负责将数据送至目的主机,具体送至主机的哪一个应用程序,由传输层来完成,因为传输层负责的是进程与进程之间的通信。
2.传输层寻址与端口
1.在单个计算机中,进程是用进程标识符来标识的。进程标识符即进程ID。
2.传输层为了支持运行在不同主机,不同操作系统上的应用进程之间的通信,必须使用统一的寻址方法对应用程序进行标识。
3.TCP/IP体系结构网络的解决办法就是在传输层使用协议端口号,简称端口,
4在全网范围内利用IP地址+端口号唯一标识一个通信端点,唯一确定一个应用进程。
5.传输层端口号为16位整数
(1)0~1023位熟知端口号,分配给特定应用程序使用,比如 80,25,110.
(2)1024-49151为登记端口号,使用前必须在专门管理机构登记。
(3)49152-65536为客户端口号或短暂端口号。
6.端口号只在本地有效,是标识本地计算机应用层中的各应用进程与传输层交互时的层间接口,在不同的计算机上网络应用端口可能相同。
7.FTP服务器默认端口为21,HTTP服务器默认端口为80,SMTP服务器默认端口为25,POP3默认端口为110.
8.DNS使用的是UDP协议,DSN服务器默认端口为53
9.不同服务器上的应用进程端口号可以相同,但是IP地址一定不同。
3.无连接服务和面向连接服务
1.传输层提供的服务可分为无连接服务和面向连接服务两类。
2.无连接服务是指数据传输前无需与对端进行任何信息交换,直接构造传输层报文段并向接收端发送。协议为UDP。
3.面向连接服务是指数据传输前需要交换一些控制信息,建立逻辑连接,然后再传输数据,完成之后拆除连接。协议为TCP。
4.注意,电话通信建立的是电路连接,传输层提供面向连接的服务时建立的是逻辑连接。
第二节 传输层的分解与复用
1.支持众多应用进程共用一个传输层协议,并能够将接收到的数据准确交付给不同的应用进程,是传输层要实现的一项基本功能。称为传输层的多路复用与多路分解,简称复用与分解。
2.在同一主机,多个应用进程同时利用同一个传输层协议进行网络通信,此时该传输层协议就被多个应用进程复用。反之,则需要实现分解。
3.实现分解与复用的关键是传输层能够唯一标识一个套接字。
4.一个网络应用进程通过一个或多个套接字,实现与传输层之间的数据传递,即发送数据和接收数据。
1.无连接的多路复用与多路分解
1.Internet传输层提供无连接服务的传输层协议是UDP.
2.为UDP套接字分配端口号的两种办法:
(1)自动分配
(2)手动绑定
3.手动绑定套接字端口需要使用bind()函数
4.无连接的多路复用UDP套接字格式:<目的主机IP,目的端口号>
5.UDP套接字的端口号是UDP实现复用与分解的重要依据。
6.使用无连接UDP服务的应用进程,可以接受来自任意主机使用任意端口号的应用进程发送的具有相同目的IP和目的端口号的UDP报文段。
7.TCP报文段中携带源IP和端口号,起到返回地址的作用。
.
2.面向连接的多路复用和多路分解
1.Internet传输层提供面向连接服务的是TCP。
2.TCP套接字是由一个四元组<源IP,源端口号,目的IP,目的端口号>来唯一标识的。
3.TCP服务器可以同时支持多个TCP套接字,每个套接字与一个进程相关联,并由一个四元组来唯一标识。
4.在Internet中,唯一标识套接字的基本信息是IP地址和端口号
第三节 停-等协议与滑动窗口协议
Internet传输层主要有两个协议,即TCP协议和UDP协议,其中TCP提供可靠数据传输服务。
1.可靠数据传输基本原理
1.理想传输信道是不产生差错并提供按序交付服务的物理或逻辑信道。
2.不可靠传输信道的不可靠性的主要表现:
(1)可能出现比特跳变
(2)可能出现乱序
(3)可能出现数据丢失
比特跳变:即在数据传输过程中出现的0错成1或1错成0的现象。
3.实现可靠数据传输的主要措施:
(1)差错检测:利用差错编码解决比特跳变现象
(2)确认:接收方向发送方反馈接收状态
(3)重传:重新发送丢失的数据
(4)序号:确保数据按序交付
(5)计时器:解决数据丢失问题,数据发送时启动计时器,超时未收到则重新发送
2.停-等协议
1.实现可靠数据传输的基本策略就是综合利用各种实现可靠数据传输的措施。
2.ACK指确认字符,当发送方收到接收方发送的ACK,则表示数据发送正确。
3.NAK指否认字符,当发送方收到接收方发送的NCK,则表示数据发送异常,需要重新发送。
4.ARQ协议:接收方使用肯定确认ACK和否认确认NAK,可以让发送端知道数据的传输完成情况,基于这种重传机制的可靠数据传输协议称为自动重传请求协议,即ARQ协议。
5.最简单的ARQ协议就是停-等协议。
6.停-等协议的主要特点是每发送一个报文段就停下来等待接收方确认
7.停-等协议的特点是简单,所需缓冲存储空间小
8.停-等协议是一个特殊的滑动窗口协议(发送窗口=1,接收窗口=1)
3.滑动窗口协议

1.停-等协议的主要性能问题在于它的停止-等待机制降低了信道利用率。
2.信道利用率为发送方实际利用信道发送的时间和总时间之比。
3.解决停-等协议信道利用率低的办法:允许发送方在没有收到确认前连续发送多个分组。
4.允许发送方在没有收到确认前连续发送多个分组的协议称为流水线协议或管道协议
5.相对停-等协议,流水线协议实现可靠数据传输时需要做的改进:
(1)必须增加分组序号范围
(2)协议的发送方和接收方必须缓存多个分组。
6.最典型的流水线可靠传输协议是滑动窗口协议
7.滑动窗口协议原理:对分组连续编号,发送方按照编号依序发送分组;接收方接收分组,按分组需要有序提交,并通过确认向发送方通告正确接收的分组序号。
8.对于发送方,对已发送且未收到ACK的分组进行缓存,以便于重发;对于接收方,对已接收但未按序的分组进行缓存或丢弃,然后确认。
9.滑动窗口协议根据采用的确认、计时器及窗口大小等机制的不同,可以有不同类型的滑动窗口协议设计。
10.最具代表性的滑动窗口协议有 GBN协议 和 SR协议
11.GBN协议中,发送方缓存能力较高,未确认前可以发送多个分组,则GBN的发送窗口W>=1,接收方缓存能力较低,只能接收一个分组,则GBN的接收窗口W=1.
12.GBN发送方必须响应的3种类型的事件
(1)上层调用
(2)收到一个ACK
(3)计时器超时
13.GBN协议比较适用于低误码率、低丢包率,高时延带宽积信道,且对接收方缓存能力要求低。
14.Go-Back-N协议,简称GBN协议
15.SR协议,即选择重传协议
16.选择重传协议是通过让发送方仅重传那些未被接收方确认的分组,避免不必要的重传。

17.SR的发送方可以连续发送多个分组,每个分组在当前发送窗口必须有唯一的编号
18.SR协议的发送方主要响应3个事件:
(1)上层调用,请求发送数据
(2)定时器超时
(3)收到ACK
18.SR协议接收方的主要操作:
(1)正确接收的序号在接收窗口范围内的分组PKT
(2)正确接受到序号在接收窗口左侧的分组PKT
(3)其他情况,接收方可直接丢弃,不作响应。
第四节 用户数据报协议(UDP)
1.用户数据报协议UDP是Internet传输层协议,提供无连接的,不可靠的数据报传输服务
2.UDP是一种轻量级传输层协议,只提供最基本的传输层服务。
3.DNS是一个使用UDP的应用层协议的例子。
4.为什么使用UDP协议的几点原因:
(1)应用进程更容易控制发送什么数据以及何时发送
(2)无需建立连接
(3)无连接状态
(4)首部开销小
1.UDP数据报结构

1.应用层数据占用UDP报文段的数据字段
2.源端口号和目的端口号用于UDP实现复用与分解。
3.长度指示了在UDP报文段中的字节数。
4.接收方使用校验和来检测该报文段是否出现差错。
2.UDP校验和
1.校验和提供了差错检测功能
2.UDP的校验和用于检测UDP报文段从源到目的地的传送过程中数据是否发生了改变。
3.UDP在计算校验和时,对所有参与运算的内容(包括UDP报文段)按16位求和。
3.UDP在生成校验和时,校验和字段取全0
4.参与UDP校验和计算的内容3部分:UDP伪首部,UDP首部和应用层数据
5.填充部分为8位全0,可能有也可能没有,目的是确保16位对齐。
6.对于UDP,协议号为17
7.UDP字段长度是该数据报的字段,所以会参与两次计算。
第五节 传输控制协议(TCP)
1.传输控制协议(TCP)是Internet一个重要的传输层协议。TCP提供了面向连接,可靠,有序的字节流传输服务。
2.TCP是面向连接的传输层协议,应用程序在使用之前必须与TCP先建立连接,在使用结束后必须释放已建立的TCP连接
3.TCP是面向字节流的
4.TCP提供双全工通信服务,即TCP允许通信双方的应用进程在任何时候都能发送数据和接收数据。
1.TCP报文段结构

1.TCP报文段由首部字段和一个数据字段组成。
2.源端口号和目的端口号分别占16位,标识发送该报文段的源端口和目的端口,用于多路复用和分解自来或送到上层应用的数据
3.序号字段和确认号字段分别占32位
4.首部长度字段占4位,指出TCP段的首部长度,以4字节为计算单位。首部长度是可变的,且最大长度为15,表示60字节。
5.保留字段占6位,保留为今后使用
6.URG,ACK,PSH,RST,SYN,FIN字段各占一位,共6位。
(1)URG=1时表示有紧急数据,应尽快传送
(2)ACK=1时表示确认序号字段有效,反之亦然
(3)PSH=1时表示尽快把数据交付,而不是等缓存满了再交付
(4)RST=1时表示出现严重错误,必须释放且重新建立连接
(5)SYN=1时表示是一个请求建立新连接的确认报文段,此时ACK=1
(6)FIN=1时表示该TCP报文段的发送端数据已发送完成且请求释放连接
7.接收窗口字段占16位
8.校验和字段占16位
9.紧急指针字段占16位
10.选项字段的长度是可变的
11.填充字段,长度为0到3,取值全0,其目的是使整个首部长度是4的整数倍
2.TCP连接管理
1.TCP连接管理包括连接建立和连接拆除
2.建立TCP连接前的3次握手
(1)第一次:源主机发送建立连接请求报文段(SYN)
(2)第二次:目的主机回发确认报文段,
(3)第三次:源主机为TCP连接分配缓存和变量且向目的主机发送确认报文段
3.第一次和第二次握手的TCP报文段不携带数据,第三次握手的报文段可以携带数据
4.TCP连接建立成功后,为使用该连接的双方应用进程之间提供了一条端到端双全工的可靠字节流逻辑通信信道,双方应用进程可以使用该连接收发数据。
下图为三次握手示意图
5.TCP连接采用4次挥手的断连机制断开连接
3.TCP可靠数据传输
1.TCP的可靠数据传输实现机制包括差错编码、确认、序号、重传、计时器等。
2.TCP的可靠数据传输是基于滑动窗口协议,但是发送窗口大小动态变化
3.TCP发送方有3个与发送和重传的主要事件
(1)从上层应用程序接受数据
(2)定时器超时
(3)收到ACK
4.TCP流量控制
1.流量控制的目的是协调数据到达速度超出接收方的接收、缓存和处理能力,避免数据被接收方丢弃
2.TCP建立连接时,双方都为之分配了固定大小的缓冲空间。
3.如果进程从缓存中读取报文段的速度不够快,那么缓存会溢出,并且将丢弃报文段。
5.TCP拥塞控制
1.拥塞是指太多主机以太快的速度向网络中发送太多数据,超出网络的处理能力,导致大量的数据分组在网络中间设备中排队等待转发,网络性能明显下降的现象。
2.网络拥塞的后果:
(1)数据分组通过网络的时延显著增加
(2)由于队列满导致大量分组被丢弃
3.拥塞控制就是通过合理的调度、规范、调整向网络中发送数据的主机数量,发送速率或数据量,以避免拥塞或尽快消除拥塞
4.比较典型的拥塞控制是在网络层和传输层进行控制
5.Internet是在传输层通过TCP协议进行拥塞控制的。
6.拥塞控制策略可分为拥塞预防和拥塞消除两大类
7.拥塞预防是采用一些技术预防拥塞的发生。
8.拥塞消除是利用拥塞检测机制检测网络中是否发生拥塞,然后通过某种方法消除拥塞。
9.TCP的拥塞控制是从端到端的角度,推测是否发生拥塞,如果发生则降低数据发送速率,以便缓解。主要采用调整窗口大小实现。
10.TCP的发送端维持一个称为拥塞窗口CongWin的变量,单位为字节,用于表示在未收到接收端确认的情况下可以连续发送的数据字节数。
11.窗口调整基本策略AIMD
12.TCP拥塞算法
(1)慢启动
(2)拥塞避免
(3)快速重传
(4)快速恢复
后记:部分内容做了删减,后期补充
2020.08.20 补充部分内容
边栏推荐
猜你喜欢

HCIP2---第一天实验

06 Spark on RDD序列化问题

LightningChart .NET 10.3.2 Crack 支持旧项目直接升级

并发编程第7篇,AQS一些简单的概念

51nod2884
![[Deep Learning] TensorFlow Learning Road One: Introduction to TensorFlow and Implementation of Linear Regression and Logistic Regression](/img/1d/68ebf357a93d718cfdbefeaaf623fa.png)
[Deep Learning] TensorFlow Learning Road One: Introduction to TensorFlow and Implementation of Linear Regression and Logistic Regression

win10电脑:电脑触摸板控制

10 Spark on RDD Cache
![[PP-YOLOv2] Training a custom dataset](/img/f5/90fb1a4b6096f77755f566a6acbf0a.png)
[PP-YOLOv2] Training a custom dataset

并发编程第9篇,Condition
随机推荐
Get the time n-1 a week ago including the current day 7 days a week 7-1
[Tensorflow2] Some interface changes of tensorflow1.x-tensorflow2.x
北斗网络同步时钟与GPS卫星时钟同步设备的区别
[Deep Learning] TensorFlow Learning Road One: Introduction to TensorFlow and Implementation of Linear Regression and Logistic Regression
06 Spark on RDD序列化问题
According to the address returned by Baidu Map, intercept the province, city, district
并发编程第8篇,AQS源码解读
不躺平,然后做到极致,就是最大的“安全感”
SAP ABAP debug的七种方法及错误消息定位
并发编程第11篇,线程池的一些常用用法和使用
OSPF综合实验
【瑞吉外卖】day04:员工分页查询、启用/禁用员工账号、编辑员工信息
Formatting of time objects
如何学好编程
并发专题第一篇,多线程快速入门和简单介绍
并发编程第10篇,CountDownLatch(计数器)和Semaphore(信号量)
风控建模一:好坏标签定义
05 Spark on 读取内部数据分区存储策略(源码角度分析)
mysql 高级知识【order by 排序优化】
[QNX Hypervisor 2.2用户手册]10.12 ser8250vdev ser8250 options