世&#x754C杯在线&#x5F00户

[版权声明] 本站所有资料由用户提供并上传,若内容存在侵权,请联系邮箱。资料中的图片、字体、音乐等需版权方额外授权,请谨慎使用。网站中党政主题相关内容(国旗、国徽、党徽)仅限个人学习分享使用,禁止广告使用和商用。

一、传输层和网络层的关系

三、传输层的多路复用和多路分用


将一个数据包分为多段(在应用层),并为每个数据封装加入头部数据生成一个segment报文段,通过socket接口发送给网络层

收到多个报文段,传输层根据头部数据的目标端口号分给不同的socket,再给到相应的进程

跟目标的ip地址和端口号有关,跟源地址和端口号无关

会为每个连接开启不同的socket


服务端有主进程,当外部有报文进来的时候,主进程会创建一个子进程与之通信,所以一个主进程会对应多个socket,每个socket通过四元组属性标识一个源主机(的某个socket)

一般采用多线程机制,线程耗用资源比进程少得多
一个进程对应多个线程,一个线程对应一个socket

四、可靠的数据传输原则


可以令数据在不可靠的信道上进行可靠传输
rdt_send():接受应用层数据,并发送给rdt协议
udt_send() :被可靠传输协议调用,在不可靠信道中传输数据
rdt_rcv() :接收到不可靠信道中数据,并发送给rdt协议


事件或者操作引起状态1向状态2转变


考虑错误,但不考虑丢包

解决重复接受分组报文→加入分组序号

  • 发送方两个序号就足够用了
  • 发送方需要两个状态机表示
  • 不能确定发送方是否正确接受确认/否定报文

既考虑有错误,也有丢包


收到非预期的(或者重复的)应答报文:
//什么都不做,等待计时器超时
当该报文的计时器超时:
收到预期的肯定应答报文:
//当出现延迟而重复接受分组报文的时候,
因为不能及时收到应答报文,将会重传分组报文,接受方也会重复收到分组报文,因此也会重复发送应答报文

  • rdt3.0协议将会占用更多的传输资源
    流水线技术允许发送方使用滑动窗口技术在收到ACK之前连续发送多个分组。 必须增加序号范围,因为每个输送中的分组(不计算重传的)必须有一个唯一的序号,而且也许有多个在输送中未确认的报文 协议的发送方和接收方要能缓存多个分组。发送方至少要能缓存那些已发送但没有确认的分组,接收方可能要缓存那些已正确接收的分组


a.当接收方接受到一个pkt报文时,会对序号为n的分组的确认采取累积确认的方式, 即接受方发送连续的、拥有最高序列号的分组的ACK,表明自己已正确接收到序号≤n的所有分组。
b.重传:发送方每发送一个pkt报文,都会为其设置一个计时器,当计时器超时时将会选择重传该报文
c.产生重复的ACK:乱序到达的分组直接丢弃(接收方无需缓存)重新确认序列号最大的、按序到达的分组
d.缓存:接收到无序的报文时会立即抛弃,接收方没有缓冲区,发送方会设立缓存区保存上层应用发来的数据

  • 过于浪费带宽, 许多分组根本没有必要重传


a.发送方:当从上层接收到数据后,发送方检查下一个可用于该分组的序号,如果序号位于发送方的窗口内,则将数据打包并发送,否则将缓存起来
send_base:基序号(序号最小的已发送报文
nextseqnum:下一个可用的分组序号
b.窗口前移:收到的ACK报文序号等于发送窗口基序号send_base(窗口中最左边的那个序号), 则整个窗口向前移动到具有最小序号的未确认处
c.缓存:接收到无序的报文时会检查该报文序号是否在接受窗口内([rcv_base, rcv_base + N-1] )如果该分组以前没收到过,则缓存该分组,并发送ACK报文。如果该分组序号已经存在,或者是在基序号之前的已接受的分组,也还要重新发送ACK报文。如果是按序到达的(分组序号等于rcv_base基序号),则将以前缓存过的所有连续分组发送给应用。
d.窗口大小:发送方和接收方窗口大小之和应该小于2的k次幂,k是序列号的位数,例如有0,1,2,3四个序号能用两个比特位表示00,01,10,11,k就等于2。如果发送窗口第一个分组没有收到ACK报文的话,就不能往前滑动,必须等到基序号的分组收到ACK报文。

六、传输层的UDP协议

UDP的校验和 = 伪首部 + 首部 + 数据部分,一起都检验

UDP检验和的计算方法是:

  1. 按每16位求和得出一个32位的数;
  2. 如果这个32位的数,高16位不为0,则高16位加低16位再得到一个32位的数;
  3. 重复第2步直到高16位为0,将低16位取反,得到校验和。

七、传输层的TCP协议


source port :源主机端口号(占用两个字节16位)
dest port :目标主机端口号(占用两个字节16位)
sequence number :本报文数据中(application data)的第一个字节在数据流中的序号 ,一般的起始序号是随机生成的(占用四个字节32位)
acknowledgement number :接收方期望收到的下一个报文数据第一个字节的序号(占用四个字节32位)
head length :报文首部长度 / 数据偏移地址。(占用4位)偏移地址最长60字节 ???
not used:保留字段(占用6位)
URG :紧急字段,值为1时紧急数据(urg data)有效(占用1位)
ACK :确认应答,值为1时为确认应答报文(占用1位)
PSH :立即提交字段,值为1时将尽快提交该报文(占用1位)
RST :重连字段,重新建立连接(占用1位)
SYN :同步字段,值为1时表示该报文是连接请求(占用1位)
FIN :终止标志字段,值为1时释放该连接(占用1位)
receive window :窗口字段,表示接收方缓存的大小(占用两个字段16位)
checksum :校验和字段(占用两个字段16位)
Urg data point :应急数据指针字段,指向应急数据最后一个字节,表明了它的大小,应急数据通常是在数据刚开始的地方(占用两个字段16位)
options:选项字段(长度可变,加入填充字段令其严格等于32位的倍数)


发送方序号seq是42,并且只发送了一个字节”C“,因此接收方返回的ACK是42+1=43,发送方的ACK表示其下一次预期收到的seq序号,即seq=79
同理,发送方收到接收方的报文后,因为还是传输的一个字节,再次发送报文

  • RTT(Round-Trip Time)往返时间:表示从发送端发送数据开始,到发送端收到来自接收端的确认(总共经历的时间。由三个部分决定:链路的传播时间、末端系统的处理时间、路由器的缓存中的排队和处理时间
  • 发送多个测试报文确定该网络下的RTT时间(每隔一个时间段不断修正均值)

TCP可靠传输建立在不可靠传输链路上:

在建立连接的三次握手中,发送方会在握手包中附带 receive window 缓冲区大小参数 ,以限制发送方传输的速率

其原因是由于TCP的头部窗口字段只有16bit,最多表示64k,为了表示更大的窗口,使用了可选的放大倍数

cwnd参数用于慢启动机制中,表示发送方在得到接收方确认前,最大允许传输的未经确认的数据(拥塞窗口大小),它不出现在TCP报文中,是发送方的内部参数。

cwnd 参数是根据网络情况动态调节的。关于cwnd拥塞窗口介绍在下文的 八-4 中有更详细的介绍。

再运行客户端发送端口:

TCP的三次握手机制:

SYN 同步标识位置1表示这是一个握手包
Seq是该报文的序号,其初始值x、y是随机生成的,防止被攻击
ACK确认标识位置1表示接收方收到报文,ACKnum有效
ACKnum是确认序号,也是下一次期待接受的序号 x+1 (x为接收到报文的Seq加上接收到的报文的长度)

当FIN置1时,表示该报文请求关闭连接


发送方在收到接收方的应答报文后不再主动发送数据,而是在一段时间内等待接收方再次发送一个请求关闭的报文,这是防止在关闭过程中有丢包,如果超时了没收到,就会重发带FIN置1的关闭报文。

  • 当A主机向C主机发送数据占用了路由器L1的全部缓存时,D主机向B主机发送的数据将会被阻塞,在路由器L1里被丢弃,造成严重丢包。
  • 又或者是当A主机→B主机发送数据占用了链路的全部带宽,导致了D主机→B主机所共用的路由器L1左侧的链路不通,也会造成时延过大。

发送方通过判断是否丢包严重 / 时延过大,来确定是否产生了拥塞

路由器向发送方提供网络情况反馈,

2-2、CBR 恒定的带宽速率
  • NI标志位:没有增量,当交换机预测紧急拥塞时,这些设备典型地设置NI位
  • CI标志位:拥塞指示,减少发送流量
  • ER标志位:明确信元速率
  • EFCI:明确正向拥塞指示,让接收方的CI标志位置1

按照拥塞控制方法的不同,现行使用的TCP分为几个版本:Tahoe,Reno,NewReno,Vegas,SACK 等。
下面主要讲的是Reno版本的TCP拥塞控制机制。

通过控制拥塞窗口(发送窗口)的大小来控制发送速率。

TCP拥塞控制机制方法主要分为如下4个阶段:

慢启动机制 & 阻塞控制

虽然流量控制可以避免发送方过载接收方,但是却无法避免过载网络,这是因为接收窗口「rwnd」只反映了服务器个体的情况,却无法反映网络整体的情况。cwnd 参数的初始值往往比较小,然后随着数据包被接收方确认,窗口成倍扩大,所以被称为慢启动

那么红色部分就是随着「cwnd」的增加,当出现网络过载,丢包后,「cwnd」的大小会减少至一半,即把cwnd增加的阈值。

  • 丢包分两种,一是超时,Reno和Tahoe的阈值都减半,拥塞窗口都=1
  • 二是三次重复应答,Tahoe阈值减半,拥塞窗口=1
    ,而Reno阈值减半,拥塞窗口减半
  • 在每一次丢包后(TCP协议会让他收到三次重复),横坐标纵坐标都减半,然后再以k=1线性增加

[版权声明] 本站所有资料由用户提供并上传,若内容存在侵权,请联系邮箱。资料中的图片、字体、音乐等需版权方额外授权,请谨慎使用。网站中党政主题相关内容(国旗、国徽、党徽)仅限个人学习分享使用,禁止广告使用和商用。

我要回帖

更多关于 ceaN3E48zSF 的文章

 

随机推荐