精华内容
下载资源
问答
  • tcp udp协议应用场景

    千次阅读 2012-11-27 20:25:15
    首先还是把协议特性说一下,明白...UDP协议是基于无连接的不可靠协议,没有控制手段,仅仅是将数据发送给对方,因此效率比TCP要高。 基于上述特性,不难得到结论,TCP协议适用于对效率要求相对低,但对准确性要求相对
    首先还是把协议特性说一下,明白了特性自然知道应用场合了,嘿嘿!两种协议都是传输层协议,为应用层提供信息载体。TCP协议是基于连接的可靠协议,有流量控制和差错控制,也正因为有可靠性的保证和控制手段,所以传输效率比UDP低;UDP协议是基于无连接的不可靠协议,没有控制手段,仅仅是将数据发送给对方,因此效率比TCP要高。
    
    基于上述特性,不难得到结论,TCP协议适用于对效率要求相对低,但对准确性要求相对高的场景下,或者是有一种连接概念的场景下;而UDP协议适用于对效率要求相对高,对准确性要求相对低的场景。
    
    好了,现在回到你的问题,举几个应用的例子。TCP一般用于文件传输(FTP HTTP 对数据准确性要求高,速度可以相对慢),发送或接收邮件(POP IMAP SMTP 对数据准确性要求高,非紧急应用),远程登录(TELNET SSH 对数据准确性有一定要求,有连接的概念)等等;UDP一般用于即时通信(QQ聊天 对数据准确性和丢包要求比较低,但速度必须快),在线视频(RTSP 速度一定要快,保证视频连续,但是偶尔花了一个图像帧,人们还是能接受的),网络语音电话(VoIP 语音数据包一般比较小,需要高速发送,偶尔断音或串音也没有问题)等等。
    
    作为知识的扩展,可以再说一些其他应用。比如,TCP可以用于网络数据库,分布式高精度计算系统的数据传输;UDP可以用于服务系统内部之间的数据传输,因为数据可能比较多,内部系统局域网内的丢包错包率又很低,即便丢包,顶多是操作无效,这种情况下,UDP经常被使用。

    展开全文
  • 目录 一、运输服务介绍 基本概念 三类端口号 ​二、TCP协议(Transmission control protocol)​ ...三、UDP协议(user datagram protocol) 一、运输服务介绍 基本概念 *运输层是 OSI 模型的第...

    目录

    一、运输服务介绍

    基本概念

    三类端口号

    ​二、TCP协议(Transmission control protocol)​

    TCP 协议特征

    TCP连接标识

    TCP连接管理

    TCP可靠传输方法

    TCP流量控制​

    TCP拥塞控制

    TCP计时器​

    三、UDP协议(user datagram protocol)


    一、运输服务介绍

    基本概念

    *运输层是 OSI 模型的第四层, 它承上启下模型。是整个网络协议体系的核心。

    *运输层在源计算机和目的计算机之间提供可靠的,经济的数据传送服务。​

    ​*服务是运输实体完成的,它使用网络层提供的服务,独立于所使用的物理网络(无关)

    *​使用运输服务的实体可以是会话实体,也可以直接是应用实体。

     

     

    运输层为相互通信的应用进程提供了逻辑通信(不必关心具体实现)

     

     

    由于进程的创建和撤销都是动态的,发送方几乎无法识别其他机器上的进程,我们往往需要目的主机提供的功能来识别终点。解决这个问题的方法就是在运输层使用协议端口号,简称端口(port),我们可以把端口想象是通信的终点,因为只要把传送的报文交到目的 主机的某一个合适的目的端口,剩下的工作由TCP来完成。

    三类端口号

    熟知端口:0-1023

    登记端口:1024-49151 为没有熟知端口号的应用程序使用,使用这个范围端口号需要在IANA登记

    短暂端口号:49152-65535留给客户进程选择短暂使用​

    ​二、TCP协议(Transmission control protocol)​

    TCP 协议特征

    ​TCP是面向连接的运输层协议,每一条TCP连接只能有两个端点(endpoint),每一条TCP连接只能是点对点。在进行数据传输时,首先必须建立一条运输链接,数据传输完成之后把连接释放掉。TCP提供可靠交付的服务,全双工通信面向字节流。

     

     

    TCP连接标识

    套接字(socket):主机的IP地址和一个16bit的TCP端口号(port)

    四元组:一条TCP连接是由发送方套接字和接收方套接字唯一标识的,即四元组。

     

    TCP PDU为TCP数据段

    -一个TCP数据段由一个20字节的头部、一个可选部分和一个用户数据部分组成​

     

     

     

    其中顺序号确认号为了标识字节的序号,用于拆分和合并字节流

    TCP头长:表明TCP头占用的字节数

    ​URG: URG=1标识紧急数据,告诉系统需要尽快传送

    ACK:ACK=1确认号字段有效

    PSH:PSH=1,尽快交付接收应用进程,不要等整个缓存填满再交付

    RST:RST=1,TCP连接出现严重差错,必须释放连接,重新建立连接

    SYN:SYN=1​建立连接,标识这是一个连接请求或接受报文

    FIN:FIN=1释放连接,表明此报文段发送端的数据已经发送完毕

    ​窗口大小:用来让对方设置发送窗口的依据,单位为字节,表示在确认字节后还可发送多少个字节

    紧急指针:指出在本报文段中紧急数据共有多少个字节(紧急数据放在报文段数据的最前面)​​

    可选字段:长度可变,TCP最初只定义了一种选项,MSS最大报文段长度,告诉对方TCP“我的缓存所能接收的报文段的数据字段的最大长度是MSS字节”默认为536字节

    数据:为用户数据,可变长度。因为IP分组长度限制为64K,所以TCP最大有效数据载荷长度为65535-20-20=65495字节

    校验和:

     

     

    TCP连接管理

     

     
     

    TCP可靠传输方法

    TCP流量控制​

    TCP拥塞控制

    TCP计时器​

    ​(略)

    三、UDP协议(user datagram protocol)

    用户数据报UDP协议,是一种无连接方式的、不可靠的运输协议

    -不需要连接建立和释放

    -不支持流量控制、拥塞控制

    -传输过程中可能丢失、失序、延迟

    -支持广播和组播

    -UDP实际上是在IP层上附加了简单的多路复用功能,提供端到端的数据传输服务

     

     

    展开全文
  • 基于TCP UDP 协议的聊天小DEMO

    千次阅读 2014-04-30 08:40:03
    利用TCPUDP协议,实现基于Socket的小聊天程序(初级版) TCP TCP (Transmission Control Protocol)属于传输层协议。其中TCP提供IP环境下的数据可靠传输,它提供的服务包括数据流传送、可靠性、有效...

    利用TCP和UDP协议,实现基于Socket的小聊天程序(初级版)

    TCP

    TCP (Transmission Control Protocol)属于传输层协议。其中TCP提供IP环境下的数据可靠传输,它提供的服务包括数据流传送、可靠性、有效流控、全双工操作和多路复用。通过面向连接、端到端和可靠的数据包发送。通俗说,TCP支持的应用协议主要有:Telnet、FTP、SMTP等

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

     

    首先我们来看看用TCP实现聊天程序

    实现聊天程序我们需要一个服务端一个客户端来模拟实现,我们首先来建立服务器端,直接贴代码,如下:

    复制代码
     1            //首先建立一个套接字(服务器端)
     2             Socket socketServer = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
     3             //将套接字绑定到本地的IP和端口
     4             IPEndPoint endPoint = new IPEndPoint(IPAddress.Any, 9999);
     5             //绑定套接字
     6             socketServer.Bind(endPoint);
     7             //输出语句 服务已经启动
     8             Console.WriteLine("=====TCP Server Is OK======\r\n ===IP:" + endPoint.Address + "  Port:" + endPoint.Port+"===");
     9             //开始监听
    10             socketServer.Listen(10);
    11             //接受消息并返回的新的套接字对象
    12             Socket sk = socketServer.Accept();
    复制代码

    简要介绍下个别变量,方法的作用:

    socketServer:实例化一个服务端的Socket实例

    endPoint:网络终结点,定义了IP和Port

    Bind方法:用于将Socket实例绑定到该网络终结点上

    Listen方法:监听端口,参数为监听序列的长度

    Accept方法:接受通信,返回一个新的Socket对象,然后之后的通信就交由该新的对象来进行,socketServer就相当于公司的前台,只负责接待,具体的事务是通过它交由其他人来执行(个人理解) 

     

    然后是服务器端接受数据的代码,如下:

    复制代码
     1             //接受数据
     2 
     3             //新建一个字节数组
     4             byte[] recveMsg=new byte[1024*1024];
     5             //使用receive方法接受发送到服务器端的数据
     6             int bytes = sk.Receive(recveMsg,SocketFlags.None);
     7             //将数据进行编码
     8             string receive = System.Text.Encoding.UTF8.GetString(recveMsg, 0, bytes);
     9             //将信息打印到控制台
    10             Console.WriteLine(receive);
    复制代码

    简要解释下个别变量的作用:

    recveMsg:这是一个字节数组,因为在接受数据时,我们需要将接收到的数据存放到字节数组中,所以我们要首先定义一个字节数组,这里我给了它1024*1024的大小

    bytes:这是一个int型变量,作用就是用来接收Socket用Receive接受到数据的实际长度,但为什么我们需要这个变量呢,因为在后一行代码中,我们需要将字节数组转换为字符串来进行输出,如果没有这个变量来定义大小,我们每次都会把1024*1024的字节长度转换成字符串,所以往往有时候接收到的长度没有1024*1024大小,

    因此会造成无用的转换。

     

    然后就是发送数据,贴上代码:

    服务器端发送数据

    简要的解释下个别变量的作用:

    message:这个很显然,我们用message定义了一个字符串,来模拟要发送的数据

    sendMsg:刚上面说了,接受数据时我们会用一个字节数组来接受,然后将数据存到该数组中,同理,发送也一样,发送的数据也要求是字节数组,所以我们同样定义一个字节数组来存放要发送的数据。

    sendBytes:同样一个int型的变量,来接受Socket用Send发送数据的实际长度(大小)。 

     

    好,这样呢,我们的服务器端就搭建好了,这时我们需要一个客户端,所以下面我们来创建客户端

    同样,首先也要新建一个Socket,并绑定IP和Port,再连接到远程主机,代码如下:

    客户端Socket

     简要解释下个别变量,方法的作用:

    socketClient:实例化一个客户端的Socket对象

    endPoint:网络终结点,这里用了127.0.0.1这个IP地址(回环地址),端口号必须和服务器端的相同

    Connect方法:已经定义好了Socket对象和网络终结点了,这里就用Connect方法来实现和远程主机建立连接了

     

    同样客户端也要进行发送和接受数据,由于两个方法和服务器端端的收发数据方法一致,这里就不再重复赘述了,直接贴上代码:

    发送数据: 

    客户端发送数据

    接受数据:

    客户端接受数据

     

     

     这样,我们的客户端也就搭建好了,所以至此,我们的小聊天程序的客户端和服务器端都搭建完毕,可以来运行看效果了,运行时,我们必须首先运行服务器端,然后再开启客户端进行远程连接,首先开启服务器端:显示【TCP Server Is OK】并显示了IP和Port,表示服务器端服务已成功开启,图如下:

     接下来运行客户端程序,客户端已开启就会连上服务器端,并接受到服务器发送过来的数据,运行效果如图:

     

    此时,服务器端也应该接受到了来自客户端的数据,查看,果然收到了数据,如图:

     

    至此,一个基于TCP的Socket的简单通信就完成了,,,,下面我们要开看看,用UDP同样来实现这个效果。。。

     

     UDP

     

    UDP 是User Datagram Protocol的简称, 中文名是用户数据报协议,是 一种无连接的传输层协议,提供面向事务的简单不可靠信息传送服务,与TCP不同的是,UDP是面向无连接的,它没有TCP传输前的“三次握手”的机制,是一种不可靠的传输机制。。

    我们再来看看用UDP实现小聊天程序吧,,, 

    同TCP一样,UDP同样需要一个服务器端和一个客户端来模拟对话,我们就用两个控制台应用程序实现,首先我们来搭建服务器端,贴上代码:

    复制代码
                //第一步 定义一个Socket
                Socket socketServer = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
                
                //第二步 设置一个网络节点
                IPEndPoint endPoint = new IPEndPoint(IPAddress.Any, 8888);
                
                //将socketServer绑定到网络节点上
                socketServer.Bind(endPoint);

                //【Tcp的时候需要监听 但DUP不需要监听】
                
    //socketServer.Listen(10);            

    //输出一句话 提示服务已开启
                Console.WriteLine("===UDP Server Is OK===\r\n IP:" + endPoint.Address + "  Port:" + endPoint.Port);
    复制代码

    【解释】:与TCP一样,实例化一个Socket对象,然后新建一个网络终结点,并指定IP和Port,然后将Socket对象绑定到该终结点上

    【不同】:由于UDP是面向无连接的,所以在UDP中并不需要监听机制

     

     大家还记得上面TCP接受到通信时是怎样处理的么??是的,Accept方法返回了一个新的Socket对象,之后由该对象进行通信,那UDP呢?先看代码吧。。

    新网络地址

     原来在UDP中,我们首先会实例化一个新的网络地址(该地址的IP为任意IP,端口号为0,表示由系统分配端口),在收发数据时,将该网络地址引用到主机的网络地址上,之后我们就可以通过这个网络地址来收发数据了

    接下来开始收发数据,首先接受数据的代码:

    UDP接受数据

    【解释】:同样,我们在接受数据的时候要将数据存放到一个字节数组中,所以我们仍然会定义一个字节数组data

    【不同】:1).我们除了存放接收到的数据,我们还要将远程主机的通信节点信息存储下来,注意参数类型ref ,为引用类型,也就是将该类型用指针指向了主机节点类型的地址。

                    2).接受数据的方法,TCP中为Receive方法,UDP中为ReceiveFrom方法

     

    接下来看看发送数据的代码,如下:

    UDP发送数据

    【解释】:我们发送数据时,定义了一个字符串作为模拟发送数据,当然,它发送数据也是要求为字节数组,同样的我们做了转换

    【不同】:1).在TCP中我们发送数据,直接将字节数组作为参数发送就可以了,但在UDP中,我们多了一个参数,就是我们之前指定的新的终结点,由于在前面的接收数据代码中,我们已经用

    该参数保存了远程主机通信节点的信息了,所以我们在这里发送数据的时候,直接将数据发送到该网络节点就可以了

                    2).TCP中的发送方法为Send,而在UDP中为SendTo。

     

    同时我们还实现循环收发数据,思路很简单,就是把收发数据放在了一个死循环中,代码如下:

    循环收发数据

     好,,这样我们UDP的服务器端也搭建完成了,,接下来同理,搭建客户端。。

    实现原理和服务器端一样,所以就不解释了,直接上代码吧:

    UDP客户端


    好了,,这样服务器端和客户端都搭建完毕,接下来就是看看运行效果了,直接上图

    首先开启服务器端:

    我们看到【UDP Server Is Ok】和IP,Port,证明此时UDP服务器端已成功开启了,,,

    接下来开启客户端:


    客户端开启成功,提示按任意键开始发送数据。。

    接下来我们在客户端连续给服务器发送三条消息

    客户端:

    服务器端:


    接下来我们在客户端输入“exit”请求停止通信,效果:

     输入"exit“ 之后,客户端就提示 "Stopping Client”,这样就停止通信了,,,

     

    哈哈,,就这样,通过TCP和UDP实现通信聊天程序就完成了,,当然这个是最基础的通信例子,,在下一篇博客中将用窗体程序和多线程来实现聊天程序,尽请关注,,,,

     

    这里附上小Demo的源代码:

    /Files/holyknight-zld/SocketDemo/SocketDemo.rar

    展开全文
  • TCP UDP协议的优缺点

    千次阅读 2011-10-10 19:24:21
    TCP:传输控制协议,提供的是面向连接的,可靠的字节流服务,TCP提供超时重发丢弃重复数据,检验数据,流量控制等功能,保证数据能一端传送到另一端。     UDP:用户数据协议,是一个简单的面向数据报的运输层...

    TCP:传输控制协议,提供的是面向连接的,可靠的字节流服务,TCP提供超时重发丢弃重复数据,检验数据,流量控制等功能,保证数据能一端传送到另一端。

     

     

    UDP:用户数据协议,是一个简单的面向数据报的运输层协议,UDP不提供可靠性,他只是把应用程序传给IP层的数据报发送出去,但是并不保证他能到达母的地,因为UDP协议在传送数据之间不用在客户端和服务器段建立连接,所以传送数据的速度非常快。。。

     

     

     

     

    展开全文
  • 高并发网络编程2.1.1 TCPUDP协议_batch

    千次阅读 2019-12-20 16:54:12
    RFC就是tcp/ip协议的标准文档,在这里我们可以看到RFC那长长的定义列表,现在它一共有4000多个协议的定义,当然,我们所要学习的,也就是那么十几个协议而已。 端口号(port) 注意,这个号码是用在TCPUDP上...
  • Ethernet IP TCP UDP 协议头部格式

    千次阅读 2015-03-25 10:33:25
    The UDP header structure is shown as follows: UDP头部8 bytes 16 32 bits Source port Destination port Length Checksum ...
  • tcp udp协议里使用bind函数的理解

    千次阅读 2017-02-08 09:17:56
    如国取消注释掉bind那段代码,相当于udp处于client模式,发送端口系统随机分配,目的端口为SERVER_PORT,只有当本机先发送数据,对端才能发送数据过来。 如果执行bind段代码,udp处于server模式,接收端口为...
  • Ethernet IP TCP UDP 协议头部格式及大小

    千次阅读 2014-11-25 07:18:33
    The UDP header structure is shown as follows: UDP头部8 bytes 16 32 bits Source port Destination port Length Checksum ...
  • 终于懂了TCPUDP协议区别

    万次阅读 多人点赞 2020-03-26 12:03:28
    终于懂了TCPUDP协议区别
  • tcp协议和udp协议区别TCP and UDP are two protocols that are part of the transport layer in a TCP/IP model of data transmission. Both share the same core function – transmitting data packets from the ...
  • 深入理解TCPUDP协议及两者的区别

    万次阅读 多人点赞 2018-11-14 13:03:24
    一、TCP协议: 位于传输层, 提供可靠的字节流服务。所谓的字节流服务(Byte Stream Service) 是指, 为了方便传输, 将大块数据分割成以报文段(segment) 为单位的数据包进行管理。 而可靠的传输服务是指, 能够...
  • 首先咱们弄清楚,TCP协议和UDP协议TCP/IP协议的联系,很多人犯糊涂了, 一直都是说TCP协议与UDP协议的区别,我觉得这是没有从本质上弄清楚网络通信! TCP/IP协议是一个协议簇。里面包括很多协议的,UDP只是其中的...
  • tcpudp协议的相似Networks are used to transmit data over the world. There is a lot of network protocols in use. But most known and used protocols are IP, TCP, UDP. IP lives different flat but TCP and...
  • TCP协议与UDP协议

    千次阅读 2019-02-19 19:30:54
    首先咱们弄清楚,TCP协议和UCP协议与TCP/IP协议的联系,很多人犯糊涂了,一直都是说TCP/IP协议与UDP协议的区别,我觉得这是没有从本质上弄清楚网络通信! TCP/IP协议是一个协议簇。里面包括很多协议的。UDP只是其中...
  • TCP协议和UDP协议

    2017-06-07 11:28:00
    TCP协议和UDP协议 UDP协议 UDP是无连接通信协议,即在数据传输时,数据的发送端和接收端不建立逻辑连接。简单来说,当一台计算机向另外一台计算机发送数据时,发送端不会确认接收端是否存在,就会...
  • 终于把TCP协议与UDP协议给整明白了

    万次阅读 多人点赞 2020-07-04 21:35:16
    网络编程有三个要素,分别是IP地址、端口号和通信协议,本文主要讲述的是TCPUDP这两种通信协议,以及编程的实现。
  • TCPudp协议

    2017-10-10 09:22:07
    1:在网络7层协议中,如果想使用UDP协议达到TCP协议的效果,可以在哪层做文章? 答:1)TCP是面向连接的运输层协议,udp是无连接的 2)TCP连接只能有两个端点,UDP支持一对一、一对多、多对一和多对多的通信。 3)TCP...
  • TCPUDP协议

    千次阅读 2018-11-29 22:45:25
    重点理解 CTP部首格式与三次握手, TCP确切与重传机制 ...在简化的计算机网络OSI模型中,它完成第四层传输层所指定的功能,用户数据报协议UDP)是同一层内 [1] 另一个重要的传输协议。在因特网协议族(Intern...
  • TCP协议与UDP协议的区别  首先咱们弄清楚,TCP协议和UCP协议与TCP/IP协议的联系,很多人犯糊涂了,一直都是说TCP/IP协议与UDP协议的区别,我觉得这是没有从本质上弄清楚网络通信! TCP/IP协议是一个协议簇。里面...
  • 一、TCP协议 TCP协议提供的服务 TCP协议的报文段 TCP协议的连接过程(三次握手、...二、UDP协议 UDP协议提供的服务 UDP协议的报文段 三、TCP与UDP的区别 四、TCP与UDP常用的端口以及端口号 ...
  • TCP/UDP协议

    2017-04-08 09:18:41
    TCP (Transmission Control Protocol)和UDP(User Datagram Protocol)协议属于传输层协议。下面先分别进行介绍,然后会提到两者相关的常见问题: TCP: Transmission Control Protocol 传输控制协议:是一种面向连接...
  • Modbus RTU协议和TCP/UDP协议的区别

    千次阅读 2018-08-31 11:31:41
    Modbus通讯协议和TCP/UDP协议的区别: 1、Modbus协议属于应用层(OSI模型第7层)协议,TCP/UDP协议属于传输层(OSI模型第4层)协议,两者层级不是并列关系。 打个比喻,Modbus协议就像公司里的总经理,TCP/UDP协议...
  • TCP协议和UDP协议特性区别总结: (1)TCP协议在传送数据段的时候要给段标号;UDP协议不 (2)TCP协议可靠;UDP协议不可靠 (3)TCP协议是面向连接;UDP协议采用无连接 (4)TCP协议负载较高,采用虚电路;UDP...
  • DNS用的是TCP协议还是UDP协议

    万次阅读 2018-04-28 08:32:58
    DNS占用53号端口,同时使用TCPUDP协议。那么DNS在什么情况下使用这两种协议?DNS在区域传输的时候使用TCP协议,其他时候使用UDP协议。DNS区域传输的时候使用TCP协议:1.辅域名服务器会定时(一般3小时)向主域名...
  • TCPUDP 协议区别 UDP: 传送数据前不需要先建立连接,远地主机在收到 UDP 报文后,也不需要给出任何确认。虽然 UDP 不保证可靠的交付,但在某些情况下,UDP 确实是一种高效的通信方式,如:IM、语音、视频、直播等...
  • TCPUDP协议的区别

    2017-05-08 10:33:42
    TCP协议与UDP协议的区别    首先咱们弄清楚,TCP协议和 style="color: black;">UCP协议与TCP/IP协议的联系,很多人犯糊涂了,一直都是说TCP/IP style="color: black;">协议与UDP协议的区别,我觉得...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 39,118
精华内容 15,647
关键字:

tcpudp协议