TCP-UDP协议

合集下载

tcp udp对应的协议

tcp udp对应的协议

tcp udp对应的协议
TCP和UDP是两种网络传输协议,它们分别对应着TCP协议和UDP协议。

TCP(Transmission Control Protocol)是一种面向连接的、
可靠的、基于字节流的传输层通信协议。

它提供了数据完整性、顺
序性和可靠性的传输,适用于对数据传输质量要求较高的应用场景,例如文件传输、电子邮件等。

TCP协议通过三次握手建立连接,然
后进行数据传输,最后通过四次挥手来释放连接。

由于其可靠性和
完整性的特点,TCP协议在网络通信中被广泛应用。

UDP(User Datagram Protocol)是一种无连接的、不可靠的、
简单的传输层通信协议。

它不保证数据的可靠传输,也不保证数据
的顺序性,适用于对实时性要求较高的应用场景,例如音频、视频
流等。

UDP协议不需要建立连接,直接进行数据传输,因此在网络
通信中的开销较小。

然而,由于其不可靠性,UDP协议在应用中需
要额外的机制来保证数据的完整性和顺序性。

从协议特点来看,TCP提供了可靠的数据传输,而UDP提供了
更快速的数据传输。

在实际应用中,根据不同的需求和场景,可以
选择使用TCP或UDP协议来进行网络通信。

这两种协议在网络通信中发挥着不同的作用,对于理解网络通信和进行网络应用开发都具有重要意义。

常用网络通信协议简介

常用网络通信协议简介

常用网络通信协议简介常见的网络协议有:TCP/IP协议、UDP协议、HTTP协议、FTP协议、Telnet协议、SMTP协议、NFS协议等。

这里主要简述一下前三种协议。

一.TCP/IP协议1.什么是TCP/IP协议?TCP/IP传输协议,即传输控制/网络协议,也叫作网络通讯协议。

它是在网络的使用中的最基本的通信协议。

TCP/IP传输协议对互联网中各部分进行通信的标准和方法进行了规定。

并且,TCP/IP 传输协议是保证网络数据信息及时、完整传输的两个重要的协议。

2.TCP/IP协议的组成TCP/IP协议由四个层次组成:应用层:应用层是TCP/IP协议的第一层,是直接为应用进程提供服务的。

(1)对不同种类的应用程序它们会根据自己的需要来使用应用层的不同协议,邮件传输应用使用了SMTP协议、万维网应用使用了HTTP协议、远程登录服务应用使用了有TELNET协议。

(2)应用层还能加密、解密、格式化数据。

(3)应用层可以建立或解除与其他节点的联系,这样可以充分节省网络资源。

运输层:作为TCP/IP协议的第二层,运输层在整个TCP/IP协议中起到了中流砥柱的作用。

且在运输层中,TCP和UDP也同样起到了中流砥柱的作用。

网络层:网络层在TCP/IP协议中的位于第三层。

在TCP/IP协议中网络层可以进行网络连接的建立和终止以及IP地址的寻找等功能。

网络接口层:在TCP/IP协议中,网络接口层位于第四层。

由于网络接口层兼并了物理层和数据链路层所以,网络接口层既是传输数据的物理媒介,也可以为网络层提供一条准确无误的线路。

3.TCP/IP协议的特点(1)协议标准是完全开放的,可以供用户免费使用,并且独立于特定的计算机硬件与操作系统。

(2)独立于网络硬件系统,可以运行在广域网,更适合于互联网。

(3)网络地址统一分配,网络中每一设备和终端都具有一个唯一地址。

(4)高层协议标准化,可以提供多种多样可靠网络服务。

二.UDP协议1.什么是UDP协议?Internet协议集支持一个无连接的传输协议,该协议称为用户数据报协议(UDP,UserDatagramProtocol)。

TCP与UDP的区别及其应用

TCP与UDP的区别及其应用

TCP与UDP的区别及其应用TCP(传输控制协议)和UDP(用户数据报协议)是两种不同的传输协议,它们在网络通信中起着非常重要的作用。

虽然它们都是在网络通信中传输数据的协议,但是它们有很大的区别。

在本文中,我将分别介绍TCP和UDP的特点、区别及其在各种应用中的使用。

一、TCP的特点及应用1. TCP的特点TCP是一种面向连接的协议,它在传输数据之前需要先建立连接,然后传输数据,传输结束后再断开连接。

它提供可靠的、按序传输的数据传输服务,能够保证数据的完整性和可靠性。

TCP使用三次握手来建立连接,四次挥手来断开连接,在传输数据时会进行数据校验和确认。

因此,它非常适合对数据传输的要求比较高的应用场景。

2. TCP的应用TCP广泛应用于各种需要可靠传输的应用场景,包括但不限于以下几个方面:(1)网络浏览:当用户访问网页时,浏览器会使用TCP协议与服务器建立连接,传输页面内容。

(2)文件传输:在文件传输过程中,TCP可以保证文件的完整性和可靠性,确保文件在传输过程中不会丢失或损坏。

(3)电子邮件:电子邮件的发送和接收过程中需要使用TCP协议来保证数据传输的可靠性。

(4)远程登录:如Telnet、SSH等远程登录方式都使用TCP协议来传输数据。

(5)数据库访问:数据库访问时需要使用TCP协议来传输数据。

二、UDP的特点及应用1. UDP的特点UDP是一种无连接的协议,它不需要在传输数据之前建立连接,也不保证数据的完整性和可靠性。

UDP是一种简单的数据传输协议,它仅提供数据传输的功能,不对数据传输进行确认和校验。

因此,UDP的传输效率比TCP高,但可靠性较差。

由于UDP不需要建立连接,所以它的开销比较小,适合对实时性要求较高的应用场景。

2. UDP的应用UDP主要用于那些对实时性要求较高的应用场景,包括但不限于以下几个方面:(1)实时视频、音频传输:视频会议、实时语音通话等应用中使用UDP来传输数据,因为在这些应用中,实时性比可靠性更为重要。

网络编程的常用协议

网络编程的常用协议

网络编程的常用协议网络编程是指利用计算机网络进行数据传输和处理的编程技术。

在网络编程中,为了实现不同计算机之间的通信和数据交换,采用了各种不同的协议。

本文将介绍网络编程中常用的几种协议。

一、传输控制协议(TCP)传输控制协议(TCP)是一种面向连接的、可靠的、字节流的传输协议。

它通过建立双向的、可靠的通信流,确保数据的可靠传输。

TCP 使用三次握手建立连接,通过序列号和确认应答保证数据的有序性和完整性,同时还能进行拥塞控制和流量控制。

TCP常用于需要可靠传输的应用,如HTTP、FTP等。

二、用户数据报协议(UDP)用户数据报协议(UDP)是一种无连接的传输协议,它不保证数据的可靠传输。

UDP将数据分成较小的数据包进行传输,它不面向连接,不进行拥塞控制和流量控制,因此传输效率较高。

UDP适用于实时性要求较高的应用,如实时音视频传输、网络游戏等。

三、超文本传输协议(HTTP)超文本传输协议(HTTP)是一种在计算机世界中用于传输超媒体文档的协议。

它基于客户端-服务器模型,客户端向服务器发送HTTP请求,服务器返回HTTP响应。

HTTP使用TCP作为传输层协议,通过URL定位网络资源,进行数据的传输和交换。

HTTP常用于网页浏览、文件下载等应用。

四、文件传输协议(FTP)文件传输协议(FTP)是一种用于在计算机网络上进行文件传输的标准网络协议。

它基于客户端-服务器模型,客户端通过FTP客户端程序连接到服务器,进行文件的上传、下载、删除等操作。

FTP使用TCP作为传输层协议,提供了用户名密码认证、目录操作、文件传输等功能。

五、简单邮件传输协议(SMTP)简单邮件传输协议(SMTP)是一种在计算机网络上发送和传输电子邮件的协议。

它用于在发送邮件服务器和接收邮件服务器之间传递电子邮件。

SMTP使用TCP建立连接,通过命令和响应的方式进行邮件的传输。

SMTP还定义了邮件地址的格式和邮件的编码规则等。

六、域名系统(DNS)域名系统(DNS)是一种用于将域名和IP地址相互映射的分布式数据库系统。

TCPUDP有什么区别

TCPUDP有什么区别

TCPUDP有什么区别前⾔计算机分层中的传输层,主要是负责计算机之间的数据传输,TCP 和 UDP 都属于传输层协议。

在实际开发过程中,需要根据实际需求的来选择适当的传输协议。

在这⾥我们简单总结下 TCP、UDP 的特点和区别以及实际开发中如何选择。

TCP 和 UDP 的定义TCP 是⾯向有连接,可靠的流协议。

保证两端通讯主机之间的通信可达,可以处理丢包、乱序等异常,可以有效利⽤带宽、缓解⽹络拥堵。

UDP 是⾯向⽆连接,不可靠的数据报协议。

不会处理丢包、乱序等异常,⼀般交给上层的应⽤层处理。

UDP 的特点及使⽤场景UDP 不提供复杂的控制机制,利⽤ IP 提供⾯向⽆连接的通信服务,随时都可以发送数据,处理简单且⾼效,经常⽤于以下场景:①包总量较⼩的通信(DNS、SNMP)②视频、⾳频等多媒体通信(即时通信)③⼴播通信TCP 的特点及使⽤场景相对于 UDP,TCP 实现了数据传输过程中的各种控制,可以进⾏丢包时的重发控制,还可以对次序乱掉的分包进⾏顺序控制。

在对可靠性要求较⾼的情况下,可以使⽤ TCP,即不考虑 UDP 的时候,都可以选择 TCP。

总结这⾥简单总结下:1.TCP 是⾯向连接的,UDP 是⾯向⽆连接的;故 TCP 需要建⽴连接和断开连接,UDP 不需要。

2.TCP 是流协议,UDP 是数据包协议;故 TCP 数据没有⼤⼩限制,UDP 数据报有⼤⼩限制(UDP 协议本⾝限制、数据链路层的 MTU、缓存区⼤⼩)。

3.TCP 是可靠协议,UDP 是不可靠协议;故 TCP 会处理数据丢包重发以及乱序等情况,UDP 则不会处理。

TCP 为什么要三次握⼿,四次挥⼿?前⾔TCP 属于传输层协议,是⾯向有连接,可靠的流协议。

⾯对有连接这个特性,TCP 就有建⽴连接和断开连接的过程。

我们分别了解建⽴连接和断开连接的流程以及当中的⼀些疑问。

TCP 建⽴连接和断开连接流程⾸先我们来看下这张经典的流程图:握⼿过程可以简化为下⾯的四次交互:1.Client 端⾸先发送⼀个 SYN 包,告诉 Server 端我的初始序列号是 X;Client 端进⼊了 SYN-SENT(同步已发送状态)状态。

TCP与UDP的区别及其应用

TCP与UDP的区别及其应用

TCP与UDP的区别及其应用TCP(Transmission Control Protocol)与UDP(User Datagram Protocol)是两种常见的网络传输协议,它们在网络通信中起着非常重要的作用。

虽然它们都是用来传输数据的协议,但是它们有着不同的特性和适用场景。

1. TCP的特点及应用TCP是一种面向连接的协议,它通过三次握手建立连接,然后在数据传输过程中保证数据的可靠性和有序性。

TCP协议的特点包括以下几点:1)可靠性:TCP通过确认机制和重传机制来保证数据的可靠传输。

当发送方发送数据后,接收方会对数据进行确认,如果发送方未收到确认信息,就会重传数据。

通过这种方式,TCP可以保证数据的可靠性。

2)有序性:TCP保证数据的有序传输,即发送的数据包在接收端按照发送的顺序进行重组。

3)流量控制:TCP利用滑动窗口机制来进行流量控制,当接收方无法处理发送方的数据时,可以通过发送窗口大小来告知发送方暂停发送。

4)拥塞控制:TCP通过拥塞窗口动态调整的方式来进行拥塞控制,以避免网络拥塞。

5)面向字节流:TCP是面向字节流的协议,它将数据流看作一个字节序列进行传输。

由于TCP具有以上特点,它适用于对数据可靠性和有序性要求较高的场景。

例如,网页浏览、电子邮件传输、文件传输等应用都是基于TCP协议进行数据传输的。

2. UDP的特点及应用UDP是一种无连接的协议,它并不会像TCP那样进行连接的建立和断开,而是直接将数据包发送出去。

UDP协议的特点包括以下几点:1)无连接:UDP是一种无连接的协议,它不需要进行连接的建立和断开,因此传输时延较小。

2)简单性:UDP相对于TCP来说更加简单,数据包的头部信息较少,传输效率高。

3)不可靠性:UDP不保证数据的可靠性,数据包的丢失和重组都可能发生。

4)面向报文:UDP是面向报文的协议,它将数据看作一个个的报文进行传输。

由于UDP具有以上特点,它适用于一些对实时性要求较高的应用场景,例如音视频传输、在线游戏等。

网络应用技术开篇-第04章 传输层协议TCP和UDP





135端口:135端口主要用于使用RPC(Remote Procedure Call, 远程过程调用)协议并提供DCOM(分布式组件对象模型)服务。 冲击波病毒利用RPC漏洞攻击,利用错误格式处理不正确的消息 造成的。 137、138、139端口:NETBIOS Name Service :其中137、 138是UDP端口,当通过网上邻居 传输文件时用这个端口。只需要向 这端口发个请求,就可以获得该计 算机名称,用户名IIS是否在运行。 139端口: NETBIOS Session Service 图获得NetBIOS/SMB服务。这个协 议被用于windows文件和打印机共 享和SAMBA。 443端口:Https 网页浏览端口,能 提供加密和通过安全端口传输的另一 种HTTP,作用同139完全相同。


3.利用UDP的应用程序要承担可靠性方面的全部工 作
UDP封装
以太网帧
帧头
IP报头
UDP报头
UDP数据
校验码
UDP报文
IP数据报 帧是给传输过程中交换设备阅读的,IP数据报是给路由器阅读的,UDP报文 是给传输路径的两端的主机阅读的
UDP的端口

UDP使用端口对给定主机上的多个目标进行区分 TCP和UDP各自拥有自己的端口号
TCP中的序列编号

TCP将数据流作为组合成段的字节序列传送 为每一个字节分配一个唯一的序列编号 第一个字节的序列编号是在连接建立开始时确定的 每个TCP报的序列编号是分配给段中的数据的第一 个字节的序列编号
源主机 目的主机
81 80 79 SEQ79
78 77 76 75 74 SEQ74
TCP提供的服务

TCP和UDP的区别和关键知识点

TCP和UDP的区别和关键知识点1.TCP和UDP区别TCP---传输控制协议,提供的是面向连接、可靠的字节流服务。

当客户端和服务器彼此交换数据前,必须先在双方之间建立一个TCP连接,之后才能传输数据。

TCP提供超时重发,丢弃重复数据,检验数据,流量控制等功能,保证数据能从一端传到另一端。

UDP---用户数据报协议,是一个简单的面向数据报的运输层协议。

UDP不提供可靠性,它只是把应用程序传给IP层的数据报发送出去,但是并不能保证它们能到达目的地。

由于UDP在传输数据报前不用在客户和服务器之间建立一个连接,且没有超时重发等机制,故而传输速度很快。

2.TCP与UDP的选择当数据传输的性能必须让位于数据传输的完整性、可控制性和可靠性时,TCP协议是当然的选择。

当强调传输性能而不是传输的完整性时,如:音频和多媒体应用,UDP是最好的选择。

在数据传输时间很短,以至于此前的连接过程成为整个流量主体的情况下,UDP也是一个好的选择,如:DNS交换。

把SNMP建立在UDP上的部分原因是设计者认为当发生网络阻塞时,UDP较低的开销使其有更好的机会去传送管理数据。

TCP丰富的功能有时会导致不可预料的性能低下,但是我们相信在不远的将来,TCP可靠的点对点连接将会用于绝大多数的网络应用。

3.为什么UDP有时比TCP更有优势?UDP以其简单、传输快的优势,在越来越多场景下取代了TCP,如实时游戏。

(1)网速的提升给UDP的稳定性提供可靠网络保障,丢包率很低,如果使用应用层重传,能够确保传输的可靠性。

(2)TCP为了实现网络通信的可靠性,使用了复杂的拥塞控制算法,建立了繁琐的握手过程,由于TCP内置的系统协议栈中,极难对其进行改进。

采用TCP,一旦发生丢包,TCP会将后续的包缓存起来,等前面的包重传并接收到后再继续发送,延时会越来越大,基于UDP对实时性要求较为严格的情况下,采用自定义重传机制,能够把丢包产生的延迟降到最低,尽量减少网络问题对游戏性造成影响。

tcp协议与 udp协议的区别

TCP 与UDP的区别很多文章都说TCP协议可靠,UDP协议不可靠!为什么前者可靠,后者不可靠呢?既然UDP协议不可靠,为什么还要使用它呢?所谓的TCP协议是面向连接的协议,面向连接是什么呢?TCP和UDP都是传输层的协议!从编程的角度看,就是两个模块(模块就是代码的集合,一系列代码的组合提供相应的功能!模块化最终目的就是:分工协作!模块化好处:便于扩展开发以及维护!)。

先说TCP协议:这个协议,是面向的连接!面向连接这个概念,我们要从物理层看起。

大家都知道,因为“信道复用技术”的迅猛发展,才促使了计算机网络的发展!如果没有“信道复用技术”,那么单条线路上(这里的线路指物理传输介质,例如:双绞线、光纤、电话线)单位时间内只能供一台计算机使用!还是举例说明:就拿你自己的计算机来说,你跟同学“小明”聊天的时候,就不能跟另外一位同学“小强”聊天,如果你想同时跟两位同学聊天,那么你就得装两条线路!那么同时与第三位、第四位同学。

第N位同学聊天的时候,你需要装几根线路?全世界人民聊天的时候,又需要装几根线路?“信道复用技术”实现了,在同一条线路上,单位时间内可供X台计算机同时通信!Toad知道以下几种复用技术:1、频分复用2、时分复用3、波分复用4、码分复用5、空分复用6、统计复用7、极化波复用关于“信道复用技术”更深层次的问题,需要你自己去研究!上面我们提到了“信道复用技术”!知道了这一点,我们就很容易明白“物理信道”上的“虚拟信道”概念了!不同的信道复用技术,使用不同的复用技术,目的就是创建“虚拟信道”。

一个TCP协议连接其实就是在物理线路上创建的一条“虚拟信道”。

这条“虚拟信道”建立后,在TCP协议发出FIN包之前(两个终端都会向对方发送一个FIN包),是不会释放的。

正因为这一点,TCP协议被称为面向连接的协议!UDP协议,一样会在物理线路上创建一条“虚拟信道”,否则UDP协议无法传输数据!但是,当UDP协议传完数据后,这条“虚拟信道”就被立即注销了!因此,称UDP是不面向连接的协议!大家要知道,一种物理线路,单位时间内,能够创建的“虚拟信道”是有限的!从这个问题,大家应该明白了TCP协议和UDP协议为什么会共存了吧,然而,这只是其中一个原因而已!那为什么又说TCP协议可靠,UDP协议不可靠呢?以上说的是一个原因,还有一个原因是:使用TCP协议传输数据,当数据从A端传到B端后,B端会发送一个确认包(ACK包)给A端,告知A端数据我已收到!UDP协议就没有这种确认机制!这一点,在做TCP协议首部分析时,会详加解释!QQ普通会员就是使用的UDP协议进行传输数据!既然UDP协议自身没有确认机制,这个工作可以交给应用层的进程来完成(QQ)!大家使用QQ的时候,感觉出错的几率还是非常小吧!当然,把这个确认工作完全交给QQ自身来做,就直接导致了,QQ软件体积增大!有些应用,对数据传输可靠性要求非常高,例如大家浏览网页,通过网页注册帐号、转帐等服务,这是不容许出错的,使用TCP协议能把出错的可能性降到最低(当然,网络自身很糟糕,TCP协议也没办法)。

什么是TCP和UDP协议

现在Internet上流行的协议是TCP/IP协议,该协议中对低于1024的端口都有确切的定义,他们对应着Internet上一些常见的服务。

这些常见的服务可以分为使用TCP端口(面向连接)和使用UDP端口(面向无连接)两种。

说到TCP和UDP,首先要明白“连接”和“无连接”的含义,他们的关系可以用一个形象地比喻来说明,就是打电话和写信。

两个人如果要通话,首先要建立连接——即打电话时的拨号,等待响应后——即接听电话后,才能相互传递信息,最后还要断开连接——即挂电话。

写信就比较简单了,填写好收信人的地址后将信投入邮筒,收信人就可以收到了。

从这个分析可以看出,建立连接可以在需要通信的双方建立一个传递信息的通道,在发送方发送请求连接信息接收方响应后,由于是在接受方响应后才开始传递信息,而且是在一个通道中传送,因此接受方能比较完整地收到发送方发出的信息,即信息传递的可靠性比较高。

但也正因为需要建立连接,使资源开销加大(在建立连接前必须等待接受方响应,传输信息过程中必须确认信息是否传到及断开连接时发出相应的信号等),独占一个通道,在断开连接钱不能建立另一个连接,即两人在通话过程中第三方不能打入电话。

而无连接是一开始就发送信息(严格说来,这是没有开始、结束的),只是一次性的传递,事先不需要接受方的响应,因而在一定程度上也无法保证信息传递的可靠性了,就像写信一样,我们只是将信寄出去,却不能保证收信人一定可以收到。

TCP是面向连接的,有比较高的可靠性,一些要求比较高的服务一般使用这个协议,如FTP、Telnet、SMTP、HTTP、POP3等,而UDP是面向无连接的,使用这个协议的常见服务有DNS、SNMP、QQ等。

对于QQ必须另外说明一下,QQ2003以前是只使用UDP协议的,其服务器使用8000端口,侦听是否有信息传来,客户端使用4000端口,向外发送信息(这也就不难理解在一般的显IP的QQ版本中显示好友的IP地址信息中端口常为4000或其后续端口的原因了),即QQ程序既接受服务又提供服务,在以后的QQ版本中也支持使用TCP协议了。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

第7章TCP/UDP协议主要内容1.TCP协议基本原理。

2.UCP协议基本原理。

sat实验。

能力要求1.理解传输层在OSI体系结构中的地位和作用。

2.了解传输层如何保证通信服务的可靠性。

3.掌握TCP/UDP协议基本原理和报文数据结构。

因为世界上各种通信子网在性能上存在着很大差异,例如电话交换网、分组交换网、公用数据交换网,局域网等通信子网等,但网络的互联互通的特性决定了它们必须互连,而它们提供的吞吐量、传输速率、数据延迟通信费用各不相同,但对于会话层来说,却要求有一性能恒定的界面,传输层就承担了这一功能。

传输层(Transport Layer)是OSI体系结构中重要、关键的一层,负责总体的数据传输和数据控制。

传输层提供端到端的交换数据的机制。

传输层对会话层等高三层提供可靠的传输服务,对网络层提供可靠的目的地站点信息。

传输层协议主要包括TCP/UDP协议。

它屏蔽了网络底层技术的差异,使会话层感受不到各种通信子网在技术标准和网络结构上的区别。

此外传输层还要具备差错恢复,流量控制等功能。

传输层面对的数据对象已不是网络地址和主机地址,而是端口。

传输层的最终目的是为会话提供可靠的、无误的数据传输。

传输层的服务一般要经历传输连接建立阶段、数据传送阶段、传输连接释放阶段3个阶段才算完成一个完整的服务过程。

在数据传输过程中,传输层要保证提供通信服务的可靠性,避免报文的出错、丢失、延迟时间紊乱、重复、乱序等差错。

7.1 传输层功能概述传输层也称为运输层,是介于低3层通信子网系统和高3层之间的一层,是源端到目的端对数据传送进行控制从低到高的最后一层。

传输层功能的目的是为会话提供可靠、无误的数据传输服务。

传输层的服务一般要经历传输连接建立阶段、数据传送阶段、传输连接释放阶段3个阶段才算完成一个完整的服务过程。

为完成这一服务,传输层要具备以下基本功能:199(1)连接管理(Connection Management):定义了允许两个用户像直接连接一样开始交谈的规则。

通常把连接的定义和建立的过程称为握手(handshake)。

传输层要建立、维持和终止一个会话。

在数据传输开始时,发送方和接收方的应用都要通知各自的操作系统初始化一个连接,一个连接就建立了,数据传输也就开始了,在传输的过程中,两台主机还需要继续通过协议软件来通信以验证数据是否被正确接收。

数据传输完成后,发送端主机发送一个标识数据传输结束的指示。

接收端主机在数据传输完成后确认数据传输结束,连接终止。

(2)流量控制(Flow Control):就是以网络普遍接受的速度发送数据,从而防止网络拥塞造成数据报的丢失。

(3)差错检测(Error Detection):数据链路层的差错检测功能提供了可靠的链路传输,但无法保证源点和目的之间的传输完全无错,比如网络中的路由器收到了完整无缺的IP分组,但是在将含有分组的帧重新格式化的过程中出现了影响分组内容的错误。

这种错误可能是由于软件或硬件问题导致路由器在进行分组期间引起的,也就是说并不是由于物理链路在进行数据传输的过程中产生的差错,因此数据链路层的差错检测功能无法通过校验识别出差错。

传输层的差错检测机制会检测到这种类型的错误。

(4)对用户请求的响应(Response to User's Request):包括对发送和接收数据请求的响应,以及特定请求的响应,如用户可能要求高吞吐率、低延迟或可靠的服务。

传输层面对的数据对象不是网络地址和主机地址,而是端口。

(5)建立无连接或面向连接的通信:TCP/IP协议的TCP提供面向连接的传输层服务,UDP则提供无连接的传输层服务。

为了评价传输层提供的服务质量(QoS),我们一般用一组量化的指标来衡量,主要有:(1)连接建立延迟/连接释放延迟(2)连接建立/释放失败概率(3)传输时延(4)吞吐率(5)残留误码率(6)传输失败概率总之,我们设计传输层的目的就是提高传输服务的可靠性和保证服务质量QoS,下面我们分别就传输层的两个重要协议TCP和UDP分别介绍。

2007.2 TCP协议用户的应用程序进程最终需要得到的是端到端的通信服务,传输层的主要任务就是建立应用程序间的端到端连接,并且为数据传输提供可靠或不可靠的通信服务。

TCP/IP协议族的传输层协议主要包括TCP(Transmission Control Protocol,传输控制协议)和UDP(User Datagram Protocol,用户数据报协议)。

TCP是面向连接的可靠的传输层协议,它支持在不可靠网络上实现面向连接的可靠的数据传输。

7.2.1 TCP协议的特点RFC 793定义的TCP是一种面向连接的、端到端的可靠传输协议。

TCP的主要特点如下:(1)三次握手(Three-Way Handshake)建立连接:确保连接建立的可靠性。

(2)端口号:通过端口号标识上层协议和服务,实现了网络通道的多路复用。

(3)完整性检验:通过对协议和载荷数据计算校验和,保证了接收方能检测出传输过程中可能出现的差错。

(4)确认机制:对于正确接收到的数据,接收方通过显式应答通告发送方,超出一定时间之后,发送方将重传没有被确认的段,确保传输的可靠性。

(5)序列号:发送的所有数据都拥有唯一的序列号,这样不但唯一标识了每一个段,而且明确了每个段在整个数据流中的位置,接收方可以利用这些信息实现确认、丢失检测、乱序重排等功能。

(6)窗口机制:通过可调节的窗口,TCP接收方可以通告期望的发送速度,从而控制数据的流量。

由于TCP具有这些特点,一些对数据传输可靠性、次序等比较敏感的应用程序和协议使用TCP作为其传输层协议。

这些应用和协议包括FTP、Telnet、E-mail(SMTP/POP3)等。

7.2.2 TCP/UDP端口号在IP网络中,一个IP地址可以唯一地标识一个主机。

但一个主机上却可能201同时有多个进程访问网络,要标识这些进程,只用IP地址就不够了。

因此TCP/UDP采用端口号(Port Number)来标识这些上层的应用进程,从而使这些进程可以复用网络通道。

而为了区分TCP和UDP协议,IP用协议号6标识TCP,用协议号17标识UDP,如图7-1所示。

图7-1 TCP/UDP端口号在实际的端到端通信中,通信的双方实际上是两个应用进程,这两个进程都需要用各自的端口号进行识别。

所以,一个通信连接可以用双方的IP地址以及双方的端口号来标识,而每一个数据报内也必须包含源IP地址、源端口、目的IP地址和目的端口。

IP地址在IP头中标出,而端口号在TCP/UDP头中标出。

TCP/UDP的端口号是一个16位二进制数,即端口号范围可以为0~65535。

其中,端口0~1023由IANA统一管理,分配或保留给众所周知的服务使用,这些端口称为熟知端口(Well-Known Port)。

大于1023的端口号没有统一的管理,可以由应用进程任意使用。

虽然UDP端口号与TCP端口号是不相关的,但通常仍然为同一个应用保留相同的TCP和UDP端口号,以免不必要的麻烦。

一些常见协议的保留端口号如表7-1所示。

详细分配信息可参见RFC 1700。

端口号协议端口号协议20 FTP data 88 Kerberos21 FTP control 92 NPP(Network Printing Protocol)23 Telnet 118 SQL Services25 SMTP 161 SNMP53 DNS 162 SNMP Trap69 TFTP 179 BGP80 HTTP 520 RIP保留熟知端口的必要性显而易见。

例如,若HTTP服务的端口号是任意值,202则用户在访问Internet网站是就会遇到麻烦,因为浏览器不知道目的网站所使用的端口号,用户就要自己输入端口号。

但是这并不意味着众所周知的协议必须使用众所周知的端口号。

例如管理员也可以为HTTP协议分配端口8080,目的恰恰是避免任何人都能随意访问其网页。

知道一个特定的TCP/IP应用进程服务使用了哪一个端口是非常重要的。

如果把主机当成一个封闭的堡垒,那么端口号就是堡垒上的窗户的编号,可以开放主机上特定的端口来允许其他人访问,也可以关闭特定的端口来阻止非法的访问。

在windows系统中也可以查看所使用的端口号信息。

打开windows的命令窗口,输入netstat命令,可以看到本地主机和目标主机使用的端口号,详见本章后面的实验。

7.2.3 TCP封装如图7-2所示,TCP收到应用层提交的数据后,将其分段,并在每个分段前封装一个TCP头。

最终的IP包是在TCP头之前再添加IP头形成的。

图7-2 TCP封装图7-3所示为TCP头的格式。

TCP头由一个20B的固定长度部分加上变长的选项字段组成。

TCP头的各字段含义如下。

(1)源端口(Source Port):16位的源端口字段包含初始化通信的端口号。

源端口和源IP地址的作用是识别报文的返回地址。

(2)目的端口(Destination Port):16位的目的端口字段定义传输的目的地址。

这个端口指明接收方计算机上的应用进程接口。

(3)顺序号(Sequence Number):该字段用来标识TCP源端设备向目的端设备发送的字节流,它表示在这个报文段中的第一数据字节在整个字节流中的序号。

如果将字节流看做在两个应用进程间的单向流动,则TCP用序列号对每个字节进行计数,序列号是一个32位的数。

203图7-3 TCP头格式(4)确认号(Acknowledgement Number):TCP使用32位的确认号字段标识期望收到的下一个段的第一个字节在整个字节流中的序号,并声明此前的所有数据都已经正确无误地收到,因此,确认号应该是上次已成功收到的数据字节序列号加1。

收到确认号的源计算机会知道特定的段已经被收到。

确认号的字段只在ACK标志被设置时才有效。

(5)数据偏移(Data Offset):这个4位字段包括TCP头大小,以32位数据结构(字)为单位。

(6)保留(Reserved,阴影部分):6位置0的字段。

为将来定义新的用途保留。

(7)控制位(Control bits):共6位,每1位标志可以打开一个控制功能,这6个标志从左至右是URG(Urgent pointer field significant,紧急指针字段标志)、ACK(Acknowledgment field significant,确认字段标志)、PSH(Push function,推功能)、RST(Reset the connection,重置连接)、SYN(Synchronize sequence numbers,同步序列号)、FIN(Final,No more data from sender,数据传送完毕)。

相关文档
最新文档