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

TCP和UDP联系与区别

时间:2022-10-08 21:24:22浏览次数:56  
标签:UDP 函数 区别 TCP IP地址 连接 socket

TCP和UDP是传输层的两个协议

1、UDP的概念:

UDP(User Datagram Protocol用户数据报协议):是OSI(Open System Interconnection开放式系统互联)参考模型中一种无连接的传输层协议,提供面向事务的简单不可靠信息传送服务。UDP协议的主要作用是将网络数据流量压缩成数据包的形式。

UDP除了端口号,其他什么都没有,若没有这两个端口号,数据就不知道发送给哪个应用。

2.UDP特点:

1. 不需要大量的数据结构,处理逻辑和包头字段

2. 它不会建立连接,但是会监听这个地方,谁都可以传给它数据,它也可以传给任何人数据,甚至可以同时传给多个人数据。

3. 不会根据网络的情况进行拥塞控制,无论是否丢包,它该怎么发还是怎么发。

3.TCP的概念:

       TCP(Transmission Control Protocol  传输控制协议):是一种面向连接的、可靠的、基于字节流的传输层通信协议,使用三次握手协议建立连接、四次挥手断开连接。面向连接意味着两个使用TCP的应用(通常是一个客户端和一个服务器)在彼此交换数据包之前必须先建立一个TCP连接。在一个TCP连接中,仅有两方进行彼此通信,广播和多播不能用TCP。TCP 协议的作用是,保证数据通信的完整性和可靠性,防止丢包。TCP把连接作为最基本的对象,每一条TCP连接都有两个端点,这种端点我们叫作套接字(socket),端口号拼接到IP地址即构成了套接字。

TCP:首先,源端口和目标端口是不可少的。接下来是包的序号。主要是为了解决乱序问题。不编好号怎么知道哪个先来,哪个后到  
确认序号。发出去的包应该有确认,这样能知道对方是否收到,如果没收到就应该重新发送,这个解决的是不丢包的问题状态位。SYN 是发起一个链接,ACK 是回复,RST 是重新连接,FIN 是结束连接。因为 TCP 是面向连接的,因此需要双方维护连接的状态,这些状态位的包会引起双方的状态变更窗口大小,TCP 要做流量控制,需要通信双方各声明一个窗口,标识自己当前的处理能力。

4.TCP与UDP的区别:

1.基于连接与无连接  

2.TCP要求系统资源较多,UDP较少;  

3.UDP程序结构较简单  

4.字节流模式(TCP)与数据报模式(UDP);  

5.TCP保证数据正确性,UDP可能丢包  

6.TCP保证数据顺序,UDP不保证

5.UDP应用场景:  
1.面向数据报方式  

2. 网络数据大多为短消息  

3. 3.拥有大量Client  

4. 4.对数据安全性无特殊要求  

5. 5.网络负担非常重,但对响应速度要求高

6.具体编程时的区别  
1.socket()的参数不同

2.UDP Server不需要调用listen和accept

3.UDP收发数据用sendto/recvfrom函数

4.TCP:地址信息在connect/accept时确定

5.UDP:在sendto/recvfrom函数中每次均需指定地址信息

6.UDP:shutdown函数无效

 7.TCP编程的服务器端一般步骤是:

1、创建一个socket,用函数socket();

2、设置socket属性,用函数setsockopt(); 可选

3、绑定IP地址、端口等信息到socket上,用函数bind();

4、开启监听,用函数listen();

5、接收客户端上来的连接,用函数accept();

6、收发数据,用函数send()和recv(),或者read()和write();

7、关闭网络连接;

8、关闭监听;

8.TCP编程的客户端一般步骤是:

1、创建一个socket,用函数socket();

2、设置socket属性,用函数setsockopt();* 可选

3、绑定IP地址、端口等信息到socket上,用函数bind();* 可选

4、设置要连接的对方的IP地址和端口等属性;

5、连接服务器,用函数connect();

6、收发数据,用函数send()和recv(),或者read()和write();

7、关闭网络连接;

9.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、关闭网络连接;

10.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/Chenyuyan123/p/16770239.html

相关文章

  • .NET Core和.NET Framework中DateTime.Now的区别
    今天和医院的微信公众号接口对接,需要传当前时间,我随手写了一个DateTime.Now传了过去,过了一会那边说时间格式不对,原来.NETCore中DateTime.Now的格式是2022/10/08下午04......
  • web 开发里 SSR,CSR 和 SSG 的区别
    本文介绍这三种Web前端开发领域中的术语的区别。CSR-ClientSideRendering一种在浏览器上执行JavaScript以生成DOM并在挂载后显示内容的方法。页面初始加载不......
  • TCP与UDP的联系与区别
    联系:TCPTCP(TransmissionControlProtocol,传输控制协议)是面向连接的协议,也就是说,在收发数据前,必须和对方建立可靠的连接。TCP仅支持单播传输,面向字节流,提供全双工通信,是......
  • Lambda表达式实现方式、标准格式、练习、省略模式、注意事项及和匿名内部类的区别
    目录​​一、Lambda表达式实现方式​​​​二、Lambda表达式的标准格式​​​​三、Lambda表达式练习​​​​四、Lambda表达式的省略模式​​​​五、Lambda表达式的注意事......
  • UDP发送数据、接收数据及UDP通信程序练习
    目录​​一、UDP发送数据​​​​二、UDP接收数据​​​​三、UDP通信程序练习​​一、UDP发送数据Java中的UDP通信:●UDP协议是一种不可靠的网络协议,它在通信的两端各建立......
  • TCP发送数据、接受数据及TCP通信程序练习
    目录​​一、TCP发送数据​​​​二、TCP接收数据​​​​三、TCP通信程序练习​​一、TCP发送数据Java中的TCP通信:Java对于基于TCP协议的网络提供了良好的封装,使用Socket对......
  • Ubuntu系统中环境变量设置两种方法,有什么区别?
    什么方法对/etc/profile进行变量的加入,相当于Windows当中的用户变量,另外一个就是~/.bashrc,相当于系统环境变量的设置,那么他们有什么区别?如何进行使用呢?区别与作用:/et......
  • 110、120、119 的警铃有何区别?
    这是有国家标准的,GB8108-1999。常用的就前四种。主要就是声调变换的周期不一样。消防车的最长,高低转换要三到五秒。警车的最短,一秒变两三次。至于频率上的不同,不做......
  • npm i -D和-s及-g以及–save 的使用区别
    https://blog.csdn.net/qq_51066068/article/details/125872774npm相信大家都很熟悉了,我们在项目中必须会用到的,但是每次用的时候就直接按照文档操作了,也没有搞清楚-D,......
  • SSL VPN和IPsec VPN的区别
    近几十年来,远程工作能够在办公室外完成任务可以提高生产力和灵活性,这就是为什么每年都有更多雇主接受远程工作的原因。为了使远程工作有效,员工必须能够在任何地方访问其公司......