计算机网络:第5章 运输层

5.1 运输层概述

image-20220122183344244

asdg

5.2 运输层端口号、复用与分用的概念

5.2.1 端口号

image-20220122184029830

5.2.2 发送方的复用和接收方的分用

image-20220122184242398

image-20220122184322866

5.3 UDP和TCP的对比

image-20220122185120110

image-20220122185224656

image-20220122185941503

  • UDP不会对应用层报文进行任何修改,在传送的过程中只会增加和移除UDP首部,所以是面向应用报文的。
  • TCP 协议中,发送方的TCP把应用层交付下来的数据块看成一连串的字节流,编号并存储在发送缓存中,TCP根据发送策略选取一部分字节流并添加TCP首部发送出去。接收方的TCP接受后将其转变为字节流存在缓存中并根据策略发送。发送方发送的数据块和接收方接受到的数据块个数不用相同,保证字节流相同即可。

image-20220122191213997

image-20220122191237341

5.4 TCP流量控制

image-20220126120659318

假设初始滑动窗口为400字节,TCP数据报文段最大接受100字节,B主机针对自己缓存中剩余空间的情况对主机A进行流量控制,具体如下:

image-20220126121347159

主机A收到0窗口的通知后就会启动一个持续计时器,作用是防止B主机发出的信息丢失造成的死锁。需要注意的是TCP协议规定,即时接收窗口为0,也必须接受0窗口探测报文段,确认报文段以及携带紧急数据的报文段。

image-20220126121832790

如果0窗口探测报文丢失,也不会造成死锁,因为存在重传计时器。

image-20220126130847220

5.5 TCP拥塞控制

5.5.1 定义

image-20220126131202518

5.5.2 拥塞控制算法

image-20220126131619798

image-20220126131557512

慢开始:

在慢开始算法中,发送方每接收到一个对新报文段的确认时,就将拥塞窗口+1,直到拥塞窗口增加到慢开始门限时执行拥塞避免算法。

拥塞避免:

每次传输轮次结束后,拥塞窗口只能线性+1。当发生超时重传时,很可能网络发送了拥塞,则将慢开始门限调整为发送拥塞时拥塞窗口的一般,并且将拥塞窗口重新设置为1,重新开始慢开始算法。

image-20220126132951217

image-20220126133139101

快重传算法:

image-20220126133347706

快恢复算法:

image-20220126133540129

image-20220126133700385

image-20220126133827719

5.6 TCP超时重传时间的选择

5.6.1 RTO的选择标准

RTO时间比RTT短:

image-20220126134125638

RTO时间远大于RTT:

image-20220126134143806

结论: RTO应该略大于RTT,但由于每次报文传输的RTT都不一定相同,所以超时重传时间不能根据某次传输的RTT决定。

5.6.2 RTO的计算方法

可以利用每次测得的RTT样本,计算加权平均往返时间RTTs(平滑的往返时间)。

image-20220126134556521

image-20220126134711307

5.6.3 RTT的测量方法

image-20220126134935842

image-20220126135051978

image-20220126135244449

5.7 TCP可靠传输的实现

TCP基于以字节为单位的滑动窗口来实现可靠传输。

image-20220126140259873

如何描述发送窗口的状态?

image-20220126140413945

image-20220126140421718

image-20220126141106599

image-20220126141223446

image-20220126141353026

5.8 TCP的传输连接管理

image-20220126141449892

5.8.1 TCP的连接建立

image-20220126141502498

  • TCP服务器进程先创建传输控制块,然后进入监听状态,存储TCP传输中的重要信息,内容如下:

    image-20220126142143541

  • TCP客户端进程首先也是创建传输控制块,然后向服务器进程发送TCP连接请求报文段,进入同步已发送状态,TCP连接请求报文段的同步位SYN设置为1,表明是一个TCP连接请求报文段,序号字段seq设置为一个初始值x,作为TCP客户进程的初始序号,TCP规定SYN被设置为1的报文段不能携带数据,但是要消耗一个序号。

  • TCP服务进程收到报文后,发送TCP连接请求确认报文段,进入同步已接收状态,SYN和确认位ACK都为1,表面是一个TCP连接请求确认报文段,序号值seq设置为了一个初始序号y, 作为TCP服务进程选择的初始序号,确认号字段ack的值被设置为了x+1,这是对 TCP客户进程所选择的初始序号的确认。

  • TCP客户进程收到TCP服务进程发来的确认报文段后再向TCP服务器发送一个普通的TCP确认报文段,进入连接已建立状态。TCP规定普通的TCP确认报文段可以携带数据,如果不携带数据则不消耗序号,下一个发送的报文段序号不变。

  • TCP服务器收到确认报文段后进入连接已建立状态,可以进行数据传输。

image-20220126142015855

为什么要“三报文”握手,而不是“两报文”握手,最后一次的确认是否多余?

image-20220126143429824

5.8.2 TCP的连接释放

image-20220126144126658

为什么需要时间等待?

image-20220126144223624

保活计时器:

image-20220126144335962

5.9 TCP报文段的首部格式

image-20220126144407380

image-20220126144422137

image-20220126144430789

image-20220126144542680

image-20220126144558425

image-20220126144605788

image-20220126144713790

由于二进制0101=十进制5,TCP报文段以4字节为单位,所以一共5 * 4=20字节

image-20220126144821417

image-20220126144933249

image-20220126145007492

image-20220126145018530

image-20220126145047990

image-20220126145101891

image-20220126145126800

image-20220126145138802

image-20220126145158596

image-20220126145230068

image-20220126145247027

暂无评论

发送评论 编辑评论


|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇