1. 首页 > 科技

UDP、TCP 协议?(如何用udp协议实现tcp协议?)

UDP、TCP 协议?(如何用udp协议实现tcp协议?)

如何用udp协议实现tcp协议?

面向连接的TCP

“面向连接”就是在正式通信前必须要与对方建立起连接。比如你给别人打电话,必须等线路接通了、对方拿起话筒才能相互通话。

TCP(Transmission Control Protocol,传输控制协议)是基于连接的协议,也就是说,在正式收发数据前,必须和对方建立可靠的连接。一个TCP连接必须要经过三次“对话”才能建立起来,其中的过程非常复杂,我们这里只做简单、形象的介绍,你只要做到能够理解这个过程即可。我们来看看这三次对话的简单过程:主机A向主机B发出连接请求数据包:“我想给你发数据,可以吗?”,这是第一次对话;主机B向主机A发送同意连接和要求同步(同步就是两台主机一个在发送,一个在接收,协调工作)的数据包:“可以,你什么时候发?”,这是第二次对话;主机A再发出一个数据包确认主机B的要求同步:“我现在就发,你接着吧!”,这是第三次对话。三次“对话”的目的是使数据包的发送和接收同步,经过三次“对话”之后,主机A才向主机B正式发送数据。

TCP协议能为应用程序提供可靠的通信连接,使一台计算机发出的字节流无差错地发往网络上的其他计算机,对可靠性要求高的数据通信系统往往使用TCP协议传输数据。

面向非连接的UDP协议

“面向非连接”就是在正式通信前不必与对方先建立连接,不管对方状态就直接发送。这与现在风行的手机短信非常相似:你在发短信的时候,只需要输入对方手机号就OK了。

UDP(User Data Protocol,用户数据报协议)是与TCP相对应的协议。它是面向非连接的协议,它不与对方建立连接,而是直接就把数据包发送过去!

UDP适用于一次只传送少量数据、对可靠性要求不高的应用环境。比如,我们经常使用“ping”命令来测试两台主机之间TCP/IP通信是否正常,其实“ping”命令的原理就是向对方主机发送UDP数据包,然后对方主机确认收到数据包,如果数据包是否到达的消息及时反馈回来,那么网络就是通的。例如,在默认状态下,一次“ping”操作发送4个数据包(如图2所示)。大家可以看到,发送的数据包数量是4包,收到的也是4包(因为对方主机收到后会发回一个确认收到的数据包)。这充分说明了UDP协议是面向非连接的协议,没有建立连接的过程。正因为UDP协议没有连接的过程,所以它的通信效果高;但也正因为如此,它的可靠性不如TCP协议高。QQ就使用UDP发消息,因此有时会出现收不到消息的情况。

TCP协议和UDP协议各有所长、各有所短,适用于不同要求的通信环境。

简述TCP协议和UDP协议的区别。

TCP是面向连接的协议,有流控和差错控制,提供可靠的传输。传输数据分为三步,握手-传输数据-断开。速度慢!

UDP是无连接的协议,提供不可靠的传输,速度快!

TCP协议和UDP协议的区别有哪些

展开全部

TCP(传输控制协议):

1)提供IP环境下的数据可靠传输(一台计算机发出的字节流会无差错的发往网络上的其他计算机,而且计算机A接收数据包的时候,也会向计算机B回发数据包,这也会产生部分通信量),有效流控,全双工操作(数据在两个方向上能同时传递),多路复用服务,是面向连接,端到端的传输;

2)面向连接:正式通信前必须要与对方建立连接。事先为所发送的数据开辟出连接好的通道,然后再进行数据发送,像打电话。

3)TCP支持的应用协议:Telnet(远程登录)、FTP(文件传输协议)、SMTP(简单邮件传输协议)。TCP用于传输数据量大,可靠性要求高的应用。

UDP(用户数据报协议,User Data Protocol)

1)面向非连接的(正式通信前不必与对方建立连接,不管对方状态就直接发送,像短信,QQ),不能提供可靠性、流控、差错恢复功能。UDP用于一次只传送少量数据,可靠性要求低、传输经济等应用。

2) UDP支持的应用协议:NFS(网络文件系统)、SNMP(简单网络管理系统)、DNS(主域名称系统)、TFTP(通用文件传输协议)等。

总结:

TCP:面向连接、传输可靠(保证数据正确性,保证数据顺序)、用于传输大量数据(流模式)、速度慢,建立连接需要开销较多(时间,系统资源)。

UDP:面向非连接、传输不可靠、用于传输少量数据(数据包模式)、速度快。

TCP和UDP各包含了哪些协议

一、TCP协议

TCP是传输层协议,实现端到端(peer-to-peer)通信;在端主机上实现;屏蔽下层网络提供的服务质量的差别,为应用程序提供稳定可靠的服务。但不能实现组播功能。TCP对上层提供面向连接可靠的通信服务。

1.TCP连接管理

TCP是面向连接的协议;采用“三次握手”(three-way handshake) 方式来建立连接。工作过程用下图表示:

在TCP协议中用一个发送方的序号和一个接收方的序号合起来唯一地标识一条连接。

2.TCP报文格式

源端口和目的端口:都是16个比特,分别表示发送方和接收方的端口号。端口号和IP地址构成套接字(socket)地址的主要内容。源端和目的端的套接字合起来唯一地表示一条连接。网络应用程序在通信时直接向套接字发送和接收数据。

序列号和确认号:都是32位的无符号整数,可以表示0-4G(232)字节的范围。其中,序列号表示数据部分第一个字节的序列号,而确认号表示该数据报的接收者希望对方发送的下一个字节的序号(即序号小于确认号的数据都已正确地被接收)。

头长度(HLEN):表示TCP报文头的长度。长度以32-bit为单位来计算。所以如果选项部分的长度不是4个字节的整数倍,则要加上填充(padding)。

保留域:紧接在头长度字段后有6个比特,应该把它设置为0。

再后则是6个标志位。标志位特定的含义:

URG(urgent)为紧急数据标志。如果它为1,则表示本数据报中包含紧急数据。此时紧急数据指

针表示的值有效。它表示在紧急数据之后的第一个字节的偏侈值(即紧急数据的总长度)。

ACK(acknowledge)为确认标志位。如果ACK为1,则表示报文中的确认号是有效的。否则,报文

中的确认号无效,接收端可以忽略它。

PSH(push)标志位。被置位后,要求发送方的TCP协议软件马上发送该数据报,接收方在收到数据后也应该立即上交给应用程序,即使其接收缓冲区尚未填满。

RST(reset)标志位。用来复位一条连接。RST标志置位的报文称为复位报文。一般情况下,如果TCP收到的一个报文明显不是属于该主机上的任何个连接,则向远端发送一个复位报文。

SYN(synchronous)标志位。用来建立连接,让连接双方同步序列号。如果SYN=1而ACK=0,则表示该数据报为连接请求,如SYN=1而ACK=1则表示是接受连接。

FIN(finish)标志位。表示发送方已经没有数据要传输了,希望释放连接。

窗口(window)字段。窗口表示的是从被确认的字节开始,发送方最多可以连续发送的字节的个数。接收方通过设置该窗口值的大小,可以调节源端发送数据的速度,从而实现流控。

校验和(checksum)域。是TCP协议提供的一种检错机制。与我们在前面的章节中学过的UDP协议类似,在计算校验和时不仅要计算TCP报文自身(报文头和数据),还要增加一些额外的信息内容 – 12个字节的“伪包头”。

二、UDP协议

用户数据报协议UDP(User Datagram Protocol)是无连接传输层协议,提供应用程序之间传送数据报的基本机制。

1.UDP报文的格式

每个UDP报文称为一个用户数据报:它分为两部分:头部和数据区。如图6-14是一个UDP报文的格式,报文头中包含有源端口和目的端口、报文长度以及UDP检验和。

源端口(Source Port)和目的端口(Destination Port)字段包含了16比特的UDP协议端口号,它使得多个应用程序可以多路复用同一个传输层协议 – UDP协议,仅通过不同的端口号来区分不同的应用程序。

长度(Length)字段记录了该UDP数据包的总长度(以字节为单位),包括8字节的UDP头和其后的数据部分。最小值是8(即报文头的长度),最大值为65,535字节。

UDP检验和(Checksum)的内容超出了UDP数据报文本身的范围,实际上,它的值是通过计算UDP数据报及一个伪包头而得到的。但校验和的计算方法与通用的一样,都是累加求和。