计算机网络中传输层,计算机网络之传输层

传输层为运行在不同主机上的进程提供了端到端的逻辑通信机制,主要包括UDP、TCP两个协议

一、基本的工作方式:

发送端:将应用层递交的消息分成一个或多个segment(报文段),并向下传输给网络层

接收端:将接收到的segment组装成消息并交给上层应用层

二、TCP、UDP协议

1、TCP特点提供点对点的通信机制

可靠、按序的字节流机制

流水线机制

发送方、接收方缓存

全双工,同一连接中能够传输双向数据流

累计确认机制,该序列号之前的所有字节均已被正确接收到

2、TCP段结构序列号:是指segment中第一个字节的编号,建立TCP连接时双方随机选择序列号

ACKs:希望接收到的下一个字节的序列号

3、UDP

基本是对IP协议简单封装的基础上加上以下两个功能:

UDP多路复用、多路分用传输层依据头部信息将收到的Segment交给正确的Socket,即不同的进程;

从多个Socket接收数据,为每块数据封装上头部信息,生成Segment,交给网络层;

UDP检验和(checksum)

三、可靠数据传输(rdt)原理

何为可靠:数据包不错、不丢、不乱

1. 流水线机制

流水线机制即同时发送多个packet。

2. 滑动窗口

管理空中的packet(未经确认),即序列号的范围。随着协议的运行,窗口在序列号空间内向前滑动。主要包括:GBN,SR。GBN 处理乱序时,由于接收方没有缓存,因此重发的packet较多,造成一定的浪费

SR 接收方对每个packet单独进行确认,设置缓存机制,缓存乱序到达的packet 发送方只重传没收到ACK的分组(每个packet有单独的计时器)

3. 可靠数据传输TCP RTT和超时 大于RTT,过短会造成不必要的重传,过长会对段丢失时间反应慢

如何估计RTT?

SampleRTT:测量从段发出去到收到ACK的时间,求平均值EstimatedRTT。移动加权平均: EstimatedRTT = (1-⍺)EstimatedRTT + ⍺sampleRTT

DevRTT = (1- β)DevRTT + β|SampleRTT-EstimatedRTT|

超时时间TimeoutInterval = EstimatedRTT + 4*DevRTT

TCP发送方发送数据流程从应用层接收到数据

创建Segment

序列号是Segment第一个字节的编号

开启计时器

设置超时时间:TimeOutInterval

重传引起超时的Segment

重启定时器

如果确认此前未确认的Segment,更新SendBase,如果窗口中存在未被确认的packet,重新启动计时器

快速重传机制

如果发送方收到对同一数据的3个ACK,则假定该数据之后的段已经丢失,在定时器超时之前即进行重传。

四、流量控制

基本思想:控制发送方传输数据不能太多、太快,以至于淹没接收方(buffer溢出)

方式:Receiver通过在Segment的头部字段将RcvWindow告诉Sender

Sender限制自己已经发送的但未收到ACK的数据不超过接收方的空闲RcvWindow尺寸注意:如果Sender接收到RcvWindow=0,会出现什么情况? 在这种情况下,发送方仍然可以发送很小的段,从而可以让接收方回复新的RcvWindow大小。

五、连接管理

发送发和接收方在传输数据之前会建立连接,同时交换Buffer和流量控制信息等。

* 通过三次握手建立连接:客户主机向服务器发送SYN报文段,初始序列号等,此外不携带其他任何数据

服务器收到SYN报文段,答复SYNACK报文段,服务器分配缓存,选择初始序列号并答复客户机

客户机收到服务器SYNACK报文段后,会答复一个ACK报文段

为什么需要三次握手?两次是否可行?

* 通过四次握手断开连接:客户端和服务端都可以主动发起断开

客户端socket调用关闭的函数,发送FIN报文段

服务器收到后,答复ACK

服务器发送FIN报文段

客户端收到FIN后,答复ACK,并等待一段时间(一般30s),如果这段时间内再次收到FIN,会再次发送ACK。

六、拥塞控制

太多发送主机发送了太多数据或者发送速度太快,导致网络无法处理。

主要表现:packet丢失(路由器缓存溢出)、分组延迟过大(在路由器缓存中排队)

代价:时延变大,上游传输能力被浪费。

那么如何进行拥塞控制呢?管制发送方发送速率端到端拥塞控制 网络层不需要显式的提供支持,端系统通过观察loss,delay等网络行为判断是否发生拥塞(TCP采用此种方式)

网络辅助的拥塞控制 路由器向发送方显式地反馈网络拥塞信息,简单的拥塞指示(1bit)

ATM ABR(available bit rate)拥塞控制

发送发发送RM cells,交换机设置RM cell位:NI bit:rate不许增长,CI bit:拥塞指示。RM cell由接收方返回给发送方。

TCP如何控制网络速率:加性增-乘性减:AIMD

逐渐增加发送速率,谨慎探测可用带宽,直到发生loss。每个RTT将congwin增大一个MSS,发生loss后将CongWin减半。慢启动:SS

当连接开始时,指数性增长。TCP连接建立时,CongWin=1,例:MSS=500 byte,RTT=200msec,初始速率=20k bps。初始速率很慢,但是快速攀升。Threshold变量

该变量控制指数增切换到加性增。loss事件发生时,Threshold被设为Loss事件前CongWin值的1/2。Loss事件的处理

如果是3个重复的ACK,CongWin将为原来的1/2,如果是超时造成的loss,CongWin降为1。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值