您的位置:首页 > 理论基础 > 计算机网络

TCP/UDP

2016-08-09 20:13 141 查看

基本概念

TCP(Transmission Control Protocol)传输控制协议,在网络OSI的七层模型中的第四层——传输层

UDP(User Datagram Protocol):用户数据报协议。无连接的传输层协议。

TCP提供IP环境下的数据可靠传输,它提供的服务包括数据流传送、超时重传、有效流控、全双工操作和多路复用。通过面向连接、端到端和可靠的数据包发送(差错控制、流量控制、拥塞控制)。TCP支持的应用协议:Telnet(远程登录)、FTP(文件传输协议)、SMTP(简单邮件传输协议)

UDP传输数据之前源端和终端不建立连接,无重传机制,会发生丢包、收到重复包、乱序等情况,提供不可靠服务。在发送端,UDP传送数据的速度仅仅是受应用程序生成数据的速度、计算机的能力和传输带宽的限制;在接收端,UDP把每个消息段放在队列中,应用程序每次从队列中读一个消息段。UDP支持的应用协议:NFS(网络文件系统)、SNMP(简单网络管理系统)、DNS(主域名称系统)、TFTP(通用文件传输协议)等

分析两者区别时,从连接性可靠性适用场景三点进行分析不同点(当然还有支持的上层服务不同等等区别),至于相同点:传输层协议,提供端到端的数据传输服务!

细节

TCP报文结构



固定首部长度为20字节,可变部分0~40字节;源端口、目的端口:16位长。标识出远端和本地的端口号。

序号:发送的数据报的顺序;确认序号:希望收到的下一个数据报的序列号。

6个标志位:ACK:ACK位置1表明确认号是合法的。如果ACK为0,那么数据报不包含确认信息,确认字段被省略。PSH:表示是带有PUSH标志的数据。接收方因此请求数据报一到便可送往应用程序而不必等到缓冲区装满时才传送。RST:用于复位由于主机崩溃或其它原因而出现的错误的连接。还可以用于拒绝非法的数据报或拒绝连接请求。SYN:用于建立连接。FIN:用于释放连接。

窗口:16位长。窗口大小字段表示在确认了字节之后还可以发送多少个字节。

校验和:16位长。是为了确保高可靠性而设置的。它校验头部、数据和伪TCP头部之和。

可选项:0个或多个32位字。包括最大TCP载荷,窗口比例、选择重发数据报等选项。

最大TCP载荷:允许每台主机设定其能够接受的最大的TCP载荷能力。窗口比例:允许发送方和接收方商定一个合适的窗口比例因子。这一因子使滑动窗口最大能够达到232字节。

关于TCP的连接性、可靠性,需要了解的一些知识点:

三次握手、四次挥手

关于TCP建立连接的过程细节,参见我的另一篇博文:

http://blog.csdn.net/u012440687/article/details/51898183

可靠性

TCP保证可靠性的简单工作原理:

应用数据被分割成TCP认为最适合发送的数据块。这和UDP完全不同,应用程序产生的数据报长度将保持不变。由TCP传递给IP的信息单位称为报文段或段(segment)

当TCP发出一个段后,它启动一个定时器,等待目的端确认收到这个报文段。如果不能及时收到一个确认,将重发这个报文段(超时重传)。

TCP将保持它首部和数据的检验和。这是一个端到端的检验和,目的是检测数据在传输过程中的任何变化。如果收到段的检验和有差错, TCP将丢弃这个报文段和不确认收到此报文段(希望发端超时并重发)。

TCP报文段作为IP数据报来传输,而IP数据报的到达可能会失序,因此TCP报文段 的到达也可能会失序。如果必要, TCP将对收到的数据进行重新排序,将收到的数据以正确的顺序交给应用层。

TCP还能提供流量控制。TCP连接的每一方都有固定大小的缓冲空间。TCP的接收端只允许另一端发送接收端缓冲区所能接纳的数据。这将防止较快主机致使较慢主机的缓冲区溢出。

滑动窗口

滑动窗口本质上是描述接受方的TCP数据报缓冲区大小的数据,发送方根据这个数据来计算自己最多能发送多长的数据。如果发送方收到接受方的窗口大小为0的TCP数据报,那么发送方将停止发送数据,等到接受方发送窗口大小不为0的数据报的到来。

数据拥塞

当传输时出现了瓶颈(比如说一定要经过一个slip低速链路)所产生的大量数据堵塞问题(拥塞),为了解决这个问题,TCP发送方需要确认连接双方的线路的数据最大吞吐量是多少。这,就是所谓的拥塞窗口。

拥塞窗口的原理很简单,TCP发送方首先发送一个数据报,然后等待对方的回应,得到回应后就把这个窗口的大小加倍,然后连续发送两个数据报,等到对方回应以后,再把这个窗口加倍(先是2的指数倍,到一定程度后就变成线性增长,这就是所谓的慢启动),发送更多的数据报,直到出现超时错误,这样,发送端就了解到了通信双方的线路承载能力,也就确定了拥塞窗口的大小,发送方就用这个拥塞窗口的大小发送数据。要观察这个现象是非常容易的,我们一般在下载数据的时候,速度都是慢慢“冲起来的”。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  tcp 网络 udp