关键词:
TCP与UDP异同
TCP/IP
模型的运输层有两个不同的协议:UDP
用户数据报协议与TCP
传输控制协议
相同点
TCP
与UDP
都是运行在运输层的协议TCP
与UDP
的通信都需要开放端口
不同点
TCP
TCP
是面向连接的协议,提供全双工通信,需要建立链接之后再传输数据,数据传输负载相对较大。TCP
提供可靠交付的服务,使用流量控制和拥塞控制等服务保证可靠通信。TCP
首部最小20
字节,最大60
字节,包括源端口、目的端口、序号、确认号、数据偏移、控制标志、窗口、校验和、紧急指针、选项等信息。TCP
只能是一对一通信。TCP
面向字节流通信。TCP
保证数据传输的顺序,通过给TCP
连接中传送数据流的每个字节都编上序号来确定传输顺序。TCP
提供校验和、确认应答、序列号、超时重传、连接管理、流量控制、拥塞控制等功能。TCP
适用于要求可靠传输的应用,如文件传输等
UDP
UDP
是无连接的,即发送数据之前不需要建立连接,数据传输负载相对较小。UDP
使用尽最大努力交付,即不保证可靠交付,同时也不使用流量控制和拥塞控制。UDP
首部8
字节,包括源端口、目的端口、长度、校验和信息。UDP
具有单播、多播、广播的功能,支持一对一、一对多、多对多、多对一的数据传输方式。UDP
是面向报文通信,对应用层交下来的报文,既不合并,也不拆分,而是保留这些报文的边界,在添加首部后就向下交付IP
层。UDP
不保证数据传输的顺序,需要应用层程序在数据段加入序号等方式控制顺序。UDP
只在IP
的数据报服务之上增加了很少一点的功能,即端口的功能和差错检测的功能。UDP
适用于实时应用,如网络电话、视频会议、直播等
相关问题
UDP实现可靠性传输
运输层无法保证数据的可靠传输,只能通过应用层来实现了,实现的方式可以参照TCP
可靠性传输的方式,只是实现不在传输层,实现转移到了应用层,主要通过实现确认机制、重传机制、窗口确认等机制来实现可靠传输,有RUDP
、RTP
、UDT
等开源程序利用UDP
实现了可靠的数据传输,此外有结合TCP
的可靠与UDP
速度的权衡KCP
协议。
TCP短连接和长连接的区别
短连接:Client
向Server
发送消息,Server
回应Client
,然后一次读写就完成了,这时候双方任何一个都可以发起close
操作,不过一般都是Client
先发起close
操作。短连接一般只会在Client/Server
间传递一次读写操作。短链接管理起来比较简单,建立存在的连接都是有用的连接,不需要额外的控制手段,但是如果客户请求频繁,将在TCP
的建立和关闭操作上浪费时间和带宽。
长连接:Client
与Server
完成一次读写之后,它们之间的连接并不会主动关闭,后续的读写操作会继续使用这个连接,长连接可以省去较多的TCP
建立和关闭的操作,减少浪费,节约时间,对于频繁请求资源的客户来说,较适用长连接,但是随着客户端连接越来越多,Server
负载会越来越大,此时就需要采取一些策略减少负载,例如关闭长时间未读写的链接LRU
算法、限制客户端链接数量等。
TCP粘包拆包解决方案
由于TCP
本身是面向字节流的,无法理解上层的业务数据,所以在底层是无法保证数据包不被拆分和重组的,这个问题只能通过上层的应用协议栈设计来解决。
- 消息定长:发送端将每个数据包封装为固定长度(不够的可以通过补
0
填充),这样接收端每次接收缓冲区中读取固定长度的数据就自然而然的把每个数据包拆分开来。 - 设置消息边界:服务端从网络流中按消息边界分离出消息内容,在包尾增加回车换行符进行分割,例如
FTP
协议。 - 将消息分为消息头和消息体:消息头中包含表示消息总长度(或者消息体长度)的字段。
参考
https://zhuanlan.zhihu.com/p/108822858
https://www.cnblogs.com/liangyc/p/11628148.html
https://blog.csdn.net/m_xiaoer/article/details/72885418
https://blog.csdn.net/pangyemeng/article/details/50387078
https://blog.csdn.net/quiet_girl/article/details/50599777
https://blog.csdn.net/liuchenxia8/article/details/80428157
https://blog.csdn.net/qq_40732350/article/details/90902396
https://www.cnblogs.com/fundebug/p/differences-of-tcp-and-udp.html
tcp与udp,tcp服务器与客户端,udp服务器与客户端(代码片段)
目录TCP主要特点TCP的三次握手与四次挥手net模块 UDP主要特点UDP与TCP的区别dgram模块TCP的服务器与客户端创建TCP服务器创建TCP客户端 UDP的服务器与客户端创建UDP服务器创建UDP客户端TCP传输控制协议(TCP,TransmissionControlProt... 查看详情
4tcp与udp与websocket(代码片段)
...WebSocket1Socket概念1.1Socket简介1.2IPv4与IPv62TCP编程2.1服务端代码2.2Go的TCP客户端案例2.3Go的TCP响应解释3UDP4websocket概述5WebSocket原理6Go实现WebSocket1Socket概念1.1Socket简介大部分底层网络编程都依赖于Socket编程,包括:HTTP 查看详情
tcp与udp(代码片段)
IP提供了点到点的连续接,通过IP地址可以找到目标主机。但是目标主机有很多应用,服务器到底使用哪个应用来响应客户端?通过端口号决定。一、TCP:transmissioncontrolprotocol--传输控制协议可靠的,面向连接的协议,就像拨打电... 查看详情
tcp与udp实例(代码片段)
有关TCP和UDP参照之前的博文相关API和解释都可以参照之前的博文,这里只是采用send/recv函数实现TCP编程,同时实现了UDP编程一、相关API1.send函数ssize_tsend(intsockfd,constvoid*buf,size_tlen,intflags);sockfd指定发送端套接字描述符... 查看详情
tcp与udp实例(代码片段)
有关TCP和UDP参照之前的博文相关API和解释都可以参照之前的博文,这里只是采用send/recv函数实现TCP编程,同时实现了UDP编程一、相关API1.send函数ssize_tsend(intsockfd,constvoid*buf,size_tlen,intflags);sockfd指定发送端套接字描述符... 查看详情
tcp协议与udp协议(代码片段)
一.TCP协议:1.初识TCP:TCP---传输控制协议,提供的是面向连接、可靠的字节流服务。当客户和服务器彼此交换数据前,必须先在双方之间建立一个TCP连接,之后才能传输数据。TCP提供超时重发,丢弃重复数据,检验数据,流量控... 查看详情
2018-10-10socket网络编程——udp与tcp(代码片段)
------------------------------------------------------------UDP------------------------------------------------------------因为udp发送数据之前不需要建立连接所有具有以下特点无连接资源开销小传输速度快udp每个数据包最大是64KUDP的优缺点 优点: ... 查看详情
tcp与udp如何互通(代码片段)
今天再来个花式玩法。TCP连接的报文,结果却送到了UDPsocket,有趣…既然以太帧既可以在铜线上传输,也可以在光纤上,甚至空气里传输,那么SOCK_STREAMsocket也就可以在UDP上传输,反之,TCP报文也可以... 查看详情
tcp与udp比较以及并发编程基础知识(代码片段)
一、tcp比udp真正可靠地原因1.为什么tcp比udp传输可靠地原因:我们知道在传输数据的时候,数据是先存在操作系统的缓存中,然后发送给客户端,在客户端也是要经过客户端的操作系统的,因为这个过程涉及到计算机硬件,也就... 查看详情
第二十节——udp与tcp(代码片段)
网络编程学习一、InetAddressstaticInetAddressgetByName(Stringhost):确定主机名称的IP地址。主机名称可以是机器名称,也可以是IP地址StringgetHostName():获取此IP地址的主机名StringgetHostAddress()返回文本显示中的IP地址字符串举例&... 查看详情
基于tcp与udp协议的socket通信(代码片段)
基于TCP与UDP协议的socket通信C/S架构与初识socket 在开始socket介绍之前,得先知道一个Client端/服务端架构,也就是C/S架构,互联网中处处充满了C/S架构(Client/Server),比如我们需要玩英雄联盟,就必须连接至英雄联盟的服务器... 查看详情
tcp与dup简单对比(代码片段)
看回顾一下OSI7层协议网络模型再回顾一下OSI每一层的作用OSI7层协议模型与TCP/IP5层协议模型的对应关系从上述图片中可以看出tcp与udp是传输层的协议。TCP与DUP比较:1、TCP面向连接(如打电话要先拨号建立连接);UDP是无连接的,... 查看详情
skill——iptables(代码片段)
扩展匹配条件一:udp扩展模块选项说明--sport匹配报文的源端口--dport匹配报文的目标端口和tcp模块中的名称一样,不同的是,udp模块中的--sport与--dport是用来匹配UDP协议报文的源端口与目标端口的udp模块与tcp模块类似,适用于tcp... 查看详情
终于把tcp与udp协议整明白了!(代码片段)
网络编程有三个要素,分别是IP地址、端口号和通信协议,那本文主要讲述的是TCP与UDP这两种通信协议,以及编程的实现。首先,我们需要了解一下IP地址、端口号、通信协议的相关知识。一、IP地址网络中的计算机使用IP地址来... 查看详情
c/c++socket-tcp与udp网络编程(代码片段)
前言socket编程分为TCP和UDP两个模块,其中TCP是可靠的、安全的,常用于发送文件等,而UDP是不可靠的、不安全的,常用作视频通话等。如下图:头文件与库:#include<WinSock2.h>#pragmacomment(lib,"ws2_32.lib... 查看详情
基于tcp与udp协议的socket通信(代码片段)
C/S架构与初识socket 在开始socket介绍之前,得先知道一个Client端/服务端架构,也就是 C/S 架构,互联网中处处充满了 C/S 架构(Client/Server),比如我们需要玩英雄联盟,就必须连接至英雄联盟的服务器上,... 查看详情
udp广播与tcp客户端--服务端(代码片段)
随着倒计时的响声,自觉无心工作,只想为祖国庆生。 最近有遇到过这样一个问题,将摄像头识别的行人,车辆实时显示在客户端中。有提供接口,会以Json的数据的形式将实时将识别的对象... 查看详情
计网学习笔记(代码片段)
计网复习TCP和UDP区别TCP流量控制TCP拥塞避免DCTCP算法TCP三次握手TCP四次挥手Web页面请求过程输入URL后面试集锦HTTP和HTTPS对称加密和非对称加密TCP如何保证可靠性Get与POSTSession,Cookie,ApplicationSQL注入XSS攻击OSI体系与TCP/IP模型TCP,UDP常见... 查看详情