首页 > 其他分享 >TCP和UDP的联系与区别

TCP和UDP的联系与区别

时间:2022-10-07 18:25:18浏览次数:46  
标签:UDP 函数 区别 TCP IP地址 连接 socket


TCP和UDP是传输层的两个协议。
1、UDP的概念:
UDP(User Datagram Protocol 用户数据报协议):是OSI(Open System Interconnection 开放式系统互联)参考模型中一种无连接的传输层协议,提供面向事务的简单不可靠信息传送服务。UDP协议的主要作用是将网络数据流量压缩成数据包的形式。
 
UDP除了端口号,其他什么都没有,若没有这两个端口号,数据就不知道发送给哪个应用。
UDP特点:
不需要大量的数据结构,处理逻辑和包头字段
它不会建立连接,但是会监听这个地方,谁都可以传给它数据,它也可以传给任何人数据,甚至可以同时传给多个人数据。
不会根据网络的情况进行拥塞控制,无论是否丢包,它该怎么发还是怎么发。
2、TCP的概念:
TCP(Transmission Control Protocol 传输控制协议):是一种面向连接的、可靠的、基于字节流的传输层通信协议,使用三次握手协议建立连接、四次挥手断开连接。面向连接意味着两个使用TCP的应用(通常是一个客户端和一个服务器)在彼此交换数据包之前必须先建立一个TCP连接。在一个TCP连接中,仅有两方进行彼此通信,广播和多播不能用TCP。TCP 协议的作用是,保证数据通信的完整性和可靠性,防止丢包。TCP把连接作为最基本的对象,每一条TCP连接都有两个端点,这种端点我们叫作套接字(socket),端口号拼接到IP地址即构成了套接字。
 
TCP:首先,源端口和目标端口是不可少的。
接下来是包的序号。主要是为了解决乱序问题。不编好号怎么知道哪个先来,哪个后到
确认序号。发出去的包应该有确认,这样能知道对方是否收到,如果没收到就应该重新发送,这个解决的是不丢包的问题
状态位。SYN 是发起一个链接,ACK 是回复,RST 是重新连接,FIN 是结束连接。因为 TCP 是面向连接的,因此需要双方维护连接的状态,这些状态位的包会引起双方的状态变更
窗口大小,TCP 要做流量控制,需要通信双方各声明一个窗口,标识自己当前的处理能力。
TCP与UDP的区别:
1.基于连接与无连接
2.TCP要求系统资源较多,UDP较少;
3.UDP程序结构较简单
4.字节流模式(TCP)与数据报模式(UDP);
5.TCP保证数据正确性,UDP可能丢包
6.TCP保证数据顺序,UDP不保证
UDP应用场景:
1.面向数据报方式 2.网络数据大多为短消息 3.拥有大量Client 4.对数据安全性无特殊要求 5.网络负担非常重,但对响应速度要求高
具体编程时的区别
1.socket()的参数不同
2.UDP Server不需要调用listen和accept
3.UDP收发数据用sendto/recvfrom函数
4.TCP:地址信息在connect/accept时确定
5.UDP:在sendto/recvfrom函数中每次均需指定地址信息
6.UDP:shutdown函数无效
 
TCP:
TCP编程的服务器端一般步骤是:
1、创建一个socket,用函数socket();
2、设置socket属性,用函数setsockopt(); * 可选
3、绑定IP地址、端口等信息到socket上,用函数bind();
4、开启监听,用函数listen();
5、接收客户端上来的连接,用函数accept();
6、收发数据,用函数send()和recv(),或者read()和write();
7、关闭网络连接;
8、关闭监听;
TCP编程的客户端一般步骤是:
1、创建一个socket,用函数socket();
2、设置socket属性,用函数setsockopt();* 可选
3、绑定IP地址、端口等信息到socket上,用函数bind();* 可选
4、设置要连接的对方的IP地址和端口等属性;
5、连接服务器,用函数connect();
6、收发数据,用函数send()和recv(),或者read()和write();
7、关闭网络连接;
UDP:
与之对应的UDP编程步骤要简单许多,分别如下:
UDP编程的服务器端一般步骤是:
1、创建一个socket,用函数socket();
2、设置socket属性,用函数setsockopt();* 可选
3、绑定IP地址、端口等信息到socket上,用函数bind();
4、循环接收数据,用函数recvfrom();
5、关闭网络连接;
UDP编程的客户端一般步骤是:
1、创建一个socket,用函数socket();
2、设置socket属性,用函数setsockopt();* 可选
3、绑定IP地址、端口等信息到socket上,用函数bind();* 可选
4、设置对方的IP地址和端口等属性;
5、发送数据,用函数sendto();
6、关闭网络连接;
TCP与UDP区别总结:
1、TCP面向连接(如打电话要先拨号建立连接);UDP是无连接的,即发送数据之前不需要建立连接
2、TCP提供可靠的服务。也就是说,通过TCP连接传送的数据,无差错,不丢失,不重复,且按序到达;UDP尽最大努力交付,即不保 证可靠交付
3、TCP面向字节流,实际上是TCP把数据看成一连串无结构的字节流;UDP是面向报文的 UDP没有拥塞控制,因此网络出现拥塞不会使源主机的发送速率降低(对实时应用很有用,如IP电话,实时视频会议等)
4、每一条TCP连接只能是点到点的;UDP支持一对一,一对多,多对一和多对多的交互通信
5、TCP首部开销20字节;UDP的首部开销小,只有8个字节
6、TCP的逻辑通信信道是全双工的可靠信道,UDP则是不可靠信道

标签:UDP,函数,区别,TCP,IP地址,连接,socket
From: https://www.cnblogs.com/frizenors/p/16760203.html

相关文章

  • Exception和Error的区别
    转自:http://www.java265.com/JavaMianJing/202110/16348954831542.html 下文笔者收集的今天面试遇到的问题,如下所示:Exception同Error的不同之处1.Exception和Error都......
  • TCP digest
    TCP在网络OSI的七层模型中的第四层——Transport层,IP在第三层——Network层,ARP在第二层——DataLink层,在第二层上的数据,我们叫Frame,在第三层上的数据叫Packet,第四层的数据......
  • newInstance和new的区别(good)
    从JVM的角度看,我们使用关键字new创建一个类的时候,这个类可以没有被加载。但是使用newInstance()方法的时候,就必须保证:1、这个类已经加载;2、这个类已经连接了。而完成上面......
  • TCP与UDP的区别
    TCPTCP称为传输控制协议TransmissionControlProtocolTCP协议的特点:TCP是面向连接的协议连接方式是"三次握手",建立连接可以为数据传输的可靠性提供保证只......
  • 一个例子形象的理解协程和线程的区别
    一个例子形象的理解协程和线程的区别Talkischeap,showmethecode!所以,废话先不说,先上代码:首先写一个WebAPI接口///<summary>///测试接口///</summary>[RoutePrefix......
  • 一个例子形象的理解协程和线程的区别
    一个例子形象的理解协程和线程的区别Talkischeap,showmethecode!所以,废话先不说,先上代码:首先写一个WebAPI接口///<summary>///测试接口///</summary>[RoutePrefix......
  • Java中List和ArrayList的区别,为什么用接口来引用对象而不是类
    区别用几句话来简单概述就是:1、List是一个接口,而ArrayList是List接口的一个实现类。2、ArrayList类继承并实现了List接口。3、因此,List接口不能被构造,也就是我们说的不能......
  • TCP和UDP的联系与区别
    TCP    TCP是面向连接的协议,也就是说,在收发数据前,必须和对方建立可靠的连接。TCP仅支持单播传输,面向字节流,提供全双工通信,是可靠传输。    首先:TCP和UDP都是工作......
  • TCP和UDP的区别
    1.TCPTCP的全称是TransmissionControlProtocol,传输控制协议。其首部字节为20~60字节1.1特点面向连接传输是可靠的,保证了数据的正确性和数据顺序以字节流的形式进行......
  • 使用mod_cluster 与 mod_proxy 区别
    1.mod_cluster简介       mod_cluster和mod_jk,mod_proxy类似,是一个基于httpd的负载平衡项目能够代理请求给基于Tomcat网络服务器集群(支持任何独立的Tomcat,独立......