概述
功能:为运行于不同主机上的各个应用程序进程 之间提供逻辑通信(logical communication),隐藏通信子网细节,是完全的端到端 。
传输层协议运行在端系统(end systems)中 发送端: 将应用程序数据(messages )分割为段 (segments)再递交给网络层 接收端: 重组各段 为messages 再提交给应用层 应用、传输及网络层逻辑关系(注意地址问题)
PDU(协议数据单元)的嵌套关系
(TPDU-传输层PDU)
为何需要传输层? 1.传输层提供的服务 面向连接: TCP (可靠) 面向非连接:UDP (不可靠) 网络层的服务? 为何需要一个重复的传输层? 网络层: 是在主机hosts 之间的逻辑通信 传输层:是在主机的进程processes 之间的逻辑通信,即可以让多个网络应用同时在host上运行 它使用并依靠网络层的服务,同时当通信子网出现问题时可以重新建立端到端的服务,即增强了网络层的服务
传输层服务原语
服务原语(service Primitives)可看作为一组事先定义好的,用于通信的例程(规范、程序或函数等) 开发人员通过调用传输层服务原语构建端到端的通信,而隐藏了各种不同的网络层服务原语的区别
传输层上的多路复用和解多路复用
1.多路复用 (multiplexing):指收集不同应用程序进程的数据,将这些数据封装上相应的头部形成段(segments),将这些段递交给网络层的过程。图示 2.解多路复用 (demultiplexing):指把收到的传输层段中的数据提交给相应的应用程序进程的过程
如何解多路复用
主机接收到IP包 每个包都有 source IP address ,destination IP address 每个包 都装载一个 transport-layer segment 每个segment 都有source ,destination port number ; 传输层实体将用port numbers 决定segment该发送给哪个进程(socket)
(头部16位:源端口号+目的端口号) 端口号说明
端口号说明 0~1023 :保留端口号 ,一般给服务器端 ,由超级用户设置(可更改,但需要认可) 1024~49151 :注册端口号 ,为避免冲突,分配给各组织或公司 49152~65535 :私有端口号 ,任意使用 参考(RFC1700): http://www.iana.org/assignments/port-numbers Windows下C:\WINDOWS\system32\drivers\etc\services Linux/Unix下:/etc/services
说明: 同一台主机上可以有多个进程同时访问该服务端口(如迅雷等)
面向非连接协议: UDP
用户数据报协议 1.是最简单的一个 Internet transport protocol 2.它提供所谓的“best effort (尽力而为)” 服务, 没有流量控制和差错控制,UDP的segments有可能: 1)丢失 2)损坏 3)不按顺序提交给应用程序 3.它是面向非连接 的: 在发送和接收方没有所谓的三次握手 每个UDP segment都将被独立处理 ,前后UDP segment互相没有关系
UDP头部格式
(总结:UDP:不可靠、简单、高效的用户数据报协议 )
1.可用于流媒体 (streaming multimedia)应用程序 1)允许丢失、时间敏感 2)如Internet电台、视频点播等。请参阅RTP (实时传输协议)(Real-time Transport Protocol) 2.其他UDP应用(C/S模式) 1)DNS (UDP.cap)、DHCP 等 2)SNMP 3)RPC(Remote Procedure Call) 3.建立在UDP上的可靠传输由应用层(应用程序) 保证
可靠传输原理
建立连接-三次握手
释放连接(四次握手/挥手?)
传输层释放连接 1.方式 非对称释放 :数据可能丢失,TCP不采用 对称释放 :将连接看着两个单向连接,采用询问方式。是否一定能正确释放?
采用三次握手释放连接也不能完全保证正确释放,但一般情况下已经足够了
面向连接协议: TCP-传输控制协议
TCP协议特性 1.面向连接 2.即使在不可靠的网络(Internet)上,都能提供可靠 的、端到端 的字节流 通信 3.能够动态 的适应各种网络(拓扑)、带宽、延迟、分组尺寸等 3.如果出错,应有足够的健壮性 (Robustness) 4.TCP连接是建立在两个Socket(端口)之间 的 5.一个TCP连接有且只能有两个端口,或者,两个端口之间只能有一个TCP连接,但一个端口(Socket)上可以有多个连接 7.TCP连接是面向字节流 的,即,TCP将从上层得到的数据看作为无结构的字节流
如某进程交给TCP实体4个512B的报文,TCP发送实体可以组成如以下任意大小格式的段递交给IP层,由高层进行结构的区分(有助于提高传输效率) 4个512B的segments、2个1024B的segments、1个1448B和1个600B的segments
|