×

udp协议和tcp协议的区别 协议

udp协议和tcp协议的区别(如何通俗地解释TCP和UDP协议和HTTP、FTP、SMTP等协议之间的区别)

admin admin 发表于2023-05-28 08:35:31 浏览58 评论0

抢沙发发表评论

本文目录

如何通俗地解释TCP和UDP协议和HTTP、FTP、SMTP等协议之间的区别

不邀自来,通信方面的专业问题我来回答一下:

要想通俗的解释这些协议的区别,就得知道这些协议的用途和原理,其实题主所问的这些协议最大的不同就是他们在OSI层的位置不一样,同一层的协议如TCP和UDP原理和用途都不一样,下面我们来看一下:

应用层

  • 用途及定义:提供OSI用户服务,已确定进程之间的通信性质,我们上网的请求数据就是就是在这层加以封装传递给服务器以获得我们所需的数据和资源;
  • HTTP:(HyperText Transfer Protocol,超文本传输协议),基于TCP,是用于从WWW服务器传输数据到本地浏览器的协议,是世界上使用最广泛的协议之一。
  • FTP:(File Transfer Protocol,文件传输协议),用于Internet上控制文件的双向传输,我们通常下载的文件就是FTP传输协议。
  • SMTP:(Simple Mail Transfer Protocol,简单的邮件传输协议),通常用作邮件传输,用它来控制邮件的中转方式,用于将邮件从源地址发送到目的地址的协议;

传输层

  • 用途及定义 为会话层实体提供透明、可靠的数据传输服务,保证端到端的数据完整性;选择网络层的最适宜的服务;
  • TCP:(Transmission Control Protocol 传输控制协议),TCP是一种面向连接的可靠传输协议,它位于osi的传输层,通过三次握手,序号确认,拥塞控制,数据校验等机制,为应用层数据提供可靠的传输信道。
  • UDP:(User Datagram Protocol,用户数据包协议),是一种无连接的传输层协议,提供面向事务的简单的不可靠传输,主要用于视频等对数据准确性不高的场景。

总结

综上,这些协议最大的不同就是所处OSI 的位置不同,此外位于同一层的协议可能用途不同,但这些都是为了通信服务的协议。

如果我的回答对你有帮助,请您点赞转发加关注,你的鼓励是我坚持的动力,也可以留言一起交流成长。

什么是网络,了解什么是IP、TCP协议、UDP协议、http协议

不邀自来,通信协议方面的问题我来回答一下:

IP,TCP,UDP,HTTP都属于网络通信协议,而网络是通信的载体,是一个范围很广的词语,下面我们分类解释一下这些专业术语或专业名词:

什么是网络

  • 定义:网络在生活中司空见惯,通常是指互联网,即将很多台计算机设备连接在一起形成一个网络,将许多这样的网络相互连接起来形成了覆盖全球型的互联的网络,我们通过网络来获取自己所需要的信息。
  • 网络的分类:
  1. 局域网:一般限定在较小的范围内(《10km),通常使用有线的连接方式;
  2. 城域网:也叫城际网,范围一般限定在一座城市,范围在10km-100km
  3. 广域网:全球网络,跨洲,跨国;
  4. 个人网:就是个人将电子设备用无线网连接起来形成的网络,也叫WPAN,范围在10m内。

众所周知,IP,UDP,TCP,HTTP都是通信协议,IP协议位于OSI的网络层,TCP,UDP位于传输层,HTTP属于应用层,下面具体看一下:

什么是IP

  • 广义上来讲:就是位于OSI层的网络层,网络层介于数据链路层和传输层之间,负责将数据流从一个网络(源网络)传输到另一个网络(目的网络),其通过IP来寻址传输。
  • 狭义上来说:仅指IP地址,其由两部分构成,IP地址=网络地址+主机地址,网络地址标识某个地址段,主机地址标识该网络地址内的某台主机,其被分为A,B,C,D四类。
  • IP可靠性:IP没法提供可靠的数据传输,网络层的报文都是明文传输;
  • IP首部字段:主要有IP源地址,IP目的地址等构成。

什么是TCP/UDP

  • TCP/UDP都位于OSI层的传输层,其主要作用是提供端到端的通信,其通过端口号来将数据传给指定的应用程序。
  • UDP:非面向连接的非可靠传输协议,主要用于视频和电话会议等对数据正确性不高的场景,这主要是UDP延时较少。
  • TCP:是面向连接的可靠性传输协议,通过三次握手,超时重传,序号确认,拥塞控制等机制提供可靠的数据传输服务。

什么是HTTP

  • HTTP(HyperText Transfer Protocol,超文本传输协议):是应用层协议,通信的数据只有经过应用层的处理数据才变得 比较有意义,HTTP协议是当前使用最广泛的协议其中www文件都必须遵守这个协议;
  • HTTP请求报文组成:请求行,请求头(Header),请求实体(Body);
  • HTTP响应报文组成:响应行,响应头(Header),相应实体(Body);
  • HTTP的方法:GET、POST、HEAD、OPTIONS、DELETE、TRACE、PUT等,最常用的就是POST和GET;
  • HTTP的可靠性:(1)明文传输(2)无法验证对方身份(3)数据容易被篡改;

我的回答对你有帮助的话,请点赞转发加关注,您的鼓励是我坚持下去的动力,也可以留言一起交流一起成长。

TCP协议和UDP协议有什么区别

TCP和UDP的基础知识,可以去翻阅相应书籍。

我说几个在选择和应用协议时比较重要的点,如果你不是很熟悉TCP/IP,应该是有所帮助的。尤其是关于对可靠性的理解。

基于字节流和面向数据报

TCP基于字节流:TCP接收到应用层协议的消息(已编码为二进制)后,然后参考该计算机连接的网络数据链路层MTU(最大传输单元)确定是否要分包,然后交给IP层。但是并不会在不同的消息之间设置分隔符,应用层协议需要在自己的消息中包含该消息的长度信息。类比:你向一个文件追加一系列的序列化对象数据(可看做应用层协议包),如果你自己不标记每次序列化数据的长度,到了反序列化的时候就没办法了。如果你类似Redis在处理字符串的时候在头部维护字符串的长度,就可以安全的读出该字符串。

UDP基于数据报:Udp接收到应用协议的某个消息(已编码为二进制)后,不会分包,但是要记录当前数据包的大小(消息大小加上8个字节头部),然后交给IP层。IPV4对UDP数据报的大小限制为65535字节(包含头部8个字节),你每次可以直接发送的消息不能超过65507字节。然后UDP协议会自行根据头部的报文长度字段确定完整的消息,对于应用层协议来说,这就是一条完整的消息,不用再做逻辑分离消息。

不管是TCP或者UDP,IP层都会再次考虑MTU确定是否分包。IP层的功能这里不展开。

可靠性和时效性

TCP是可靠的,可靠性通过确认和超时重传机制保证。它是保证路由可达时最终能传输成功。

但是如果你加上时效性要求,这个“可靠性”就大打折扣了!考虑RPG游戏场合,如果因为网络丢包等原因,导致超时重传消息1秒后才到,这种延迟你能接受么?

通信链路不总是可靠的,如果出现问题,TCP协议是不会向上汇报的。而是通过ICMP协议来完成,最终由操作系统接收处理,而操作系统一般会接受多次反馈后才会最终确认“断网了”,WIndows就会长达几分钟。你可以尝试拔掉路由器的WLAN端口,再看看你的操作系统什么时候才反应过来无法连接到因特网。你的应用协议可以忍受这么长时间的“懵逼”状态么?

所以,即使TCP有可靠性保证,绝大部分基于TCP的应用层协议都会显示或隐式地包含确认功能和超时设置。考虑HTTP,显示的确认功能,客户端都会有请求超时时间限制。

Tips:

自定义应用层协议需要保证消息有序传输时,tcp的滑动窗口是个很好的实现参考。

选择问题

关于TCP和UDP的一般选择,这里不说了,到处都可以找到。

说几两个需要可靠性但是适用UDP的场合吧。

1、如果你需要做实时性很高且消息小(比如小于以太网的MTU1500Byte)的通信程序,UDP就很适合。关键消息重复发,不用等确认都可以,当然最终还是需要确认。

2、如果是内网环境,网络非常稳定,UDP几乎不会出问题,如果极度要求性能,可以考虑。

3、如果你公网网络资源有限,而用户之间需要传递大量数据,可以考虑用UDP做NAT穿透。

个人见解,欢迎大家评论或者提出意见。