一、传输层

1、简介

传输层是国际标准化组织提出的开放系统互连(OSI)参考模型中的第四层。该层协议为网络端点主机上的进程之间提供了可靠、有效的报文传送服务。其功能紧密地依赖于网络层的虚拟电路或数据报服务。传输层定义了主机应用程序之间端到端的连通性。传输层只存在于端开放系统中,是介于低3层通信子网系统和高3层之间的一层,但是很重要的一层,因为它是源端到目的端对数据传送进行控制从低到高的最后一层。


传输层的服务一般要经历传输连接建立阶段,数据传送阶段,传输连接释放阶段3个阶段才算完成一个完整的服务过程。而在数据传送阶段又分为一般数据传送和加速数据传送两种形式。传输层中最为常见的两个协议分别是传输控制协议TCP(Transmission Control Protocol)和用户数据报协议UDP(User Datagram Protocol) 。


传输层提供逻辑连接的建立、传输层寻址、数据传输、传输连接释放、流量控制、拥塞控制、多路复用和解复用、崩溃恢复等服务。


2、基本功能

分割与重组数据

按端口号寻址

连接管理

差错控制和流量控制,纠错的功能

传输层主要是向上层提供可靠的通信服务,避免报文丢失、出错等。


二、传输层协议

主要分为两大类:


面向连接网络协议(TCP):

面向连接网络协议是指通信双方之间在通信之前先建立连接。

TCP协议提供可靠的交付服务:传送的数据无差错。不丢失,不重复,且顺序与与源数据一致。


无连接网络协议:

无连接网络协议是指通信双方不需要事先建立一条通信线路,而是把每个带有目的地址的数据包送到网络线上,由系统自主选定线路进行传输。

UDP 是User Datagram Protocol的简称, 中文名是用户数据报协议,是OSI参考模型中一种无连接的传输层协议,提供面向事务的简单不可靠信息传送服务。


三、TCP协议

传输控制协议(TCP,Transmission Control Protocol)是为了在不可靠的互联网络上提供可靠的端到端字节流而专门设计的一个传输协议。


互联网络与单个网络有很大的不同,因为互联网络的不同部分可能有截然不同的拓扑结构、带宽、延迟、数据包大小和其他参数。TCP的设计目标是能够动态地适应互联网络的这些特性,而且具备面对各种故障时的健壮性。


1、TCP报文段

传输层协议_理论


16位源端口号:16位的源端口中包含初始化通信的端口。源端口和源IP地址的作用是标识报文的返回地址。

16位目的端口号:16位的目的端口域定义传输的目的。这个端口指明报文接收计算机上的应用程序地址接口。

32位序号:32位的序列号由接收端计算机使用,把重新分段的报文重组成最初形式。当SYN出现,序列码实际上是初始序列码(Initial Sequence Number,ISN),而第一个数据字节是ISN+1。这个序列号(序列码)可用来补偿传输中的不一致。

32位确认序号:32位的序列号由接收端计算机使用,重组分段的报文成最初形式。如果设置了ACK控制位,这个值表示一个准备接收的包的序列码。

4位首部长度:4位包括TCP头大小,指示何处数据开始。一般为20字节,可扩张为60字节。

保留(6位):6位值域,这些位必须是0。为了将来定义新的用途而保留。

控制位:

各个控制位 解释

URG紧急位 紧急指针有效位

ACK确认位 只有当ACK=1,确序列号才有效;当ACK=0时,确认序列无效

PSH急迫位 标志位为1时,要求接收方尽快将数据送至应用层

RST重置位 当RST值为1时,通知重新建立TCP连接

SYN同部/连接位 同步序列号,TCP需要建立连接时将这个值设为1

FIN断开位 当TCP完成数据传输时需要断开连接时,提出断开连接的一方将FIN设为1

16位窗口大小:用来表示想收到的每个TCP数据段的大小。值得大小是可变的,网络通畅时窗口值变大以加快传输速度,网络不稳定时,减小窗口值,保证可靠传输。

16位校验和:16位TCP头。源机器基于数据内容计算一个数值,收信息机要与源机器数值 结果完全一样,从而证明数据的有效性。检验和覆盖了整个的TCP报文段:这是一个强制性的字段,一定是由发送端计算和存储,并由接收端进行验证的。

16位紧急指针:指向后面是优先数据的字节,在URG标志设置了时才有效。如果URG标志没有被设置,紧急域作为填充。加快处理标示为紧急的数据段。

选项:长度不定,但长度必须为1个字节。如果没有选项就表示这个1字节的域等于0。

数据:该TCP协议包负载的数据。

2、三次握手


TCP三次握手的过程如下:

客户端发送SYN(Seq=x,SYN=1)报文给服务器端,进入SYN_SEND状态。

服务器端收到SYN报文,回应一个SYN (Seq=y)ACK(ACK=x+1)SYN=1报文,进入SYN_RECV状态。

客户端收到服务器端的SYN报文,回应一个ACK(ACK=y+1)报文,进入Established状态。


三次握手完成,TCP客户端和服务器端成功地建立连接,可以开始传输数据了。

传输层协议_理论_02

3、四次挥手


TCP四次挥手的过程如下:

1、主动方首先调用close,称该端执行“主动关闭”,发送FIN/ACK(FIN=1,ACK=1,Seq=x)报文。

2、被动方接收到这个FIN的对端执行 “被动关闭”,确认后发送ACK(ACK=x+1)报文给主动方。

3、一段时间后,接收到这个文件结束符的被动方将调用close关闭它的套接字,发送FIN/ACK(FIN=1,ACK=1,Seq=y)给主动方。

4、接收这个最终FIN的主动方确认这个FIN。

传输层协议_理论_03

4、常用端口及功能

端口号 协议 说明

21 FTP FTP服务器所开放的控制端口

23 TELNET 远程登录,可远程控制管理目标计算机

25 SMTP SMTP服务器开放的端口,用于发送邮件

80 HTTP 超文本传输协议,Web服务

110 POP3 用于邮件的接收

四、UDP协议

UDP 是User Datagram Protocol的简称, 中文名是用户数据报协议,是OSI参考模型中一种无连接的传输层协议,提供面向事务的简单不可靠信息传送服务。


UDP是一个无连接协议,传输数据之前源端和终端不建立连接,当它想传送时就简单地去抓取来自应用程序的数据,并尽可能快地把它扔到网络上。在发送端,UDP传送数据的速度仅仅是受应用程序生成数据的速度、计算机的能力和传输带宽的限制;在接收端,UDP把每个消息段放在队列中,应用程序每次从队列中读一个消息段。


常用端口

端口号 协议 说明

69 TFTP 简单文件传输协议

111 RPC 远程过程调用

123 NTP 网络时间协议


五、协议对比

TCP 是面向连接的传输控制协议,而UDP 提供了无连接的数据报服务。

TCP 具有高可靠性,确保传输数据的正确性,不出现丢失或乱序;UDP 在传输数据前不建立连接,不对数据报进行检查与修改,无须等待对方的应答,所以会出现分组丢失、重复、乱序,应用程序需要负责传输可靠性方面的所有工作。

UDP 具有较好的实时性,工作效率较 TCP 协议高。

UDP 段结构比 TCP 的段结构简单,因此网络开销小。


TCP

UDP 

是否连接

面向连接

无连接

传输可靠性

高可靠性

不可靠

连接对象

点对点

支持一对一、一对多、多对一和多对多

速度


总结

TCP协议 和UDP协议最大的区别就是:TCP是面向连接的,UDP是无连接的。TCP协议和UDP协议各有所长、各有所短,适用于不同要求的通信环境。