TCP/IP传输层协议
数据流,传输层是用什么方法区分不同应用程序的数据流呢?
在数据流被分段(分组)以后,传输层依靠什么来重新组装这些数据流呢?
如果某个数据段在传输过冲中丢失了或重复了,可靠的传输协议依据什么去要求
重传这些数据或丢弃多余的数据呢?
带着这些问题,下面来谈论传输层所提供的服务。
传输层的主要功能是分割并重新组装上层提供的数据流,为数据流提供端对端的
传输服务。
在TCP/IP协议中,有两个传输层协议:传输控制协议(TCP)和用户数据包协议(UDP)
TCP是一个可靠的面向连接的协议,UDP是不可靠的或非连接的协议。这种面向连接和
非连接的通信方式的区别,就像打电话和寄明信片一样。打电话的双方在正式通话之
前都会说“喂”,确定对方在线以后才开始通话,会话结束时都要说“再见”,然后
才挂下电话。而寄明信片却没有这种机制,寄出去了但不管对方是否收到。
端口号
每个应用程序都会产生自己的数据流,这些数据流可以把目标主机上相应的服务程序
看作自己的目的地,对于传输层来说,它只需要知道目标主机上的哪个服务程序来响
应这应用程序,而不需要知道这个服务程序具体是干什么的。因此,传输层使用一个
抽象的端口号来标识这些应用程序和服务程序。
端口号的功能及应用特点
端口号用来跟踪网络间同时发生的不同会话。TCP和UDP可以同时接收多个应用程序送
来的数据流,用端口号来区分他们,然后送给适当的应用程序处理。这时多路分解技
术的体现,它可以确保正确的用户程序收到正确的数据。因此,每个应用程序发送数
据前都会与操作系统进行协商,获得响应的源端口号和目标端口号。
在主机发送应用程序的数据之前,都必须确认端口号,如何分配这些端口号呢?一般
有两种情况,使用中央管理机构统一分配的端口号和使用动态绑定。
使用中央管理机构统一分贝的端口号。应用程序的开发者们都默认在RFC1700中定义的
特殊端口号,在进行软件设计时,都要遵从RFC1700中定义的规则,不能随便使用已经
定义的端口号,那么系统将在一个特定的取值范围随机地为应用程序分配一个端口号。
例如,任何Telnet应用中的会话都应用标准端口号23。
使用动态绑定。如果一个应用程序的会话没有涉及到特殊的端口号,那么系统将在一个
特定的取值方位内随机地为应用程序分配一个端口号。在应用程序进行通信以前,如果
不知道对方的端口号,就必须发送请求以获得对方的端口号。
RFC(Request for Comments,征求意见资料)是一个资料系列,始创于1969年,其中描述
了关于Internet的协议实验,并不是所有RFC资料都是描述Internet标准的,但所有
Internet标准都是作为RFC资料编写的。RFC资料中提交的协议都是Internet研究人员和
开发人员根据自己的情况建立、修改和扩充的,因此不同于CCITT(国际电报电话咨询委
员会)和ANSI(美国国家标准协会)等组织所倡导的并经过正式评审和标准化处理的协议
Internet RFC有3种状态:Proposed(提案)、Draft(草案)和Full(标准)。
TCP/IP的设计者们采用一种混合方式实现端口号地址的管理,终端系统利用源系统端口
号来选择合适的应用程序,但是源系统的源端口号由源系统动态分配。
常用的端口号介绍
目前的端口号的分配情况大致如下:
小于255的端口号用于公共应用
255~1023是特定供应商应用程序的注册端口号
高于1023的端口号未作规定。
常用应用层协议或应用程序 | 端口号 |
UPP | TCP | |
FTP | - | 21 |
Telnet | - | 23 |
SMTP | - | 25 |
DNS | 53 | - |
TFTP | 69 | - |
SNMP | 161 | - |
HTTP | - | 80 |
DHCP | - | 67 |
RPC(远程调用) | - | 135 |
下面举例说明端口号的使用过程。
主机A要Telnet到主机B。主机A首先向TCP请求一个可用端口,假如TCP分配一个为1088
的端口,主机A将目标端口号置为23。A和B通信以后,B看到A过来的端口号为23,就知
道这时Telnet应用,它就会为此创建一个Telnet会话。
假如同一系统中有多个Telnet用户,会发生什么情况呢?当主机A上第二个用户要Telne到
主机B时(其实是在主机A与主机B之间建立第二个Telnet进程),主机A的第二个用户向TCP
TCP会选出另外一个可使用的端口号,假如为10099,给第二个用户。主机B上便会创建
第二个Telnet会话。
所以在统一IP地址上具有不同端口号的两个连接是不同的。IP地址和端口号被用来唯一地
确定数据连接的途径。
UDP
UDP是TCP/IP的另一个非常重要的协议。
UDP数据域的头部共占用了8个字节
UDP数据域的头格式描述
名称 | 描述 |
源端口 | 调用的端口号 |
目的端口 | 被调用的端口号 |
报文长度 | 记录UDP数据包中的8位组数目包括UDP数据的长度 最小值为8(数据部分为 |
TCPIP传输层协 相关文章:
- Windows CE 进程、线程和内存管理(11-09)
- RedHatLinux新手入门教程(5)(11-12)
- uClinux介绍(11-09)
- openwebmailV1.60安装教学(11-12)
- Linux嵌入式系统开发平台选型探讨(11-09)
- Windows CE 进程、线程和内存管理(二)(11-09)