传输层的TCP和UDP协议

作者:HerryLo

原文永久链接: https://github.com/AttemptWeb...

TCP/IP协议, 你一定常常听到,其中TCP(Transmission Control Protocol)称为 传输控制协议,IP(Internet Protocol) 称为网际协议

事实上TCP/IP协议,是一个协议族,是一个协议的集合。

TCP/IP协议,定义了一整套规则。它定义整个互联网如何连接,如何通信,如何协商的最基础规则。

TCP/IP协议分为五层,分别是应用层、传输层、网络层、数据链路层、物理层。每层都有对应的相关协议,其中TCP和UDP是传输层的两个协议。

理解TCP和UDP


既然他们是传输层的协议,那么他们的作用当然就是用来负责传输数据了。

我们想象一个场景,网络中随意的两端要通信,会采取什么传输方式呢?

可以先想象一下人类之间的通信。

第一种是打电。我拨通电话你的电话,直到你回答“你好”,我听到声音之后,我们之间才继续进行交谈。

另一个是发短信。我给你的手机号发送一条短信,无法知道你是否收到,然后我就只能等待你的回复了。

其中第一种方式对应TCP,而第二种对应UDP。TCP是需要对方确认的,也就是传输之前需要进行三次握手(传输的两端需要经过三次握手,才开始通信)。UDP着比较粗暴,不论对方什么情况,直接发送,不需要确认过程。

而上图中的看到的,TCP是可靠的,UDP是不可靠的,就是这个意思。

可靠的连接带来的是效率的下降。比如一次网络请求,很大一部分时间其实都是浪费在互相确认的过程当中,资源消耗比较多,保证了数据传输是可靠的,而且传输数据是有序的。不可靠的连接带来的是效率的提升,但可能服务质量有下降。

要摆脱一种人为的误区,不要以为UDP不可靠,就没有应用场景。据说QQ发送数据就是靠UDP发送的,尽管是不可靠的连接,可是还是用了非常多的校验算法保证了数据质量稳定,同也保证了效率。TCP尽管耗时,可是对于稳定性优先的场景,还是应该有限选用TCP,比方浏览器中访问网页用的就是TCP。此外在一些长连接系统里面,比方微信,连接通道应该也是用TCP建立的,由于要维持一条稳定的信息传输通道。

协议是怎么控制,数据包是怎么传输,怎么校验数据的正确性,还有重传特性。这些都是协议中重要的控制过程,在这里不做详解,因为对于实际的产品并没有太大的用。至于如何选定传输数据方式,应该依据场景而定。

安全的东西往往不快,反之亦然。而TCP和UCD之间也是这样:

TCP(传输控制协议)

TCP(传输控制协议)是基于连接的。在正式收发数据之前,必须要与对方建立连接。这之间需要经过‘三次握手‘:

第一步. 首先A主机需要和B主机之间建立数据收发,A需要发送一个请求询问B:‘我要建立连接‘;

第二步. B收到消息后,会给A发送一个回应:‘可以连接‘;

第三步. A收到B的回应后,A向B再次回应:‘我要开始发送了‘,他们之间就可以建立连接了;
第一次握手的结论是:A的发送能力、B的接收能力正常。

第二次握手的结论是:B的发送能力、A的接收能力正常。

第三次握手的结论是:A的接收、发送能力,B的接收、发送能力都是正常的。

‘3次握手‘的作用就是 双方都能明确自己和对方的收、发能力是正常的.

UDP(用户数据报协议)

UDP(用户数据报协议)是面向非连接的,不与对方建立连接,而直接把数据报=包发送出去。UDP适用于一次传输少量的数据,对于可靠性要求不高的应用环境。日常生活中使用的ping命令测试主机是否通信正常,事实上‘ping‘命令的原理就是向对方主机发送UDP数据包,然后对方主机确认收到数据包,假设数据包是否到达的消息及时反馈回来了,那么网络传输就是正常的。

适用场景

TCP:是全双工、面向连接、可靠的,而且精确控制的协议。主要用于实时性不强,但传输要求高的应用。比方说:网页浏览、文件下载(不是BT、电脑下载)、邮件的发送等场合,这些场景需要TCP协议进行传输。当然,它在网络方面的开销是昂贵的。

UDP:这是一个不可靠的传输协议。由于它不排序所要发送的数据段,不负责这些数据段到达目标的顺序(说一它才不可靠)。它在网络的开销要比TCP小很多,因此UDP适合用在那些实时性强、允许出错的场合。比如说:即时通讯(MSN、QQ),视频、语言等方面。

ps: 顺便推一下自己的个人公众号:Yopai,有兴趣的可以关注,每周不定期更新,分享可以增加世界的快乐

原文地址:https://www.cnblogs.com/liuheng/p/11291593.html

时间: 2024-11-07 11:48:51

传输层的TCP和UDP协议的相关文章

计算机网络-传输层(1)UDP协议

UDP协议基于Internet IP协议,只提供两个基础功能: 分用/复用 分用: 主机接收到IP数据报(datagram),每个数据报携带源IP地址.目的IP地址且携带一个传输层的段(Segment). 每个段携带源端口号和目的端口号,主机收到Segment之后,传输层协议提取IP地址和端口号信息,将Segment导向相应的Socket. 复用: 从多个Socket接收数据,为每块数据封装上头部信息,生成Segment,交给网络层 简单的错误校验 检测UDP段在传输中是否发生错误(如位翻转)

TCP与UDP协议

要想理解socket首先得熟悉一下TCP/IP协议族, TCP/IP(Transmission Control Protocol/Internet Protocol)即传输控制协议/网间协议,定义了主机如何连入因特网及数据如何再它们之间传输的标准, 从字面意思来看TCP/IP是TCP和IP协议的合称,但实际上TCP/IP协议是指因特网整个TCP/IP协议族.不同于ISO模型的七个分层,TCP/IP协议参考模型把所有的TCP/IP系列协议归类到四个抽象层中 应用层:TFTP,HTTP,SNMP,F

网络基础:TCP协议、UDP协议、均属于传输层协议;TCP和UDP协议有何不同?

传输层 传输层的主要工作是定义端口,标识应用程序身份,并将数据包交给对应的应用程序实现端口到端口的通信,并且传输层引入了TCP/UDP协议. 1. 如果有大量数据包.数据包大?时间很长,网络中断,怎么控制重新传输?怎么确保数据包正确完整---传输层 传输层封装数据包,通过定义的 TCP.UDP 协议实现按序一个一个发送,保证数据完整正确性: 2. QQ发消息,你必须使用QQ接受消息,才可以正常通信:但是电脑中不是只运行了QQ,还有其他程序,怎么确定由谁来处理消息 传输层定义端口的概念-- HTT

传输层:TCP 协议

传输层:TCP 协议 一.概述 TCP 和 UDP 处在同一层——运输层,但是它们有很多的不同.TCP 是 TCP/IP 系列协议中最复杂的部分,它具有以下特点: (1) TCP 提供 可靠的 数据传输服务,TCP 是 面向连接的 .应用程序在使用 TCP 通信之前,先要建立连接,这是一个类似“打电话”的过程,通信结束后还要“挂电话”. (2) TCP 连接是 点对点 的,一条 TCP 连接只能连接两个端点. (3) TCP 提供可靠传输,无差错.不丢失.不重复.按顺序. (4) TCP 提供 

TCP与UDP协议的区别

首先TCP和UDP协议都是运行在运输层的协议. UDP协议:用户数据包协议 1.UDP协议是无连接的.也就说在数据发送之前并不需要建立连接(当然,在发送数据结束的时候也就不存在链接的释放),因此减少了开销和数据发送之前的时延. 2.UDP使用尽最大努力的交付,但是不保证可靠性的交付,因此主机不需要维持复杂的链接状态表. 3.UDP是面向报文.发送方的UDP对于应用程序进程交下来的报文,即不合并,也不拆分,而是保留这些报文的边界.这也就是说,应用层交付给UDP多长的报文,UDP就照样发送,即一次发

TCP和UDP协议的应用/参数查看

TCP发送的包有序号,对方收到包后要给一个反馈,如果超过一定时间还没收到反馈就自动执行超时重发,因此TCP最大的优点是可靠.一般网页(http).邮件(SMTP).远程连接(Telnet).文件(FTP)传送就用TCP UDP是面向消息的协议,通信时不需要建立连接,数据的传输自然是不可靠的,一般用于多点通信和实时的数据业务,比如语音广播.视频.QQ.TFTP(简单文件传送).SNMP(简单网络管理协议).RTP(实时传送协议)RIP(路由信息协议,如报告股票市场,航空信息).DNS(域名解释).

传输层之TCP

---恢复内容开始--- 坞无尘水槛清,相思迢递隔重城. 秋阴不散霜飞晚,留得枯荷听雨声.    --李商隐 上一篇中我们了解了socket编程是基于TCP或者UDP,所以我们有必要对TCP,和UDP先进行学习.本篇主要学TCP. 1.TCP属于那一层? 传输层 2.TCP的定义 TCP是 可靠的(如何可靠),  面向连接(三次握手和四次释放)  字节流(每个TCP报文都带着若干个字节) 服务: a.先说面向连接   (1)三次握手和四次握手(看图说清楚) http://blog.csdn.ne

计算机网络——网页上(或其他情况下)的视频传输是基于TCP还是UDP

计算机网络——网页上(或其他情况下)的视频传输是基于TCP还是UDP 1. 综述 链接:百度知道 当然,需要清楚,这里说基于TCP还是UDP是在传输层,应用层的协议估计种类多多. 总结找到的内容,应该说: 1. 网页上的视频是基于HTTP/HTTPS,传输层是TCP 2. QQ视频聊天等是基于UDP 3. 甚至有的应用使用p2p协议,传输层应该也是TCP 4. 通过http进行流化视频有很多种方法 5. 传输视频还有很多其他的应用层协议 一方面,在网页上看视频可以忍受缓冲5s看到更清楚的视频,所

UNP(一):网络编程角度下的TCP、UDP协议

此博文是学习UNP(UNIX Network Programming)后的读书笔记,供以后自己翻阅回顾知识. TCP.UDP概述 在前面<计算机网络与TCP/IP>栏目下已经介绍过一些关于TCP.UDP的相关知识TCP/IP(三):传输层TCP与UDP,这里只是简单从UNIX网络编程的角度介绍TCP.UDP协议. 我们都知道UDP 缺乏可靠性.无连接的,面向数据报 的协议,如果想确保数据报到达目的地,必须自己在应用层实现一些特性:对端的确定.本端的超时和重传等.UDP面向报文的特性,使得UDP