《计算机网络 | 第五章:传输层》复习笔记

第五章:传输层

5.1 传输层提供的服务

5.1.1 传输层的功能

传输层位于网络层之上,它为允许在不同主机上的进程之间提供了逻辑通信,而网络层提供主机间的逻辑通信。

传输层的功能如下:

  1. 传输层提供应用进程之间的逻辑通信(即端到端)。

  2. 复用和分用。复用是发送方不同的应用进程都可以使用同一个传输层协议传送数据。分用是指接收方剥去报文的首部后能够把这些数据正确的交付到目的应用进程。

  3. 传输层还要进行差错检测

  4. 提供两种不同的传输协议,TCP和UDP

5.1.2 传输层的寻址与端口

  • 端口的作用

  1. 端口是传输层服务访问点(TSAP)

  2. 应用层的各种应用进程将其数据通过端口向下交付给传输层

  3. 传输层的数据向上通过端***付给应用层的相应进程

  4. 数据链路层的SAP是MAC地址,网络层SAP是IP地址,传输层的SAP是端口(SAP服务访问点)

  • 端口号

    应用进程通过端口号进行标识,端口号长度为16bit,能够标识65536个不同的端口号。端口号只具有本地意义。

    根据端口号范围可将端口分为两类:

    1. 服务器端使用的端口号。0~1023为熟知端口号;1024~49151为登记端口号。

    2. 客户端使用的端口号。数值为49152~65535

  • 套接字

    在网络中用IP地址来标识和区分不同的主机,通过端口号来标识和区分一台主机中不同应用进程,端口号拼接到IP地址即构成套接字Socket。

5.1.3 无连接服务与面向连接服务

  • 面向连接:通信双方在通信之前,必须先建立连接,在通信过程中,整个连接的情况一直被实时地监控和管理。通信结束后,应释放这个连接。

  • 无连接:两个实体之间的通信不需要先建立好连接,需要通信时,直接将信息发送到“网络”中,让该信息的传递在网上尽力而为地往目的地传送。

TCP/IP协议族在IP层之上使用了两个传输协议:

  1. 面向连接的传输控制协议(TCP),如HTTP、FTP、TELNET

  2. 无连接的用户数据报协议(UDP),如TFTP、DNS、SNMP

5.2 UDP协议

5.2.1 UDP数据报

  • UDP概述:UDP仅在IP的数据报服务之上增加了两个最基本的服务,复用和分用以及差错检测

  • UDP的优点:

    • UDP无须建立连接

    • 无连接状态

    • 分组首部开销小

    • 应用层能更好的控制要发送数据和发送时间,UDP没有拥塞控制,因此网络中的拥塞不会影响发送速率

    • UDP支持一对一、一对多、多对多、多对一的交互通信

  • UDP的特点:

    • 常用于传输较少数据的网络应用

    • 不保证可靠交付

    • 面向报文

  • UDP的首部格式

    UDP数据报包含两部分:UDP首部和用户数据。

    UDP首部有8B,由4个字段组成,每个字段的意义如下:

    1. 源端口

    2. 目的端口

    3. 长度

    4. 校验和

5.2.2 UDP校验

    在计算校验和时,要在UDP数据报之前增加12B的伪首部,伪首部并不是UDP的真正的首部。只是在计算校验和时,临时添加在UDP数据报前面的,得到一个临时的UDP数据报。

5.3 TCP协议

5.3.1 TCP协议的特点

TCP是在不可靠的IP层之上实现的可靠的数据传输协议,它主要解决传输的可靠、有序、无丢失和不重复问题。

主要特点:

  1. TCP是面向连接的传输层协议

  2. 每条TCP连接只能有两个端点,每条TCP连接只能是点对点的(一对一)

  3. TCP提供可靠交付服务,保证可靠、有序、无丢失和不重复

  4. TCP提供全双工通信,允许通信双方的应用进程在任何时候都能发送数据。TCP两端都有缓存,缓存主要存放:①发送应用程序传送给发送方TCP准备发送的数据,②TCP已发送但尚未收到的数据。

  5. TCP是面向字节流的。

5.3.2 TCP报文段

    TCP传送的数据单元称为报文段。TCP报文段既可以用来运载数据,又可以用来建立连接、释放连接和应答。

    一个TCP报文段分为首部和数据两部分,整个TCP报文段作为IP的数据部分,封装在IP数据报中。首部前20B是固定的,TCP首部最短为20B,后面有4N字节是根据需要而增加的选项,通常长度是4B的整数倍。

TCP各字段的意义如下:

  1. 端口和目的端口,各占2B

  2. 序号,4B

  3. 确认号,4B

  4. 数据偏移,占4位

  5. 保留,占6位

  6. 紧急位URG,1有效

  7. 确认位ACK,1有效

  8. 推送位PSH,1有效

  9. 复位位RST,1有效

  10. 同步位SYN,1有效

  11. 终止位FIN,1有效

  12. 窗口,占2B

  13. 校验和,占2B

  14. 紧急指针,占2B

  15. 选项,长度可变。

  16. 填充,凑数的,使首部为4B的整数倍

5.3.3 TCP连接管理(重点)

TCP是面向连接的的协议,因此每个TCP连接都有三个阶段,建立连接、数据传送、连接释放

TCP建立连接的过程中,要解决以下三个问题:

  1. 要使每一方都知道对方的存在

  2. 要允许双方协商一些参数

  3. 能够对运输实体资源进行分配

TCP连接的端点不是主机,不是主机的IP地址,不是进程,也不是传输层的协议端口,TCP连接的端口即为Socket

TCP的建立

三次握手(建立连接前服务器处于LISTEN状态)

第一步:客户机的TCP首先向服务器的TCP发送连接请求报文段。这个特殊报文段的首部中的同步位SYN=1,这时TCP客户进程进入SYN-SENT(同步已发送状态)状态。

第二步:服务器的TCP收到连接请求报文段后,如同意建立连接,则向客户机发回确认,并为该TCP连接分配缓存和变量。在确认报文段中,把SYN和ACK都置1,这时,TCP服务器进程进入SYN-RCVD(同步收到)状态。

第三步:当客户机收到确认报文段后,还要向服务器给出确认,并为该TCP连接分配缓存和变量。确认报文段的ACK位置1,这时TCP客户进程进入ESTABLISHED(已建立连接)状态。

TCP的释放

四次挥手

第一步:客户端发送断开连接的请求报文来关闭客户端到服务端的数据传送,将报文的FIN置为1。此后客户端进入FIN_WAIT_1状态。

第二步:服务端接收到FIN报文后,发送一个ACK给客户端,确认序号为收到序号+1。此后服务端进入CLOSED_WAIT状态。

第三步:服务端发送一个FIN,来关闭服务端到客户端的数据传送,服务端进入LAST_ACK状态。

第四步:客户端收到FIN后进入TIME_WAIT状态,接着发送一个ACK给服务端,序列号为收到序号+1。在2*MSL(最长报文段寿命)时间后,客户端由TIME_WAIT进入CLOSED状态,服务端收到该ACK后进入CLOSED状态,四次挥手完成。

5.3.4 TCP可靠传输

TCP使用校验、序号、确认和重传等机制来达到可靠传输的目的。

  • TCP的滑动窗口是以字节为单位的。发送窗口里的序号表示允许发送的序号,显然窗口越大,发送方就可以在收到对方确认之前连续发送更多的数据,提高传输效率。发送窗口的大小不能超过对方的接收窗口大小。

  • 发送窗口的后沿部分表示已发送并且收到确认的序号,前沿部分表示不允许发送的序号。发送窗口后沿的变化情况有两种,不动(没有收到新的确认)和前移(收到了新的确认)。发送窗口的前沿通常不断向前移动,但也可能不动或向后收缩。

有两种事件会导致TCP对报文进行重传:超时和冗余ACK

5.3.5 TCP流量控制

  • 流量控制:发送方的发送速率不要太快,要让接收方来得及接收。

  • 发送方的发送窗口不能超过接收方给出的接收窗口的数值。TCP窗口的单位是字节,不是报文段。

  • B向A发送的接收窗口大小报文可能丢失,A一直等待B发送的非零窗口通知,B也在一直等待A发送的数据,如果没有其他措施,可能会形成死锁。 为了解决这个问题,TCP为每一个连接设有一个持续计时器,只要TCP连接的一方收到对方的零窗口通知,就启动持续计时器,若持续计时器的时间到了,就发送一个零窗口探测报文段(仅携带1字节数据),而对方就在确认这个探测报文段时给出了现在的窗口值。如果窗口仍然是0,那么收到这个报文段的一方就重新设置持续计时器。如果窗口不是0,那么死锁的僵局就打破了。

  • 应用进程把数据发送到TCP的发送缓存后,剩下的发送任务就交给TCP来控制了。可以用不同的机制来控制TCP报文段的发送时机,例如第一种机制是TCP维持一个变量,它等于最大报文段长度MSS,只要缓存中数据到达此长度就组成一个TCP报文段发送出去。第二种机制是由发送方的应用进程指明要求发送报文段,即TCP支持的推送操作。第三种机制是发送方的一个计时器时限到了,这就把当前已有的缓存数据装入报文段(长度不超过MSS)发送出去。

5.3.6 TCP拥塞控制

    某段时间内,若对网络中某一资源的需求超过了该资源所能提供的可用部分,网络的性能就要变坏。这种情况就叫做拥塞拥塞控制就是防止过多的数据注入网络,保证网络中的路由器或链路不致过载。

    理想情况下,随着输入负载(单位时间内输入给网络的分组数目)或网络负载的增大,吞吐量应等于提供的负载,当吞吐量饱和时,理想拥塞控制的情况下,吞吐量仍然可以维持最大值。但实际上随着负载增大,网络吞吐量的增长速率逐渐减小,当网络的吞吐量明显小于理想吞吐量时,网络就进入了轻度拥塞的状态。当提供负载到达某一数值时,网络的吞吐量反而随着负载的增大而下降,这时网络就进入了拥塞状态。当负载继续增大时,网络的吞吐量就下降到0,网络无法工作,这就是所谓的死锁。

    拥塞控制是一个动态的问题,从大的方面可以将拥塞控制分为开环控制和闭环控制两种方法。开环控制就是在设计网络时事先将有关发生拥塞的因素考虑周到,力求网络工作时不产生拥塞,但系统一旦运行就不在途中进行改正了。

闭环控制是基于反馈环路的概念,主要措施: (1)监测网络系统以便检测到拥塞在何时、何处发生 (2)把拥塞发生的信息传送到可采取行动的地方 (3)调制网络系统的运行以解决出现的问题

TCP拥塞控制的算法有四种:(1)慢开始(2)拥塞避免(3)快重传(4)快恢复。

#计算机网络#
全部评论

相关推荐

10-13 17:47
门头沟学院 Java
wulala.god:图一那个善我面过,老板网上找的题库面的
点赞 评论 收藏
分享
4 10 评论
分享
牛客网
牛客企业服务