计算机网络(4)运输层

1、路由器的构成:

是一种具有多个输入输出端口的专用计算机,其任务是转发分组。工作在网络层。

1)路由选择部分:即控制部分,核心构件是选择处理机。其任务是根据所选定的路由选择协议构造出路由表,同时经常或定期地和相邻路由器交换路由信息而不断地更新和维护路由表。

2)分组转发部分:交换结构;一组输入端口;一组输出端口。(端口指硬件接口)

--交换结构:

根据转发表对分组进行处理,将某个输入端口进入的分组从一个合适的输出端口转发出去。可看成是一种“在路由器中的网络“。

--转发:是路由器根据转发表把收到的IP数据报从路由器合适的端口转发出去。仅涉及一个路由器。

--路由选择:涉及很多路由器,路由表是许多路由器协同工作的结果。

路由表一般仅包含从目的网络到下一跳(用IP地址表示)的映射,而转发表是从路由表得来的。在转发表的每一行必须包含从要到达的目的网络到输出端口和某些MAC地址信息(如下一跳的以太网地址)的映射。路由表总是用软件实现,转发表可以用特殊的硬件实现。

2、在网络层的处理模块中设有一个缓冲区,实际上它是一个队列。当交换结构传送过来的分组的速率超过输出链路的发送速率时,来不及发送的分组就必须暂时存放在这个队列中。数据链路层处理模块把分组加上链路层的首部和尾部,交给物理层后发送到外部线路。

--分组丢失:就是发生在路由器中的输入或输出队列产生溢出的时候。设备或线路出现故障也会使分组丢失。

3、IP多播:

在因特网上进行多播。IP多播所传送的分组需要使用多播IP地址。能够运行多播协议的路由器称为多播路由器。其也可以转发普通的单播IP数据报。

多播组的标识符就是IP地址中的D类地址。D类IP地址的前四位是1110,故D类地址范围是224.0.0.0到239.255.255.255。我们用每一个D类地址标志一个多播组。共有2*28个多播组。多播数据报是”尽最大努力交付“,不保证一定能够交付给多播组内的所有成员。首部中的协议字段是2,表明使用IGMP协议。

多播地址只能用于目的地址,不能用于源地址。对多播数据报不产生ICMP差错报文。

多播IP地址与以太网硬件地址的映射关系不是唯一的,因此收到多播数据报的主机,还要在IP层利用软件进行过滤,把不是本主机要就收的数据报丢掉。

4、IP多播需要两种协议:

1)网际组管理协议IGMP:

让连接在本地局域网上的多播路由器知道本局域网上是否有主机(严格讲是主机上的某个进程)参加或退出了某个多播组。

2)多播路由选择协议:

多播转发必须动态地适应多播组成员的变化(这时饿了拓扑并未发生变化)。注意:单播路由选择通常是在网络拓扑发生变化时才需要更新路由。

多播路由器在转发多播数据报时,不能仅仅根据多播数据报中的目的地址,还要考虑这个多播数据报从什么地方来和要到什么地方去。多播数据报可以由没有加入多播组的主机发出,也可以通过没有组员接入的网络。在多播过程中一个多播组中的成员是动态变化的。

5、反向路径广播RPB:

每一个路由器在收到一个多播数据报时,先检查数据报是否从源点经最短路径传送来的。

--虚拟专用网VPN:

在因特网中的所有路由器,对目的地址是专用地址的数据报一律不进行转发。

--网络地址转换NAT:

NAT路由器至少要有一个全球的IP地址,才能和因特网相连。通过NAT路由器的通信必须由专用网内的主机发起。

6、运输层向它上面的应用层提供通信服务。真正进行通信的实体是在主机中的进程。

--复用:指在发送方不同的应用进程都可以使用同一个运输层协议传送数据。

--分用:指接收方的运输层在剥去报文的和首部后能够把这些数据正确交付到目的应用进程。

--逻辑通信:运输层之间的通信好像是沿水平方向传送数据。其实并没有。

运输层对收到的报文进行差错检测。在网络层IP数据报首部中的检验和字段,只检验首部是否出现差错而不检查数据部分。

7、运输层有两种不同的运输协议:面向连接的TCP和无连接的UDP。

1)用户数据报协议UDP:

无连接。尽最大努力交付。面向报文。一次交付一个完整的报文,应用程序必须选择合适大小的报文。没有拥塞控制。支持一对一、一对多、多对一和多对多的交互通信。首部开销小,只有8个字节。

2)传输控制协议TCP:

面向连接。每一条TCP连接只能有两个端点。通过可靠交付服务。通过全双工通信。面向字节流。不提供广播或多播服务。

8、软件端口:在协议栈层间的抽象的协议端口。是应用层的各种协议进程与运输实体进行层间交互的一种地址。

--硬件端口:是不同硬件设备进行交互的接口。

端口号只具有本地意义,它只是为了标志本计算机应用层中的各个进程在和运输层交互时的层间接口。在因特网不同计算机中,相同的端口号是没有关联的。TCP/IP的运输层用一个16位端口号来标志一个端口。

两个计算机中的进程要互相通信,必须知道对方的IP地址和对方的端口号。

--运输层的端口号分类:

1)服务器端使用的端口号:系统端口号,数值为0~1023。登记端口号,数值为1024~49151。

2)客户端使用的端口号:数值为49152~65535。供客户进程暂时使用。

9、UDP首部格式:数据字段和首部字段。

首部字段只有8个字节,由4个字段组成,均为两个字节。分别为:

--源端口:在需要对方回信时选用,不需要时可用全0。

--目的端口:在终点交付报文时必须使用。

--长度:最小值是8。(只有首部)

--检验和:检测UDP用户数据报在传输中是否有错,有错就丢弃。

注意:UDP的检验和是把首部和数据部分一起都检验。

10、TCP中的流是指流入到进程或从进程流出的字节序列。TCP对应用进程一次把多长的报文发送到TCP的缓存中是不关心的。

TCP连接的端点叫做套接字或插口。套接字socket = ( IP地址:端口号)

每一条TCP连接唯一地被通信两端的两个端点(即两个套接字)所确定。

--注意:TCP连接的端点是套接字,即(IP地址:端口号)。同一个IP地址可以有多个不同的TCP连接,而同一个端口号也可以出现在多个不同的TCP连接中。

11、理想的传输条件:

1)传输信道不产生差错。

2)不管发送方以多快的速度发送数据,接收方总是来得及处理收到的数据。

12、伪首部:

在计算检验和时,临时添加在UDP用户数据报前面,既不向下传送也不向上递交。伪首部的第3字段是全0,第4个字段是IP首部中的协议字段的值。对于UDP,此协议字段值为17.第5字段是UDP用户数据报的长度。

13、超时重传:

一段时间内没有收到确认,就认为刚才发送的分组丢失了。其实现为在每发送完一个分组设置一个超时计时器。若在超时器到期之前收到了对方的确认,就撤销计时器。

A向B发送数据时注意:

1)A在发送完一个分组后,必须暂时保留已发送的分组的副本。

2)分组和确认分组都必须进行编号。

3)超时计时器设置的重传时间应当比数据在分组传输的平均往返时间更长一些。

--自动重传请求ARQ:

重传的请求是自动进行的。接收方不需要请求发送方重传某个出错的分组。

--连续ARQ协议:

发送方每收到一个确认,就把发送窗口向前滑动一个分组的位置。接收方采用累积确认的方式。即收到几个分组后,对按序到达的最后一个分组发送确认。

累积确认的优点是即使确认丢失也不必重传。缺点是不能向发送方反映出接收方已经正确收到的所有分组的信息。

14、TCP报文段的首部格式:首部和数据部分。

TCP传送的数据单元是报文段。首部前20字节是固定的。分别是:

1)源端口和目的端口:各占2个字节。

2)序号:占4字节。使用mod2*32运算。字节流中的每一个字节都按顺序编号。整个要传送的字节流的起始序号必须在连接建立时设置。首部中的序号字段值则指的是本报文段所发送的数据的第一个字节的序号。

3)确认号:占4字节,是期望收到对方下一个报文段的第一个数据字节的序号。

注意:若确认号=N,则表明:到序号N-1为止的所有数据都已正确收到。

5)数据偏移:占4位,指出TCP报文段的首部长度。

6)保留:占6位。设置为0。下面有6个控制位说明本报文段的性质。

---1)紧急URG:当URG=1时表明紧急指针字段有效。它告诉系统此报文段中有紧急数据,应尽快传送(相当于高优先级的数据),不按原来的排队顺序。

---2)确认ACK:仅当ACK=1时确认号字段才有效。ACK=0时无效。TCP规定在连接建立后所有传送的报文段都必须把ACK置为1。

---3)推送PSH:很少使用。

---4)复位RST:当RST=1时表明TCP连接中出现严重差错,必须释放连接,然后再重新建立运输连接。RSF置为1还用来拒绝一个非法的报文段或拒绝打开一个连接。

---5)同步SYN:在连接建立时用来同步序号。当SYN=1而ACK=0时,表明这是一个连接请求报文段。

---6)终止FIN:释放一个连接。当FIN=1时表明此报文段的发送方的数据已发送完毕,并要求释放运输连接。

---7)窗口:占2字节,窗口值是0~2*16-1之间的整数。窗口指的是发送本报文段的一方的接收窗口(不是自己的发送窗口)。窗口值告诉对方:从本报文段首部中的确认号算起,就收方目前允许对方发送的数据量。

注意:窗口字段明确指出了现在允许对方发送的数据量。窗口值是经常在动态变化着。

---8)检验和:占2字节,包括首部和数据部分。计算检验和时要在TCP报文段的前面加上12字节的伪首部。

---9)紧急指针:占2字节,仅在URG=1时才有意义,她指出本报文段中的紧急数据的字节数。

---10)选项:长度可变,最长达40字节,当没有使用选项时,TCP的首部长度是20字节。

15、最大报文段长度MSS:

MSS是每一个TCP报文段中的数据字段的最大长度。数据字段加上TCP首部才等于整个的TCP报文段。MSS与接收窗口值没有关系。MSS应尽可能大些,只要在IP层传输时不需要再分片就行。

--窗口扩大选项:

占3字节,其中有一个字节表示移位值S。TCP首部中窗口字段长度是16位,最大的窗口大小为64K字节。

--时间戳选项:

占10字节,主要字段是时间戳值字段4字节;和时间戳回送回答字段4字节。

用来计算往返时间RTT,以及用于处理TCP序号超过2*32的情况,又称为防止序号绕回PAWS。

16、以字节为单位的滑动窗口:

发送方的应用进程把字节流写入TCP的发送缓存,接收方的应用进程从TCP的接收缓存中读取字节流。

--发送缓存用来暂时存放:

1)发送应用程序传送给发送方TCP准备发送的数据。

2)TCP已发送出但尚未收到确认的数据。

发送窗口通常只是发送缓存的一部分。已被确认的数据应当从发送缓存中删除,因此发送缓存和发送窗口的后沿是重合的。发送应用程序必须控制写入缓存的速率,不能太快。

--接收缓存用来暂时存放:

1)按序到达的、但尚未被接收应用程序读取的数据。

2)未按序到达的数据。如果接收到的分组被检测出有差错,则要丢弃。

17、TCP自适应算法:

记录一个报文段发出的时间,以及收到相应的确认的时间。之差为报文段的往返时间RTT。TCP保留了RTT的一个加权平均往返时间RTTs。超时计数器设置的超时重传时间RTO应略大于RTTs。

在计算加权平均RTTs时,只要报文段重传了,就不采用其往返时间样本。这样得出的加权平均RTTs和RTO比较准确。修正后:报文段每重传一次,就把超时重传时间RTO增大一些。典型的做法是取新的重传时间为2倍的旧的重传时间。

18、利用滑动窗口实现TCP的流量控制:

让发送方的发送速率不要太快,要让接收方来得及接收。发送方的发送窗口不能超过接收方给出的接收窗口的数值。注意:TCP的窗口单位是字节,不是报文段。

TCP为每一个连接设有一个持续计时器,只要TCP连接的一方收到对方的零窗口通知,就启动持续计时器。若持续计时器设置的时间到期,就发送一个零窗口探测报文段(仅携带1字节的数据),而对方就在确认这个探测报文段时给出了现在的窗口值。如果窗口仍然是零,那么收到这个报文段的一方就重新设置持续计时器。如果窗口不是零,那么死锁的僵局就可以打破了。

19、Nagle算法:

若发送应用程序把要发送的数据逐个字节地送到TCP的发送缓存,则发送方就把第一个数据字节先发送出去,把后面到达的数据字节都缓存起来。当发送方收到对第一个数据字符的确认后,再把发送缓存中的所有数据组装成一个报文段发送出去,同时继续对随后到达的数据进行缓存。只有在收到对前一个报文段的确认后才继续发送下一个报文段。当到达的数据已达到发送窗口大小的一半或已达到报文段的最大长度时,即立即发送一个报文段。

20、糊涂窗口综合症:

TCP接收方的缓存已满,而交互式的应用进程一次只从接收缓存中读取1个字节,然后向发送方发送确认,并把窗口设置为1个字节。接着,发送方又发来1个字节的数据。接收方发回确认,仍然将窗口设置为1个字节。这样下去使网络的效率很低。

--解决办法:可以让接收方等待一段时间,使得或者接收缓存已有足够空间容纳一个最长的报文段,或者等到接收缓存已有一半空闲的空间。

21、TCP的拥塞控制:

防止过多的数据注入到网络中,这样可以使网络中的路由器或链路不致过载。拥塞控制是一个全局性的过程。有很多的方法可以用来检测网络的拥塞,主要指标是:由于缺少缓存空间而被丢弃的分组的百分数;平均队列长度;超时重传的分组数;平均分组时延;分组时延的标准差。

--常用算法:

1)慢开始:发送方维持一个叫做拥塞窗口的状态变量。其大小取决于网络的拥塞程度,且动态地变化。发送方让自己的发送窗口等于拥塞窗口。由小到大逐渐增大拥塞窗口值。

2)拥塞避免:让拥塞窗口缓慢增大,即每经过一个往返时间RTT就把发送方的拥塞窗口加1,而不是加倍。

3)快重传:要求接收方每收到一个失序的报文段后就立即发出重复确认而不要等待自己发送数据时才捎带确认。

4)快恢复:当发送方连续收到三个重复确认时,才执行慢开始算法。

22、随机早期检测RED:

当路由器的队列已满时,以后再到达的所有分组将都被丢弃,此为尾部丢弃策略。路由器在某一时刻的瞬时队列长度完全可能远远超过平均队列长度。RED只是在可能的条件下尽量使”尾部丢弃“不要发生。

23、TCP的连接建立:三次握手。TCP规定ACK报文可以携带数据。

TCP的连接释放:TCP规定FIN报文段即使不携带数据,它也消耗掉一个序号。服务器每收到一次客户的火速局,就重新设置保活计时器,时间的设置通常是两小时。







  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值