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

TCP与UDP的联系和区别

时间:2022-10-08 15:24:43浏览次数:49  
标签:UDP 16 主机 区别 TCP 数据 连接

TCP与UDP的区别

TCP 是面向连接的,UDP 是面向无连接的

UDP程序结构较简单

TCP 是面向字节流的,UDP 是基于数据报的

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

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

 

什么是面向连接,什么是面向无连接。

在互通之前,面向连接的协议会先建立连接,如 TCP 有三次握手,而 UDP 不会

 

 

UDP的特点

沟通简单,不需要大量的数据结构,处理逻辑和包头字段。

谁都可以传给它数据,它也可以传给任何人数据,甚至可以同时传给多个人数据。

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

UDP 的主要应用场景

 

需要资源少,网络情况稳定的内网,或者对于丢包不敏感的应用,比如 DHCP 就是基于 UDP 协议的。

不需要一对一沟通,建立连接,而是可以广播的应用。因为它不面向连接,所以可以做到一对多,承担广播或者多播的协议。

需要处理速度快,可以容忍丢包,但是即使网络拥塞,也毫不退缩,一往无前的时候

 

5、TCP的包头结构:

 

源端口 16位

目标端口 16位

序列号 32位

回应序号 32位

TCP头长度 4位

reserved 6位

控制代码 6位

窗口大小 16位

偏移量 16位

校验和 16位

选项  32位(可选)

这样我们得出了TCP包头的最小长度,为20字节。

 

UDP的包头结构:

源端口 16位

目的端口 16位

长度 16位

校验和 16位

 

TCP三次握手和四次挥手

1、TCP三次握手——建立连接

 

1)主机A通过向主机B 发送一个含有同步序列号的标志位的数据段给主机B ,向主机B 请求建立连接,通过这个数据段,主机A告诉主机B 两件事:我想要和你通信;你可以用哪个序列号作为起始数据段来回应我.

2)主机B 收到主机A的请求后,用一个带有确认应答(ACK)和同步序列号(SYN)标志位的数据段响应主机A,也告诉主机A两件事:我已经收到你的请求了,你可以传输数据了;你要用哪佧序列号作为起始数据段来回应我。

3)主机A收到这个数据段后,再发送一个确认应答,确认已收到主机B 的数据段:"我已收到回复,我现在要开始传输实际数据了。

这样3次握手就完成了,主机A和主机B 就可以传输数据了。

TCP四次挥手——断开连接

1)当主机A完成数据传输后,将控制位FIN置1,提出停止TCP连接的请求

2) 主机B收到FIN后对其作出响应,确认这一方向上的TCP连接将关闭,将ACK置1

3)由B 端再提出反方向的关闭请求,将FIN置1

4)主机A对主机B的请求进行确认,将ACK置1,双方向的关闭结束.

由TCP的三次握手和四次断开可以看出,TCP使用面向连接的通信方式,大大提高了数据通信的可靠性,使发送数据端和接收端在数据正式传输前就有了交互,为数据正式传输打下了可靠的基础

 

标签:UDP,16,主机,区别,TCP,数据,连接
From: https://www.cnblogs.com/zkzk111/p/16769024.html

相关文章

  • wait()和sleep()的区别
    一、sleep()和wait()的区别1、相同点sleep()和wait()都可以暂停线程的执行。2、不同点所在类不同sleep()是Thread类的静态方法。wait()是Object类的方法。锁释放不......
  • TCP和UDP的联系和区别
    一、联系   TCP/IP 是互联网相关的各类协议族的总称,比如:TCP,UDP,IP,FTP,HTTP,ICMP,SMTP 等都属于 TCP/IP 族内的协议。二、区别   1、TCP面向连接,UDP是无连接的,即......
  • qtreeview和qtreewidget的区别 使用总结 和选择
    这里指出3种方式的比较,说是3中编程架构也行,其实不仅仅针对tree显示结构,对table,list等同样适用。直接用qtreewidget,使用例子​​qtreeview和qtreewidget[ansys简单示例]-Java......
  • 1: TCP与UDP的联系与区别 2:网络字节序与主机字节序的转换函数实践。
    第一问:TCP/IP协议是一个协议簇,里面包括很多协议的,UDP只是其中的一个,之所以命名为TCP/IP协议,因为TCP、IP协议是两个很重要的协议,就用他两命名了。TCP/IP协议集包括应用层,......
  • java--基本类型值传递,和引用类型String,数组的区别
    //java语言:值传递//数据类型:基本类型:4种8类,参数传递:值传递//引用类型:String数组等,传递的是内存地址值,但String值不会改变,相当于常量池的数据重新给它赋值//参数类......
  • APS 与 MES 的区别是什么?
    APS与MES是两个不同的系统,所以不存在区别之说,但MES的生产计划排程可以由APS来提供,MES需要在"工厂各类生产资源条件"约束下对"接收自企业(ERP)的生产计划"进行工厂级的做"有......
  • TCP和UDP的区别和联系
    UDP与TCP的联系与区别:1、联系首先,这两个都是运输层协议;都是建立在ip之上的TCP叫做流式套接字,UDP是报文套接字为什么要在IP之上?  2、区别tcp基于连接、UDP......
  • CNC加工中心中几组常用指令的区别及编程技巧
    随着科技的发展和社会的进步,人们对产品的性能和质量要求越来越高,从而使数控机床应用已得到一定程度的普及,而高性能高效率的加工中心也逐渐成为社会所需。通过几年的加工中心......
  • Tensor和tensor的区别
    参考链接:https://blog.csdn.net/tfcy694/article/details/85338745https://blog.csdn.net/m0_52650517/article/details/120456732......
  • TCP与UDP的联系与区别
    TCP(TransmissionControlProtocol,传输控制协议)他是基于连接的协议,也就是说,在正式收发数据前,必须和对方建立可靠的连接。这说明TCP连接是一个非常复杂的过程,需要进行“三......