对于TCP协议和UDP协议,大家应该都有所耳闻。TCP协议和UDP协议都工作在传输层,他们的目标都是在应用之间传输数据。我们常用的网络通信,比如浏览网页,查看邮件,电话通信等,都是通过这两种协议来进行数据传输的。
(资料图)
01、TCP与UDP的区别这两种协议有什么区别呢?他们又是如何工作的?跟着文档君往下看~
TCP协议和UDP协议最核心的区别是什么?看看下边图片你就知道了。
TCP(Transmission Control Protocol,传输控制协议)是一种面向连接的、可靠的、基于字节流的传输层通信协议。可靠性,是TCP的最大特点,主要体现在:数据无丢失、无错误、无失序、无重复到达。就如同上图,TCP能将“孩子”(数据包)十分安全地传送给接收者。
UDP(User Datagram Protocol,用户数据报协议)是一种无连接、不可靠、快速传输的传输层通信协议。快速传输,是UDP的最大特点,主要体现在:数据发送前,不需要提前建立连接,能更高效地传输数据,但可靠性无法保证。就如同上图,UDP只负责把“孩子”(数据包)送出去,不管接收者有无收到。
直观感受了TCP协议与UDP协议的区别后,咱们来看看TCP协议是如何工作的?
02、TCP是如何工作的?TCP通信的连接管理机制(可靠机制)总结为:三次握手建立连接,四次挥手断开连接。
< 三次握手建立连接 >
TCP 是面向连接的协议,所以每次发出的请求都需要对方进行确认。TCP 客户端与 TCP 服务器在通信之前需要完成三次握手才能建立连接。
第一次握手目的:这是一个请求建立连接的数据包,客户端先向服务器发送一个同步数据包。
数据包的TCP首部内容:
同步SYN=1(客户端请求建立连接)序号seq=x(客户端所传送数据的第一个字节的序号)第二次握手目的:服务器收到客户端发送的第一个数据包后,判断出为主动建立连接的数据包。若服务器同意连接,则服务器发送一个数据包进行回应。
数据包的TCP首部内容:
同步SYN=1(服务器建立连接)确认标记ACK=1(服务器同意连接)序号seq=y(服务器所传送数据的第一个字节的序号)确认号ack=x+1(已经收到客户端发送的x个字节数据,并告诉客户端下次应从数据的第x+1个字节开始发送)第三次握手目的:客户端收到服务器的确认之后,再给服务器发送一个数据包。
数据包的TCP首部内容:
同步SYN=1(双方已同意建立连接)确认标记ACK=1(收到服务器的确认数据包)序号seq=x+1(发出的数据包就是数据的第x+1个字节)确认号ack=y+1(收到服务器发送y字节数据,并告诉服务器下次应从数据的第y+1个字节开始发送)Tips在客户端与服务器端传输的TCP数据中,双方的序号seq和确认号ack的值,都是在彼此seq和ack值的基础上进行计算的,这样做保证了TCP数据传输的连贯性。一旦出现某一方发出的TCP数据丢失,便无法继续"握手",以此确保了"三次握手"的顺利完成。
< 四次挥手断开连接 >
聚散终有时,当数据传输完成后,TCP客户端与TCP服务器需要通过四次会话断开连接,这个过程我们称之为四次挥手。
第一次挥手目的:客户端向服务器发送连接释放的请求数据包,并停止发送数据。
在连接释放数据包的TCP首部中:
终止FIN=1(客户端要主动释放客户端和服务器的TCP连接)序号seq=x(x由客户端指定。随后等待服务器的确认)第二次挥手目的:服务器在收到连接释放的报文之后,给客户端发送确认报文。因此,客户端到服务器方向上的连接释放,TCP连接此时处于半关闭状态。半闭因为客户端已无法发送数据给服务器,半开因为服务器仍可以发送数据给客户端并被其接收。
在服务器发送给客户端确认报文的TCP首部中:
确认标记ACK=1(收到了客户端发送的数据包,同意客户端释放连接)确认号ack=x+1(在收到客户端报文的基础上,将其序号seq值加1作为本段报文确认号ack的值)序号seq=y(y由服务器指定。随后等待客户端的确认)第三次挥手目的:若服务器已停止向客户端发送的数据,则释放连接,并向客户端发送确认报文。
在确认报文的TCP首部中:
终止FIN=1(服务器释放服务器到客户端的TCP连接,不再向客户端发送数据)确认标记ACK=1(服务器对客户端的数据传送完毕)确认号ack=x+1(在收到客户端报文的基础上,将其序号seq值加1作为本段报文确认号ack的值)序号seq=z(z由服务器指定。随后等待客户端的确认)第四次挥手目的:客户端收到服务器的连接释放报文段后,向服务器发出确认报文。
在确认报文的TCP首部中:
终止FIN = 1(客户端和服务器断开连接)确认标记ACK=1(收到服务器的确认报文,并同意服务器释放连接)确认号ack=z+1(在收到服务端报文的基础上,将其序号seq值加1作为本段报文确认号ack的值)序列号seq=x+1(在收到服务端报文的基础上,将其确认号作为本段报文序列号的值)了解完TCP后,再来了解一下UDP是如何工作的~
03UDP是如何工作的?UDP协议是面向无连接的,即发送数据之前不需要建立连接(无TCP协议复杂的三次握手,四次挥手的过程),发送数据就是简单的把数据包封装一下,然后从网卡发出去,数据包之间并没有状态上的联系。UDP 协议基本上是 IP 协议与上层协议的接口,UDP协议使用IP层提供的服务将应用层得到的数据从一台主机的某个应用进程传递到另一台主机的某个应用进程。
举个栗子~
当传输层从IP层收到UDP数据报文时,根据UDP数据报文首部中的目的端口,把UDP数据报文通过相应的端口传递给应用进程,如下图所示。
如上图中应用进程4与端口2,如果接收方UDP发现收到的报文中的目的端口号不正确(即不存在对应于端口号的应用进程),则丢弃该报文,并由ICMP发送“端口不可达"差错报文给发送方。
TipsICMP(Internet Control Message Protocol,Internet控制报文协议)是TCP/IP协议簇的一个子协议,用于在IP主机、路由器之间传递控制消息。控制消息是指网络通不通、主机是否可达、路由是否可用等网络本身的消息。
04总结一下数据传输看似简单,其实非常智慧~
TCP和UDP服务的是程序,但程序和人是一样的,可以你来我往进行交流,也可以一股脑的倾诉。TCP就是彼此之间坦诚交流。消息有没有收到,收到的信息是否一致,都可以有及时的反馈。
优点:可靠。
缺点:传输速率慢。
适用场景:通信软件的账户登录、支付等相关功能,采用可靠的TCP。
UDP就是倾诉,我不管你有没有听进去,不管你有无反馈,我就要不停地说。
优点:传输速率快。
缺点:不可靠。
适用场景:QQ、微信等即时通信软件进行点对点通信,或者音视频通话时,通常采用传输快速的UDP。
TCP和UDP各有优缺点,就看你实际需求啦~
更多TCP干货,请戳三次握手,四次挥手,原来TCP这么有礼貌!
标签:
对于TCP协议和UDP协议,大家应该都有所耳闻。TCP协议和UDP协议都工作在
求职过程中,简历影响着面试的通过率,如何让简历内容布局清晰,框架明
据《体育图片报》主编法尔克透露,拜仁内部讨论了引进热刺中场赫伊别尔
搭载新晨动力1 5T发动机。
江淮、江南一带迎新一轮降水过程,预计18日前后江南和长江中下游地区将
1、这个是DHT网络DHT全称叫分布式哈希表(DistributedHashTable),是一
□记者常青通讯员邵帅报道本报济南6月15日讯今天,由中铁十局承建的新
6月15日,省广集团(002400)融资买入2949 95万元,融资偿还3913 88万
国内黄金价格今天多少钱一克(2023年6月15日)
网贷逾期法务部上门催收合法吗?正常上门催收合法。法务部门上门催收
6月15日,奥泰生物(688606)融资买入228 85万元,融资偿还194 04万元
甲壳虫的刹车油2年或者每行驶40000公里换,此更换周期只能作为参考,判
知名演员尼古拉斯·凯奇今天造访了小岛工作室,与知名游戏人小岛秀...
世界杯冠军阿根廷在工体2-0击败澳大利亚,梅西打进生涯至今为止最快进
【小脑萎缩剪碎10万元】近日,黑龙江密山。一大娘将家中积蓄全部剪碎,
音频解说1、范子长,字少才,号双流,丹棱(今属四川)人。本文关于范
1、与黄瓜相克的食物,主要有辣椒、花生、菠菜等几类食物,吃黄瓜的过
想必现在有很多小伙伴对于途观天窗怎么关方面的知识都比较想要了解,那
大象新闻记者米方杰6月14日是杭州2022年第19届亚运会倒计时100天。抖音
眼见中国军力快速发展,境外总有些人不愿面对现实,想尽办法进行唱衰,
用途还是很多的!可以看高清视频、能看4K极清电影、看照片、打游戏,方
广州实习招聘信息来了!,羊城晚报招募暑期实习生面向本科 硕士在校生,
1、小三通船票价格:厦门泉州往金门:单趟“人民币”130元,加上清...
证券时报记者王小芊截至6月13日,年内基金分红总金额超过了670亿元。就
【英特科技:公司液冷散热器产品目前暂无应用于数据中心】英特科技在互
在炽热的618大促氛围中,奥特莱斯似乎成了一个特殊的存在。到奥特莱斯
6月12日,在湘西花垣县边城镇搞河村,鱼苗发放现场人头攒动,村民们一
老师们带领少先队员,排好整齐的队伍。活动现场。师生们为老人代表佩戴
万宁市气象台2023年06月15日11时59分发布雷电黄色预警信号:我市12时到
第二产业固定资产投资增幅扩大,工业投资同比增长8 8%;基础设施投资同