传输层是整个协议层的核心所在。它的任务是在源机器和目标机器之间提供可靠的、性价比合理的数据传输功能,并且与当前使用的物理层网络完全独立。在现实世界中,传输层承担了将子网的技术、设计和各种缺陷与上层隔离的关键作用。通过一组原语就可以访问此服务(允许建立、使用和释放连接)。套接字提供了一个通用的传输层接口。
传输层向应用层提供的服务类型:面向连接的传输服务和面向无连接的传输服务,类似于网络层的两种类型服务。
传输层与网络层的几个区别:
1.传输层的代码完全运行在用户的机器上,而网络层主要是运行在承运商控制的路由器上。
2.网络层提供的服务按照实际的网络所提供的服务建立模型,由于实际网络可能会丢失分组,所以网络层服务一般来说是不可靠的;而传输服务既有可靠的(面向连接的)也有不可靠的。因为传输层的目标就是在不可靠的网络上提供可靠的服务。
3.数据交换单元:数据链路层为帧,网络层为分组,传输层为TPDU(传输协议数据单元)。
1.传输层和数据链路层类似,需要考虑错误控制、顺序管理和流控制等问题。但在数据链路层上,两个路由器之间通过一条物理通道进行通信,而在传输层上,此物理通道被整个子网所替代,因此要考虑的地方有很大的差别。
2.关于释放连接的协议:非对称释放(一方挂机连接就中断)和对称释放(单独释放每一个单向的连接)。
两军队问题说明:如果任何一方一定要在确定另一方已经做好了断开连接的准备之后才准备断开连接的话,那么,断开连接的操作将永远也不会发生。避免的方式是使用三步握手法,虽然这个协议并非完全没有错误,但通常情况下已经足够了。
Internet传输协议----UDP/TCP:
UDP:User Datagram Protocol,用户数据报协议,它为应用程序提供了一种方法来发送经过封装的IP数据报,而不必建立连接就可以发送,属于面向无连接传输协议。UDP不考虑流控制、错误控制,在收到一个坏的数据段之后也不重传,所有这些工作均留给用户进程。UDP尤其适用的一个领域是客户-服务器情形。通常,客户给服务器发送一个短的请求,并且期望一个短的应答回来。如果这里的请求或应答丢失的话,客户就会超时,于是只要重试即可。DNS(域名系统)就是UDP的一个应用。
由于UDP在实时多媒体领域的广泛应用,导致了RTP(Real-time Transport Protocol,实时传输协议)的制定。RTP的基本功能是将几个实时数据复用到一个UDP分组流中。为保证多个流之间的同步,可采用时间戳机制。
TCP:Transmission Control Protocol,传输控制协议,在不可靠的网络中提供了一个可靠的端到端字节流传输的协议,其设计目标就是能够动态的适应互联网络的拓扑、带宽等特性,而且当面对多种失败的时候仍然足够健壮。
IP层并不保证数据报一定被正确的递交到目标端,因此TCP需要判断超时的情况,并且根据需要重传数据报。即使被正确递交的数据报,也可能存在错序的问题,这个也是TCP的责任,他必须把接收到的数据报按照正确的顺序重新装配成用户的信息。即,TCP必须提供可靠性,这也正是大多数用户所期望而IP又没有提供的功能。TCP采用三步握手法建立连接。
要想获得TCP服务,发送方和接收方必须创建套接字。TCP套接字(Socket)原语:SOCKET创建套接字->BIND为套接字分配地址->LISTEN分配一定的空间以便对进来的连接请求进行排队->ACCEPT阻塞调用方,等待连接。/CONNECT主动发起连接->SEND/RECV/CLOSE。