资讯详情

TCP/IP传输层协议

当在Windows XP中同时运行多个网络应用程序时,每个应用程序都会产生自己的 数据流,传输层是用什么方法区分不同应用程序的数据流呢? 在数据流被分段(分组)以后,传输层依靠什么来重新组装这些数据流呢? 如果某个数据段在传输过冲中丢失了或重复了,可靠的传输协议依据什么去要求 重传这些数据或丢弃多余的数据呢? 带着这些问题,下面来谈论传输层所提供的服务。 传输层的主要功能是分割并重新组装上层提供的数据流,为数据流提供端对端的 传输服务。 在TCP/IP协议中,有两个传输层协议:传输控制协议(TCP)和用户数据包协议(U ) TCP是一个可靠的面向连接的协议,UDP是不可靠的或非连接的协议。这种面向连接和 非连接的通信方式的区别,就像打电话和寄明信片一样。打电话的双方在正式通话之 前都会说“喂”,确定对方在线以后才开始通话,会话结束时都要说“再见”,然后 才挂下电话。而寄明信片却没有这种机制,寄出去了但不管对方是否收到。 端口号 每个应用程序都会产生自己的数据流,这些数据流可以把目标主机上相应的服务程序 看作自己的目的地,对于传输层来说,它只需要知道目标主机上的哪个服务程序来响 应这应用程序,而不需要知道这个服务程序具体是干什么的。因此,传输层使用一个 抽象的端口号来标识这些应用程序和服务程序。 端口号的功能及应用特点 端口号用来跟踪网络间同时发生的不同会话。TCP和UDP可以同时接收多个应用程序送 来的数据流,用端口号来区分他们,然后送给适当的应用程序处理。这时多路分解技 术的体现,它可以确保正确的用户程序收到正确的数据。因此,每个应用程序发送数 据前都会与操作系统进行协商,获得响应的源端口号和目标端口号。 在主机发送应用程序的数据之前,都必须确认端口号,如何分配这些端口号呢?一般 有两种情况,使用中央管理机构统一分配的端口号和使用动态绑定。 使用中央管理机构统一分贝的端口号。应用程序的开发者们都默认在RFC1700中定义的 特殊端口号,在进行软件设计时,都要遵从RFC1700中定义的规则,不能随便使用已经 定义的端口号,那么系统将在一个特定的取值范围随机地为应用程序分配一个端口号。 例如,任何Telnet应用中的会话都应用标准端口号23。 使用动态绑定。如果一个应用程序的会话没有涉及到特殊的端口号,那么系统将在一个 特定的取值方位内随机地为应用程序分配一个端口号。在应用程序进行通信以前,如果 不知道对方的端口号,就必须发送请求以获得对方的端口号。 RFC(Request for Comments,征求意见资料)是一个资料系列,始创于1969年,其中描述 了关于Internet的协议实验,并不是所有RFC资料都是描述Internet标准的,但所有 Internet标准都是作为RFC资料编写的。RFC资料中提交的协议都是Internet研究人员和 开发人员根据自己的情况建立、修改和扩充的,因此不同于CC (国际电报电话咨询委 员会)和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 -
TP - 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(数据部分为0时)
校验和 头标和数据域计算的校验和,这一项是可选的,为的 是在高可靠性的网路上尽量减少开销
数据 上层协议的数据
UDP为应用程序提供的是一种不可靠的、非连接的分组交付服务,UDP报文可能出现 丢失、重复、时延、乱序、连接失效的问题。但是正式由于它不提供这种可靠性,所 以它的开销很小。换句话说,UDP提供了一种在高效可靠的网络上传输数据而不用消 耗不必要的网络资源和处理时间的通信方式。使用UDP的协议包括TFTP、SNMP、DNS DHCP。UDP很适合这种客户机像服务器发送简单服务请求的环境,因为这种服务的开 销本来就很小,如果在喀什或者结束时加入类似TCP三次握手的过程,网络的实际利用 将会变得很低。 UDP还可以用于操作信息的登录。例如,像日志服务器 syslog发送日志信息,采用UDP 不会导致多台设备向一台服务器发送日志信息而引起过载。 UDP依靠上层协议提供可靠性,包括处理报文的丢失、重复、时延、乱序、连接失效 等问题。如Real流格式媒体就是使用应用程序协议来保证数据的正确传输。 TCP 在上文中已经提到UDP为应用程序提供的是一种不可靠的、非连接的分组的交付服务。当网络硬件失效 或者负担太重时,数据段可能会产生丢失、重复、时延、乱序等现象,这些都会导致通信不正常。如果 让应用程序来负担差错检测和恢复的工作,将给程序员带来很多复杂的工作,所以使用独立的通信协议 来保证通信的可靠性是非常必要的。 传输控制协议TCP是在RFC793中定义的,它是一个面向连接的可靠的通信协议。总的来说,TCP主要提 供主要提供一下服务。 面向连接的虚电路:这有些和打电话相似,在开始传输之前,通信双方要进行三次握手来建立连接,以保 证连接的可靠性。在传输过程中,通信双方的协议模块继续进行通信,以确保正确到达(例如,接收会用 ACK应答发送方的报文段,发送方对未被应答的报文段提供重传)。如果在传输过程中通信失败了(例如传 输路径上的某个网络 失效),通信双方都会收到错误报告。在通信结束时,通信双方会使用改进的三次 握手来关闭连接。 面向流:当通信双方传输大量数据时,TCP将数据流看作可分为字节的流,进行分段(分组),接收方将收到 的报文段按原有顺序复原。 流量控制,避免拥塞;为了提高传输效率和减少网络通信量(协议之间的通信),TCP会尽量一次传输足够多 的数据。 多路分解技术(多路复用技术):用端口号来实现。 全双工连接:TCP提供全双工连接,可以在一条连接上同时传输两个独立的、流向相反的数据流。 TCP头格式 TCP头共占用了20个字节
名称 描述
源端口 调用的端口号
目的端口 被调用的端口号
序号 确保数据到达的序列正确的编号
应答号 期望下一个TCP数据段
数据偏移(头长度) 以32位为单位的报头长度
保留 置为0
编码号 开始、终止会话之类的控制功能
窗口 用来控制流量
校验和 头标和数据域计算的校验和
紧急 指示紧急数据的末端
锐单商城拥有海量元器件数据手册IC替代型号,打造 电子元器件IC百科大全!

锐单商城 - 一站式电子元器件采购平台