传输层是指ISO/OSI模型中的第四层,在计算机网络中起着非常重要的作用。它负责数据在网络中的传输,管理数据传输的可靠性和流量控制,保证数据在网络中不会丢失或重复。
传输层提供的主要服务有两种,分别是面向连接服务和无连接服务。面向连接服务提供可靠的数据传输,需要在数据传输前建立连接和关闭连接,使用TCP协议实现;无连接服务则不需要建立连接,使用UDP协议实现,不保证数据传输的可靠性,但传输速度更快。
主要功能包括:
分段和重组:为了满足网络传输的需要,传输层将应用层的数据划分为更小的数据段,并在接收端重组为完整的数据。这样能够避免大数据块在网络传输中产生的传输延迟,并且能够利用网络带宽更好地进行数据传输。
可靠传输:传输层使用TCP协议提供可靠的数据传输服务。TCP协议通过各种机制,如确认应答机制和重传机制,确保数据能够被无误无遗地传输到接收端,并且按照正确的顺序排列。
流量控制:为了避免网络拥塞和资源浪费,传输层使用流量控制机制,调整数据传输的速度,保证网络传输的平稳稳定,避免数据包的丢失。
连接管理:对于面向连接的传输协议,传输层需要建立连接、维护连接和关闭连接。传输层的连接管理机制允许运行在不同网络节点上的应用程序建立虚拟电路,传输数据时将数据交给传输层,由传输层为其进行连接建立和维护。
总的来说,传输层的功能是为了使网络上运行的应用程序能够进行可靠、高效、安全的数据传输,保障网络数据传输的质量。
在计算机网络中,数据从源主机传输到目的主机时需要经过多个网络层,其中传输层会为传输的数据添加源端口和目的端口,以便在目的主机上将数据正确地分发给相应的应用程序。传输层寻址和端口号的概念如下:
端口的作用:一个计算机可以同时运行多个应用程序,每个应用程序在传输数据时需要一个唯一的标识。传输层的端口号就是为每个应用程序分配的唯一标识,从而保证不同的应用程序之间可以进行并行数据传输,同时在数据到达目的主机后,可以根据端口号将数据正确地传输给相应的应用程序。
端口号:端口号是一个16位的整数,它的范围是065535。其中01023是系统保留端口号,一般都是为一些常用的网络服务分配的端口,如HTTP使用80端口、FTP使用21端口等;102449151是用户注册端口,用户可以根据自己的需要为不同的应用程序分配不同的端口号;4915265535是临时端口,主要用于TCP连接时临时暂时分配的端口号。
套接字:套接字是传输层和应用层之间的接口,它定义了应用程序和传输层之间通信的规则和参数。应用程序通过套接字来发送和接收数据,而套接字则根据端口号来确定数据传输的目的地。在Linux系统中,套接字通常由IP地址、端口号和协议三部分组成。
总之,传输层的寻址和端口号是为应用程序提供可靠、高效的数据传输服务的重要基础,同时也是网络通信应用程序开发的重要技术要点。
在传输层中,传输数据的方式可以分为两种,即无连接服务和面向连接服务。它们的区别主要在于建立连接的方式和数据传输的可靠性。
无连接服务
无连接服务又被称为无状态服务,传输层使用UDP协议来提供此类服务。在UDP协议中,不会建立连接,数据包通过互联网传输时,也不保证数据的可靠性,不对数据传输做出任何管理。发送端发送UDP数据报之后,对其不会进行确认,也不会重发数据报,因此不保证数据包到达的可靠性。UDP协议的优点是在实现简单、网络负载小,适用于实时数据流传输。
面向连接服务
面向连接服务又被称为有状态服务,传输层使用TCP协议来提供此类服务。在TCP协议中,为了保证数据的可靠性,需要先建立一条虚拟电路来进行数据的传输,并且在数据传输过程中,采用数据确认和重传机制来保证数据的准确性。TCP协议还会对数据传输进行流量控制和拥塞控制,以确保数据在网络中的传输效率和结果。TCP协议的缺点是传输效率较低,因为建立连接和数据确认都需要花费时间,不利于实时数据流传输。
总之,无连接服务和面向连接服务各有优缺点,在实际应用中根据具体的数据传输需求来选择合适的服务方式。
UDP(User Datagram Protocol,用户数据报协议)是一种无连接协议,它不会像TCP协议那样在传输数据之前建立连接,也不会对传输的数据进行可靠性和流量控制。UDP协议所传输的数据包叫做数据报,它只提供数据封装和传输的基本功能。
UDP协议广泛应用于数据量小、实时性要求高的应用场景,比如音视频传输、在线游戏等。UDP协议的优点是传输效率高,网络性能好,能够快速地传输数据,缺点是不提供数据传输的可靠性,并且不保证数据传输的顺序。
UDP协议传输的数据包称为数据报。它有两个部分:头和数据。头部主要包括源端口、目的端口、长度和校验和等信息,用于标识数据报的目的地和来源,以及确保数据传输的完整性和正确性。数据部分则是实际的传输数据。
0 7 8 15 16 23 24 31
+--------+--------+--------+--------+
| 源端口号 | 目的端口号 |
+--------+--------+--------+--------+
| UDP长度 |
+--------+--------+--------+--------+
| UDP校验和 |
+--------+--------+--------+--------+
| |
数据(可选,长度不固定)
| |
+--------+--------+--------+--------+
其中各字段的含义如下:
源端口号:指发送端端口号,占用2个字节;
目的端口号:指接收端端口号,占用2个字节;
UDP长度:UDP数据报(包括UDP首部和数据部分)的长度,占用2个字节;
UDP校验和:由发送端计算并填写的校验和,占用2个字节;
数据:UDP数据报中传输的数据,长度不固定。
UDP协议的首部长度固定是8个字节。除了数据部分外,其他各字段都固定内部格式。UDP协议的首部结构非常简单,只提供了最基本的传输信息。由于UDP协议不需提供可靠性、流量控制等高级的传输机制,因此UDP协议的首部长度相比TCP协议要小得多。
UDP协议使用一种简单的校验和来检测数据报在传输过程中的完整性和正确性。校验和是在发送数据报之前计算的,根据数据报的头部和数据部分计算出一个校验和值,接收端在接收数据报之后再重新计算一次校验和值,进行校验
UDP协议是一种简单、高效、实时的传输协议,在一些特定的应用场景中有着较为重要的应用。但是在传输保证可靠性方面,需要借助其他机制来进行控制和保障。
TCP是一种基于连接的协议,它在传输数据之前会先建立连接,然后通过确认应答、重传机制等方式保证数据传输的可靠性。TCP协议传输的数据包称为TCP段,它具有可靠性和有序性。
TCP协议传输的数据被包装为一个个的TCP段。每个TCP段包括头部和数据两部分,头部是20个字节或40个字节,包含了源端口、目的端口、序号、确认号、窗口大小等信息,用于确认应答和拥塞控制。
TCP协议通过连接管理机制建立连接、维护连接和关闭连接。TCP连接是一种可靠的虚拟电路,可以在网络中可靠地传输数据,同时使用三次握手等机制确保数据传输的完整性和正确性。
TCP协议通过确认应答和重传机制保证数据的可靠性。在数据发送时,接收端会返回确认应答,告诉发送端已经接收到数据,如果发送端没有收到确认应答,就会认为数据丢失,启动重传机制。
TCP流量控制与拥塞控制:TCP协议可以对数据流进行流量控制和拥塞控制,用于限制发送方发送数据的速率,保证网络传输的平稳稳定。
TCP协议与UDP协议相比,TCP协议提供了可靠性更好、有序性更好、错误恢复性更好的数据传输服务,但是TCP协议的传输效率要低于UDP协议,并且TCP协议需要频繁地进行确认应答、重传、拥塞控制等操作,导致传输延迟较高,不适用于对传输时延和数据包数目要求很高的应用场景。