第五章 传输层

传输层属于面向通信部分的最高层,同时也是用户功能中的最低层。

1.传输层的功能

1)提供应用进程之间的逻辑通信(即端到端的通信)。
注意: 络层提供的是主机之间的逻辑通信。
2)复用和分用。
复用是指发送方不同的应用进程都可使用同一个传输层协议传送数据;
分用是指接收方的传输层在剥去报文的首部后能够把这些数据正确交付到目的应用进程。
注意: 网络层的复用是指发送方不同协议的数据都可以封装成IP数据报发送出去,分用是指接收方的网络层在剥去首部后把数据交付给相应的协议。

1,端口的作用
端口能够让应用层的各种应用进程将其数据通过端口向下交付给传输层,以及让传输层知道应当将其报文段中的数据向上通过端口交付给应用层相应的进程。
数据链路层的SAP是MAC地址,网络层的SAP是IP地址,传输层的SAP是端口。
2。端口号
应用进程通过端口号进行标识,端口号长度为16bit,能够表示65536 ( 2 16 2^{16} 216)个不同的端口号。
1)服务端使用的端口号。一类是熟知端口号,数值为0 ~ 1023,IANA (互联网地址指派机构)把这些端口号指派给了TCP/IP最重要的一些应用程序,让所有的用户都知道。另一类称为登记端口号,数值为1024~49151。它是供没有熟知端口号的应用程序使用的,使用这类端口号必须在IANA登记,以防止重复。

2)客户端使用的端口号,数值为49152~65535,由于这类端口号仅在客户进程运行时才动态地选择,因此又称短暂端口号(也称临时端口)。

2.UDP协议

UDP只在IP数据报服务之上增加了很少功能,即复用分用和差错检测功能。

UDP的首部格式
UDP数据报包含两部分: UDP首部和用户数据,整个UDP数据报作为IP数据报的数据部分封装在IP数据报中,如图5.2所示。UDP首部有8B, 由4个字段组成,每个字段的长度都是2B,如图5.2所示。各字段意义如下:
1)源端口号:2B,在需要对方回信时选用,不需要时可用全0。
2)目的端口号:2B,这在终点交付报文时必须使用到。
3)长度:2B,UDP数据报的长度(包括首部和数据),其最小值是8 (仅有首部)。
4)校验和:2B,检测UDP数据报在传输中是否有错。有错就丢弃。该字段是可选的,当源主机不想计算校验和时,则直接令该字段为全0 。

3.TCP协议

TCP实现可靠传输
保证接收方进程从缓存区读出的字节流与发送方发出的字节流是完全一样的。

3.1.TCP报文结构分析

1)源端口和目的端口字段
各占2B,端口是运输层与应用层的服务接口,运输层的复用和分用功能都要通过端口实现。
2)序号字段
占4B,TCP是面向字节流的(即TCP传送时是逐个字节传送的),所以TCP。连接传送的数据流中的每个字节都编上一个序号。序号字段的值指的是本报文段所发送的数据的第一个字节的序号。
3)确认号字段
占4B,是期望收到对方的下一个报文段的数据的第一个字节的序号。若确认号为N,则表明到序号N-1为止的所有数据都已正确收到。
4)数据偏移(即首部长度):
占4bit,它指出TCP报文段的数据起始位置距离TCP报文段的起始位置有多远。“数据偏移”的单位是32bit(以4B为计算单位)。因此当此字段的值为15时,达到TCP首部的最大长度60B.
5)保留字段
占6bit,保留为今后使用,但目前应置为0,该字段可忽略不计。
6)紧急位URG
URG=1时,表明紧急指针字段有效。它告诉系统报文段中有紧急数据,应尽快传送(相当于高优先级的数据),但URG需要和紧急指针配套使用,即数据从第一个字节到紧急指针所指字节就是紧急数据。
7)确认位ACK
只有当ACK=1时确认号字段才有效。当ACK=0时,确认号无效。TCP规定,在连接建立后所有传送的报文段都必须把ACK置1。
8)推送位PSH(Push):
接收TCP收到PSH=1的报文段,就尽快地交付给接收应用进程,而不再等到整个缓存都填满后再向上交付。
9)复位位RST(Reset):
RST=1时,表明TCP连接中出现严重差错(如主机崩溃或其他原因),必须释放连接,然后再重新建立运输连接。
10)同步位SYN
同步SYN=1表示这是一个连接请求或连接接收报文。当SYN=1,ACK=0时,表明这是一个连接请求报文,对方若同意建立连接,则在响应报文中使用SYN=1,ACK=1,即SYN=1表示这是一个连接请求或连接接收报文。
11)终止位FIN(Finish):
用来释放一个连接。FIN=1表明此报文段的发送方的数据已发送完毕,并要求释放传输连接。
12)窗口字段
占2B。它指出现在允许对方发送的数据量,接收方的数据缓存空间是有限的,因此用窗口值作为接收方让发送方设置其发送窗口的依据,单位为字节。
13)校验和
占2B。校验和字段检验的范围包括首部和数据两部分。在计算校验和时和UDP一样,要在TCP报文段的前面加上12B的伪首部(只需将UDP伪首部的第4个字段,即协议字段的17改成6,其他的和UDP一样)。
14)紧急指针字段
占16bit,指出在本报文段中紧急数据共有多少字节(紧急数据放在本报文段数据的最前面)。
15)选项字段
长度可变。TCP最初只规定了一种选项,即最大报文段长度(Maximum Segment Size,MSS),MSS是TCP报文段中的数据字段的最大长度。
16)填充字段
这是为了使整个首部长度是4B的整数倍。

3.2.TCP连接管理

TCP是面向连接的协议,每个TCP连接都有三个阶段:连接建立、数据传送和连接释放。
在TCP连接建立的过程中,要解决以下三个问题:
1)要使每一方都能够确知对方的存在。
2)要允许双方协商一些参数(如最大窗口值、是否使用窗口扩大选项、时间戳选项及服务质量等)。
3)能够对运输实体资源(如缓存大小、连接表中的项目等)进行分配。
TCP连接的建立采用客户机/服务器方式。每条TCP连接唯一地被通信两端的两个端点(即两个套接字)确定。

3.2.1.TCP连接的建立(三次握手)

第一步:客户机的TCP首先向服务器的TCP发送一个连接请求报文段。这个特殊的报文段中不含应用层数据,其首部中的 S Y N = 1 , s e q = x SYN=1, seq=x SYN=1seq=x。(客户机连接请求报文不携带数据,但要随机选择一个起始序号 x x x )。

第二步:服务器的TCP收到连接请求报文段后,如同意建立连接,就向客户机发回确认,并为该TCP连接分配TCP缓存和变量。在确认报文段中 S Y N = 1 , s e q = y , A C K = 1 , a c k = x + 1 SYN=1,seq=y,ACK=1,ack=x+1 SYN=1seq=yACK=1ack=x+1。(服务器确认报文不携带数据,但也要随机产生起始序号 y y y)。确认报文段同样不包含应用层数据。

第三步:当客户机收到确认报文段后,还要向服务器给出确认,并且也要给该连接分配缓存和变量。这个报文段的 A C K = 1 , a c k = y + 1 ACK=1,ack=y+1 ACK=1ack=y+1。该报文段可以携带数据,①若不携带数据则不消耗序号;②若携带数据则序号字段 s e q = x + 1 seq=x+1 seq=x+1

成功进行以上三步后就建立了TCP连接,接下来就可以传送应用层数据。TCP提供的是全双工通信,因此通信双方的应用进程在任何时候都能发送数据。

另外值得注意的是,服务器端的资源是在完成第二次握手时分配的,而客户端的资源是在完成第三次握手时分配的,这就使得服务器易于受到SYN洪泛攻击。

TCP连接建立总结:
① C -> S:SYN=1,seq=x。
② S -> C:ACK=1,ack=x+1,SYN=1, seq=y。
③ C -> S:ACK=1,ack=y+1,seq=x+1。

3.2.2.TCP连接的释放(四次挥手)

第一步:客户机打算关闭连接时,向其TCP发送一个连接释放报文段,并停止发送数据,主动关闭TCP连接,该报文段的FIN标志位被置1,seq=u,它等于前面已传送过的数据的最后一个字节的序号加1(FIN报文段即使不携带数据,也要消耗一个序号),TCP是全双工的,即可以想象为一条TCP连接上有两条数据通路。发送FIN报文的一端不能再发送数据,即关闭了其中一条数据通路,但对方还可以发送数据。

第二步:服务器收到连接释放报文段后即发出确认,确认号是 ack=u+1,而这个报文段自己的序号是v,等于它前面已传送过的数据的最后一个字节的序号加1。此时从客户机到服务器这个方向的连接就释放了, TCP连接处于半关闭状态。但服务器若发送数据,客户机仍要接收,即从服务器到客户机这个方向的连接并未关闭。

第三步:若服务器已经没有要向客户机发送的数据,就通知TCP释放连接,此时其发出FIN=1的连接释放报文段。

第四步:客户机收到连接释放报文段后,必须发出确认。在确认报文段中, ACK字段被置为1,确认号 ack=w+1,序号 seq=u+1。此时TCP连接还未释放,必须经过时间等待计时器设置的时间2MSL后, A才进入连接关闭状态。

TCP连接释放总结:
① FIN=1,seq=u。
② ACK=1,seq=v,ack=u+1。
③ FIN=1,ACK=1,seq=w,ack=u+1。
④ ACK=1,seq=u+1,ack=w+1。

4.TCP可靠传输保证

TCP使用了校验、序号、确认和重传等机制来达到这一目的。

4.1 序号
TCP首部的序号字段用来保证数据能有序提交给应用层,TCP把数据视为一个无结构但有序的字节流,序号建立在传送的字节流之上,而不建立在报文段之上。TCP连接传送的数据流中的每个字节都编上一个序号。序号字段的值是指本报文段所发送的数据的第一个字节的序号。

4.2 确认
TCP首部的确认号是期望收到对方的下一个报文段的数据的第一个字节的序号。发送方缓存区会存储已发送但未收到确认的报文段,以便在需要时重传。TCP默认使用累计确认,即TCP只确认数据流中至第一个丢失字节为止的字节。

4.3 重传
有两种事件会导致TCP对报文段进行重传:超时冗余ACK
(1) 超时
TCP每发送一个报文段,就对这个报文段设置一次计时器。计时器设置的重传时间到期但还未收到确认时,就要重传这一报文段。

(2) 冗余ACK (冗余确认)
超时触发重传存在的一个问题是超时周期太长。(发送方通常可在超时事件发生之前通过注意所谓的冗余ACK来较好地检测丢包情况。冗余ACK就是再次确认某个报文段的ACK,而发送方先前已经收到过该报文段的确认。)

5.TCР流量控制

6.TCP拥塞控制


后记1.目的和要求:

了解传输层的作用,掌握传输层与网络层的主要区别,重点理解端口的概念、作用、分类;理解UDP协议的优点,了解TCP协议的特点、TCP报文段的首部字段,掌握TCP控制报文段发送的3种基本机制,理解并掌握TCP的流量控制方法、可靠传输机制以及拥塞控制的4种方法,掌握TCP连接的建立和释放过程。

后记2.知识点:

(1)传输层和传输层协议
传输层的基本功能;传输协议数据单元的基本概念;应用进程、传输层接口与套接字;网络环境中分布式进程标识方法;传输层的多路复用与多路分解;TCP、UDP协议与应用层协议的关系
(2)用户数据报协议UDP
UDP协议的主要特点;UDP协议报文格式;UDP校验和的基本概念与计算示例;UDP协议适用的范围
(3)传输控制协议TCP
TCP协议的主要特点;TCP协议报文格式;TCP连接建立与释放;TCP协议滑动窗口与确认、重传机制;TCP协议滑动窗口与流量控制、拥塞控制

后记3.考核知识点:

传输层的作用,传输层与网络层的主要区别;端口的概念、作用、分类;UDP协议的优点;TCP协议的特点、TCP报文段的首部字段;TCP控制报文段发送的3种基本机制;可靠传输机制;TCP的流量控制方法和拥塞控制的4种方法;TCP连接的建立和释放过程。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值