运输层
2019-10-24 10:04:45 0 举报
AI智能生成
计算机网络运输层
作者其他创作
大纲/内容
TCP报文段的首部格式
TCP报文
首部
固定部分(20字节)
源端口和目的端口(各2字节)
序号(4字节)
TCP连接中传送的字节流中的每一个字节都按顺序编号
这里的序号是指本报文段所发送的数据的第一个字节的序号
确认号(4字节)
期望收到对方下一个报文段的第一个数据字节的序号
若确认号=N,则表明:到序号N-1为止的所有数据都已经正确收到
数据偏移(4位)
指出TCP报文段的首部长度
单位是32位字(4字节长的字)
数据偏移的最大值是60字节
保留(6位)
紧急URG
确认ACK
推送PSH
复位RST
同步SYN
终止FIN
窗口(2字节)
发送本报文文段的一方的接口窗口(不是自己的发送窗口)
窗口值作为接收方让发送方设置其发送窗口的依据
窗口字段明确指出了现在允许对方发送的数据量,窗口值是经常在动态变化着
检验和(2字节)
包括首部和数据部分
伪首部
紧急指针(2字节)
URG=1时候使用
窗口为0也可以发送紧急数据
选项(最长40字节)
窗口扩大选项(3字节)
时间戳选项(10字节)
计算往返时间RTT
防止序号绕回PAWS
选择确认选项
按需要增加的选项(4n字节)
数据部分
最大报文字段长度MSS
是每一个TCP报文段中的数据字段的最大长度
MSS尽可能大些,只要在IP层传输时候不需要再分片即可
TCP可靠传输的实现
以字节为单位的滑动窗口
发送窗口的位置由窗口的前沿和后沿共同确定
发送窗口前沿不断迁移,而不动的两种情况
没有收到新的确认,对方的窗口大小不变
收到了新的确认但是对方通知的窗口缩小了
窗口与缓存
缓存空间和序号空间都是有限的,并且都是循环使用的
由于实际上缓存或窗口中的字节数是非常大的
发送方缓存
发送窗口是发送缓存的一部分
发送缓存与发送窗口后沿是重合的
接收方缓存
接收窗口时接收缓存的一部分
接收缓存与接收窗口前沿是重合的
超时重传时间的选择
选择确认SACK
TCP的流量控制
利用滑动窗口实现流量控制
流量控制:让发送方的发送速率不要太快,要让接收方来得及接收
发送方的发送窗口不能超过接收方给出的接收窗口/通知窗口的数值rwnd
TCP的窗口单位是字节,不是报文段
必须考虑传输效率
TCP的拥塞控制
拥塞控制的一般原理
网络拥塞的条件:网络中某一资源的需求超过了该资源所能提供的可用部分
拥塞控制与流量控制
拥塞控制
防止过多的数据注入到网络,这样可以使网络中的路由器或链路不致过载
前提:网络能够承受现有的网络负荷
是一个全局性过程
涉及到所有的主机,所有的路由器,以及与降低网络传输性能有关的所有因素
流量控制
点对点通信量的控制,是端到端的问题(接收端控制发送方)
所要做到的是抑制发送端发送数据的速率,以便接收端得以接收
几种拥塞控制方法
慢开始和拥塞避免
发送方维持一个拥塞窗口cwnd
取决于网络的拥塞程度并且动态不断地变化着
慢开始
由小到大逐渐增大发送窗口/拥塞窗口数组
一开始vwnd=1
发送方每收到一个对新报文的确认,就使得发送方的拥塞窗口加1
每经过一个传输轮次(往返时间RTT),拥塞窗口cwnd就加倍 (即2的n次,n=0.。。n)
慢开始门限ssthresh状态变量
当cwnd
当cwnd>ssthresh,停止使用慢算法而改用拥塞避免算法
当cwnd=ssthresh,两个算法都可以
拥塞避免算法(并非完全避免拥塞)
让拥塞窗口cwnd慢慢变大
每经过一个往返时间RTT就把发送方的拥塞窗口cwnd+1,而不是加倍
出现拥塞
不管是慢开始阶段还是拥塞避免阶段,只要发送方判断出网络拥塞,就把ssthresh设置为出现拥塞时的发送方窗口值的一半
拥塞窗口cwnd=1,执行慢算法
快重传和快恢复
快重传
要求接收方每收到一个失序的报文段就立即发送重复确认
发送方只要一连收到三个重复确认就立即重传对方尚未收到的报文段
快恢复
发送方连续收到三个重复确认时,执行"乘法减小"算法,把ssthresh减半
把cwnd设为慢开始门限ssthresh减半后的数值,然后执行拥塞避免算法
使用快恢复算法时候,慢开始算法只是在TCP建立连接和网络出现超时才使用
随机早期检测RED
路由器适当的分组丢弃策略
运输层协议概述
进程之间的通信
两主机进行通信就是两个主机中的应用进程互相通信
通信的真正端点并不是主机而是主机中的进程
端到端的通信是应用进程之间的通信
IP协议:主机<->主机;运输层协议:进程<->进程
网络层是主机之间提供逻辑通信
运输层是应用进程之间提供端到端的逻辑通信
运输层
共有功能
分用
复用
对收到的报文进行差错检测
IP数据报首部中的检验和字段,只检查首部是否出现差错而不检查数据部分
两种协议
面向连接的TCP
尽管下面的网络是不可靠的,但逻辑通信信道相当于一条全双工可靠信道
无连接的UDP
逻辑通信信道仍然是一条不可靠信道
运输层向高层用户屏蔽了下面网络核心的细节
运输层的两个主要协议
用户数据报协议UDP
UDP用户数据报
不需要先建立连接
远地主机的运输层在收到UDP报文收不需要给出任何确认
传输控制协议TCP
TCP报文
提供面向连接的服务:先建立连接传输数据后释放连接
不提供广播或多播服务
开销,协议数据单元的首部增加,占用许多的处理机资源
运输层的端口
运输层使用协议端口号/端口号(16位端口号标记端口)
虽然通信的是应用进程,但是只要把传送的报文交到目的主机的某一个合适的目的端口,剩下的工作(最后交付目的进程)由TCP完成
在协议栈层间的抽象的协议端口是软件端口
软件端口是各种协议进程与运输实体进行层间交互的一种地址
实现端口的方式取决于操作系统
进程通信
知道IP地址--找到对方计算机
知道端口号--找到对方计算机的进程
分类
服务器端使用的端口号
熟知端口:0~1023
登记端口:1024~49151
客户端使用的端口号
9152~65535
用户数据报协议UDP
UDP概述
在IP的数据报服务之上增加的功能
复用
分用
差错检测
主要特点
UDP是无连接的,即发送数据之前不需要建立连接,减少了开销和发送数据之前的时延
UDP使用尽最大努力交付,即不保证可靠交付
UDP是面向报文的
保留应用层报文的边界
UDP一次交付一个完整的报文
UDP没有拥塞控制
UDP支持一对一,一对多,多对一,多对多的交互通信
UDP的首部开销小
UDP的首部格式
首部字段(8个字节)
组成
源端口
目的端口
长度
检验和
伪首部
出错
接收方UDP发现收到的报文中的目的端口不正确,丢弃该报文
由ICMP发送“端口不可达”差错报告报文给发送方
traceroute让发送的UDP故意使用一个非法的UDP端口,结果ICMP返回“端口不可达”,达到检测
区别
IP数据报的检验和之眼贱IP数据报的首部
UDP的检验和是把首部和数据部分一起检验
检查:UDP用户数据报的源端口、目的端口号、UDP用户数据报数据部分、IP数据报的源IP地址和目的IP地址
数据字段
传输控制协议TCP概述
TCP最主要的特点
TCP面向连接的运输层协议
每一条TCP连接只能有两个端点,每一条TCP连接只能是点对点的(一对一)
TCP提供可靠交付的服务。数据,无差错,不丢失,不重复,并且按序到达
TCP提供全双工通信
TCP连接的两端都设有发送缓存和接收缓存
面向字节流
但是传送的数据单元是报文段
TCP的连接
TCP连接的端点称为套接字/插口
套接字 socket={IP地址:端口号}
每一条TCP连接唯一地被通信两端的两个端点(即两个套接字)所确定
TCP连接::={socket1,socket2}={(IP1:port1),(IP2:port2)}
同一个IP地址可以有多个不同的TCP连接,同一个端口号也可以出现多个不同的TCP连接
可靠传输的工作原理
理想的传输条件
传输信道不产生差错
不管发送方以为多快的速度发送数据,接收方总是来得及处理收到的数据
停止等待协议
每发送完一个分组就停止发送,等待对方的确认,在收到确认再发送下一个分组
无差错情况
出现差错
利用超时计时器实现超时重传
注意
A在发送完一个分组后,必须暂时保留已发送的分组的副本
分组和确认分组都必须进行编号
超时计时器设置的重传时间应当比数据在分组传输的平均往返时间更长一些
确认丢失和确认迟到
确认丢失
B收到重复的分组
丢弃这个重复的分组
向A发送确认
确认迟到
A收到重复的确认
丢弃重复的确认
B收到重复的M1
丢弃并重传确认分组
所以
确认和重传机制,可以在不可靠的传输网络上实现可靠的通信
自动重传请求ARQ
信道利用率
连续ARQ协议
发送方每收到一个确认,就把发哦是那个窗口向前滑动一个分组的位置
接收方采用累积确认方式
对按序到达的最后一个分组发送确认
优点
容易实现
即使确认丢失也不必重传
提高信道利用率
缺点
不能向发送方反映出接收方已经正确收到的所有分组的信息
TCP的运输连接管理
运输连接三个阶段
连接建立
数据传送
连接释放
TCP的连接建立
采用客户服务器方式
主动发起连接建立的应用进程--客户
被动等待连接建立的应用进程--服务器
用三次握手建立TCP连接
A还要发送一次确认的原因:防止已失效 失效的连接请求报文突然有传送到了B而产生错误
TCP的连接释放
用了四次握手释放TCP连接
任何一方都可以在数据传送结束后发送连接释放的通知,待对方后就进入半封闭状态
设置时间等待2MSL的原因
防止已失效的连接请求报文段出现在本连接中
TCP的有限状态机
0 条评论
下一页
图形选择
思维导图
主题
补充说明
AI生成
提示
关闭后当前内容将不会保存,是否继续?
取消
确定