《计算机网路:自顶向下方法》第三章学习总结

1.运输层与网络层的关系?

网络层提供了主机间的逻辑通信,而运输层提供了不同主机间进程之间的逻辑通信,在端系统中,运输层协议将来自应用进程的报文移动到网络边缘(即网络层)

2.TCP和UDP最基本的责任?

将两个端系统间IP的交付服务扩展为运行在端系统上两个进程之间的交付服务

将主机交付扩展到进程间交付被称为运输层的多路复用与多路分解

3.UDP所能提供的服务?

进程到进程的数据交付和差错检测是两种最低限度的运输层的服务,也是UDP所能提供的仅由的两种服务

4.TCP所能提供的服务?

TCP除了能提供数据交付和差错检测外,还为应用程序提供了几种附加服务。

首先,他提供可靠数据传输,然后TCP还提供拥塞控制

5.什么是多路复用和多路分解?

多路复用:在源主机从不同套接字中接受数据块,并未每个数据块装上首部信息从而生成报文段,然后将报文段传输至网络层

所有这些工作称为多路分解

多路分解:目的主机,运输层检查报文段,标识出接收套接字,进而将报文段定向到该套接字。将运输层报文段中的数据交付到正确的套接字的工作称为多路分解

6.多路复用要求是什么

1)套接字有唯一标识符(UDP是一个二元组:目的IP地址,目的端口号;TCP是一个四元组:源IP地址,目的IP地址,源端口号,目的端口号) 2)每个报文段有特殊字段来指示该报文段所要交付的套接字(源端口号和目的端口号)

7.某些应用选择使用UDP协议的原因(UDP协议相比TCP的优点):

1)关于何时,发送什么数据的应用层控制更为精细。采用UDP时,只要应用进程将数据传递给UDP,UDP就会将此数据打包进UDp报文段并立即传递给网络层。而TCP有一个拥塞控制机制,以便当前源和目的主机间的一条或多条链路变得极度拥塞时来遏制运输层TCP发送方。并且TCP会一直重新发送数据报文段直到目的主机收到此报文段并加以确认,而不管可靠交付需要用多长时间

2)无需连接建立

TCP在开始数据传输之前要进过三次握手,UDP却不需要任何准备即可进行数据传输,因此UDP不会引入建立连接的时延。

3)无连接状态

TCP需要在端系统中维护连接状态。此连接状态包括接收和发送缓存,拥塞控制参数以及序号和确认好的参数。而UDP不维护连接状态,也不跟踪这些参数。

4)分组首部开销小。每个TCP报文段都有20字节的首部开销,而UDP仅由8字节的开销

8.流行的因特网应用及所使用的应用层和运输层协议

1)电子邮件 应用层协议:SMTP 运输层协议:TCP

2)远程终端访问 应用层协议:Telnet 运输层协议:TCP

3)Web 应用层协议:HTTP 运输层协议:TCP

4)文件传输 应用层协议:FTP 运输层协议:TCP

5)远程文件服务器 应用层协议:NFS 运输层协议:通常UDP

6)流式多媒体 应用层协议:通常使用专用的协议 运输层协议:UDP或TCP

7)因特网电话 应用层协议:通常使用专用的协议 运输层协议:UDP或TCP

8)网络管理 应用层协议:SNMP 运输层协议:通常UDP

9)路由选择协议 应用层协议:RIP 运输层协议:通常UDP

10)名字转换 应用层协议:DNS 运输层:通常UDP

9.UDP报文段结构

UDP首部只有4个字段,每个字段由两个字节组成。

通过端口号可以使目的主机将应用数据交给运行在目的端系统中的进程(即执行分解功能)

长度字段指示了在UDP报文段中的字节数(首部加数据)

检验和字段用于接收方检查在该报文段是否出现了差错

10.UDP检验和

UDP检验和提供了差错检测功能,用于确定当UDP报文段从源到达目的地时,其中的比特是否发生了改变

发送方的UDP对报文段中的所有16比特字的和进行反码运算,求和时遇到的任何溢出都被回卷,得到的结果放在检验和字段

在接收方,如果接收方报文段所有16比特字的和加上检验和不全为1,则该分组已经出现了差错

11.端到端原则是什么

该原则表示因为某种功能(比如差错检测)必须基于端到端实现:与在较高级别提供这些功能的代价相比,在较低级别上设置的功能可能是冗余的或几乎没有价值的

12.GBN协议(回退N步协议)

在GBN协议中,允许发送方发送多个分组而不需等待确认,但是未确认的分组数不能超过某个最大允许数N。如果我们将基序号(base)定义为最早的未确认分组的序号,将下一个序号(nextseqnum)定义为最小的未使用序号(即下一个待发分组的序号),则课将序号范围分割成4段。【0,base-1】段内的序号对应于已经发送并被确认的分组。【base,nextseqnum-1】对应已经发送但未被确认的分组。【nextseqnum,base+N-1】对应为可以发送但未发送的分组,大于等于base+N的序号是不能使用的。N常被称为窗口长度,GBN协议也常被称为滑动窗口协议。

GBN发送方必须响应三种类型的事件:

1)上层的调用。当上层调用时,发送方首先检查发送窗口是否已满,即是否有N个已发送但未被确认的分组。如果窗口未满,则产生一个分组并将其发送,并相应的更新变量。如果窗口已满,发送方只需将数据返回给上层,隐式的指示上层该窗口已满

2)收到一个ACK。在GBN协议中,对序号n的分组的确认采取累积确认的方式。表示接收方已正确接收到序号为n的以前包括n在内的所有分组

3)超时事件。如果出现超时,发送方重传所有已发送但还未被确认过的分组

GBN接收方动作:如果一个序号为n的分组被正确接收到,并且按需,则接收方为分组n发送一个ack,并将分组中的数据部分交付上层,在所有其他情况下,接收方丢弃所有分组

13.SR协议(选择重传协议)

选择重传协议通过让发送方仅重传那些他怀疑在接收方出错的分组而避免不必要的重传

SR协议发送方动作:

1)从上层收到数据。当从上层收到数据后,SR发送方检查下一个可用于该分组的序号。如果序号位于发送方的窗口内,则将数据打包并发送。否则就像GBN一样,要么将数据缓存,要么将其返回给上层以便以后传输

2.超时。定时器再次被用来防止丢失分组。然而,现在每个分组必须拥有其自己的逻辑定时器,因为超时发生后只能发送一个分组

3)收到ACK。如果收到ACK,倘若该分组序号在窗口内,则SR发送方将那个被确认的分组标记为已接受。如果该分组的序号等于send_base,则窗口基序号向前移动到具有最小序号的未确认分组处。如果窗口移动了并且有序号落在窗口内的未发送分组,则发送这些分组。

SR接收方的动作:SR接收方将确认一个正确接收的分组而不管其是否按需。失序的分组将被缓存直到所有丢失分组(即序号更小的分组)皆被收到为止,需要注意的时,假如收到了序号不在接收窗口内的分组,也必须产生一个ACK,即使该分组是接收方以前确认过的分组。其他情况,忽略该分组

SR协议窗口长度必须小于或等于序号空间的一半。

14.TCP报文段结构

首保包括:

1)16比特的源端口号和16比特的目的端口号,它被用于多路复用/分解来自或送到上层的数据

2)32比特的序号字段和32比特的确认号字段。这些字段被TCP发送方和接收方用于实现可靠数据传输服务

3)16比特的接收窗口字段,该字段用于流量控制。

4)4比特的首部长度字段,该字段指示了以32比特的字为单位的TCP首部长度。由于TCP的选项字段的原因,TCP首部的长度是可变的,通常选项字段为空,所以TCP首部的典型长度就是20字节

5)可选与变长的选项字段。该字段用于发送方与接收方协商最大报文长度时,或在高速网络环境下用作窗口调节因子时使用。

6)6比特的标志字段。ACK比特用于指示确认字段中的值是有效的,即该报文段包括一个对已被成功接收报文段的确认。RST,SYN,FIN比特用于连接建立和拆除。实践中PSH和URG并没有使用

15.TCP的序号和确认号

序号:TCP把数据看成一个无结构的、有序的字节流。序号是建立在传送的字节流上,而不是建立在传送的报文段的序列之上。因此一个报文段的序号是该报文段首字节的字节流编号。

确认号:TCP是全双工的,因此主机A在向主机B发送数据的同时,也许也在接收来自B的数据(都是同一条TCP连接的一部分)。从主机B到达的每个报文段都有一个序号用于从B流向A的数据。主机A填充进报文段的确认号是主机A期望从主机B收到的下一字节的序号。假设主机A已收到了来自主机B的编号为0~535的所有字节,同时假设他打算发送一个报文段给主机B。主机A等待主机B的数据流中字节536及以后的所有字节。所以主机A就会在它发往主机B的报文段的确认号字段中填上536.

16.快速重传

一旦收到3个冗余ACK,TCP就执行快速重传,即在该报文段的定时器过期前重传丢失的报文段

17.TCP差错恢复机制

TCP是一个GBN协议还是SR协议?TCP确认是累积式的,正确接收但失序的报文段是不会被接收方逐个确认的。因此发送方仅需维持已发送过但未被确认的字节的最小序号和下一个要发送的字节的序号。在这种意义下,TCP看起来更像一个GBN协议,但是TCP协议和GBN协议有着显著区别。许多TCP实现会将正常接收但失序的报文段缓存起来。当发送方发送一组报文段1,2,...,N,假设对分组n<N的确认报文丢失,但是其余N-1个确认报文分别在超时以前到达发送端,在该例中,GBN不仅会重传分组n,还会重传所有后继的分组n+1,n+2,...,N,而TCP将重传至多一个报文段,即报文段n,此外,如果对报文段n+1的确认报文在报文段n超时之前到达,TCP甚至不会重传报文段n

18.TCP连接管理

TCP三次握手:

1)第一步:客户端的TCP首先向服务器端的TCP发送一个特殊的报文段。该报文段中不包含应用层数据。但是在报文段的首部中的一个标志位(SYN比特)被置为1.因此这个特殊报文段被称为SYN报文段。另外,客户机会随机选择一个初始序号(client_isn),并将此编号放置于该起始的TCP SYN报文段的序号字段中

2)第二部:一旦包含TCP SYN报文的IP数据报到达服务器主机,服务器会从该数据报中提取出TCP SYN报文段,为该TCP分配TCP缓存和变量,并向该客户TCP发送允许连接的报文段。这个允许连接的报文段也不包含应用层数据。但是,在报文段的首部却包含3个重要的信息。首先SYN比特被置为1,其次该报文段的确认号字段被置为client_isn+1。最后,服务器选择自己的初始序号(server_isn),并将其放置到TCP报文段首部的序号字段中。该允许连接报文段有时被称为SYNACK报文段

3)在收到SYNACK报文段后,客户也要给连接分配缓存和变量。客户主机则向服务器发送另一个报文段。这最后一个报文段对服务器的允许连接的报文段进行了确认(通过将值server_isn+1放置到TCP报文段首部的确认字段中来完成此项工作),因为连接已经建立了,所以该SYN比特被置为0.该三次握手的第三个阶段可以在报文段负载中携带客户到服务器的数据

TCP四次挥手:

1)客户应用进程发出一个关闭连接。这会引起客户TCP向服务器进程发送一个特殊的报文段。这个特殊的报文段让其首部中的一个标志位即FIN比特被设置为1

2)服务器收到该报文段后,就向客户机回送一个确认(ACK)报文段

3)然后服务器发送自己的终止报文段,其FIN比特被置为1

4)最后该客户机对这个服务器的终止报文段进行确认

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值