浅谈tcp 与udp
tcp是一种面向连接的、可靠的、基于字节流的传输层通信协议。是专门为了在不可靠的互联网络上提供一个可靠的端到端字节流而设计的,面向字节流。
udp(用户数据报协议)是iso参考模型中一种无连接的传输层协议,提供面向操作的简单不可靠的非连接传输层服务,面向报文。
它们之间的区别:
1、tcp是基于连接的,可靠性高;udp是基于无连接的,可靠性较低;
2、由于tcp是连接的通信,需要有三次握手、重新确认等连接过程,会有延时,实时性差;同时过程复杂,也使其易于被攻击;而udp无连接,无建立连接的过程,因而实时性较强,也稍安全;
3、在传输相同大小的数据时,tcp首部开销20字节;udp首部开销只有8个字节,tcp报头比udp复杂,故实际包含的用户数据较少。tcp无丢包,而udp有丢包,故tcp开销大,udp开销较小;
4、每条tcp连接只能是点到点的;udp支持一对一、一对多、多对一、多对多的交互通信。
所以对于应用这方面:
如果对实时性要求高和高速传输的场合下需要使用udp;如果需要传输大量数据且对可靠性要求高的情况下应该使用tcp;在可靠性要求较低,追求效率的情况下应该使用udp。
对于tcp来说,既然需要面向连接,就会涉及到三个阶段:连接建立、数据传送、连接释放三个过程;而“三次握手”就发生在连接建立这个阶段,下面对三次握手和四次挥手解释一下:
三次握手:
第一次握手:客户端发送一个tcp的syn标志位置为1的包(连接请求),指明客户打算连接服务器的端口;
第二次握手:当服务器收到连接请求之后,返回确认包(ack)应答,即将syn和ack标志位同时致为1(授予连接),并为这次连接分配资源;
第三次握手:客户端收到服务器的授予连接请求之后,再次发送确认包(ack)(syn标志位为0,ack标志位为1),并分配资源,这样tcp就建立连接了。
四次挥手:
中断连接端可以是客户端也可以是服务端
假设是客户端发起的中断连接请求,则客户端发送fin报文,服务端接收到客户端发送的fin报文后,意思是说:“客户端已经没有数据要发送给你了”,但是这时候如果服务端有数据没有发送完成,则不必着急关闭socket,可以继续发送数据,所以服务端先发送ack,告诉客户端,收到了客户端刚才的关闭连接请求,但是服务端还没有准备好,还有数据没有发送完,所以请客户端继续等我的消息,这个时候客户端就进入了fin_wait状态,继续等待服务端的fin报文;当服务端确定已经发送完数据后,则想客户端发送fin报文,告诉客户端已经发送完数据,可以关闭连接了;当客户端接收到服务端的fin报文后,就知道可以关闭连接了,但是还是不相信网络,怕服务端不知道要关闭,所以客户端发送ack给服务端后进入了time_wait状态,如果服务端没有收到ack则可以重传;服务端收到ack后,就知道可以关闭连接了;当服务端等待了2msl后依然没有收到回复,则证明服务端已经正常关闭了,那客户端也会关闭连接了,就这样,tcp连接就完成了关闭。
浅谈tcp 与udp的更多相关文章
- 浅谈TCP IP协议栈(三)路由器简介
读完这个系列的第一篇浅谈TCP/IP协议栈(一)入门知识和第二篇浅谈TCP/IP协议栈(二)IP地址,在第一篇中,可能我对协议栈中这个栈的解释有问题,栈在数据结构中是一种先进后出的常见结构,而在整个T ...
- Qt网络编程-书接上文,浅谈TCP文件收发,以及心跳包
qt网络编程-书接上文,浅谈文件收发 上文Qt网络编程-从0到多线程编程中谈到 在qt中的qtcpsocket通讯的用法,接下来浅谈一下关于tcp通讯的实际应用,当然了由于是浅谈,也不能保证其功能的完 ...
- 浅谈 TCP、IP、DNS 和 HTTP 的关系
一.浅谈三个协议的基本概念 1.IP 协议 按层次分,IP网际协议位于网络层,几乎所有的网络的系统都会用到 IP 协议,其重要性非同一般.IP 协议作用就是把各种数据包传送给对方,对方的地址就要看其 ...
- 浅谈TCP IP协议栈(四)IP协议解析
通过之前的网络层基础知识,IP地址以及路由器的简介,大家应该对于TCP/IP有一个大致的了解,在脑海里应该对于网络的几个基础概念有个大概的了解,简单点说整个协议栈就是在做一件事,规定网络报文(网络传输 ...
- 面试:浅谈tcp/udp
tcp是一种面向连接的.可靠的.基于字节流的传输层通信协议.是专门为了在不可靠的互联网络上提供一个可靠的端到端字节流而设计的,面向字节流. udp(用户数据报协议)是iso参考模型中一种无连接的传输层 ...
- 浅谈TCP/IP网络编程中socket的行为
我认为,想要熟练掌握Linux下的TCP/IP网络编程,至少有三个层面的知识需要熟悉: 1. TCP/IP协议(如连接的建立和终止.重传和确认.滑动窗口和拥塞控制等等) 2. Socket I/O系统 ...
- 测试那些事儿—浅谈TCP/IP协议
TCP/IP协议是一系列网络协议的总和,是构成网络通信的核心骨架. TCP/IP的工作原理通俗的讲就是一个主机的数据要经过哪些过程才能发送到对方的主机上. TCP/IP协议采用四层结构,分别为应用层, ...
- 浅谈TCP扫描与SYN扫描与FIN扫描
下面就这三种方法来小小的探讨一下,不对的地方还请多多指教! 1:TCP扫描 相对来说是速度比较慢的一种,为什么会慢呢?因为这种方法在扫描的时候会从本地主机的一个端口向目标主机的一个端口发出一个连接请求 ...
- 浅谈TCP优化
原文地址:http://kb.cnblogs.com/page/197406/ 很多人常常对TCP优化有一种雾里看花的感觉,实际上只要理解了TCP的运行方式就能掀开它的神秘面纱.Ilya Grigor ...
- 浅谈TCP优化(转)
很多人常常对TCP优化有一种雾里看花的感觉,实际上只要理解了TCP的运行方式就能掀开它的神秘面纱.Ilya Grigorik 在「High Performance Browser Networking ...
随机推荐
- Unity3D使用脚本动态创建、调用动画(转)
原文链接: https://blog.csdn.net/pigautumn/article/details/81781403 需求场景:由若干个数量不确定的物体从上到下排列,需要间隔0.1s依次从左到 ...
- 狄利克雷过程(Dirichlet Process)
先从狄利克雷过程的motivation开始说起,如果我们有一些数据,这些数据是从几个高斯分布中得出的,也就是混合高斯模型中得出的,比如下图这样 但是呢,我们并不知道混合高斯模型中到底有多少个高斯分布, ...
- Flask + PyInstaller = 客户端
Flask + PyInstaller = 客户端 有些特殊情况需要开发客户端,Python有几个常用的几个GUI框架,如 PyQt.wxPython等 但使用这些GUI框架往往界面比较丑,而且GUI ...
- k8s 删除 node节点
查看现有状态 [root@master ~]# kubectl get nodes NAME STATUS ROLES AGE VERSION master NotReady control-plan ...
- 小僧の神様・城の崎にて.PDF
书本详情 小僧の神様·城の崎にて作者:志賀直哉出版社:新潮社时间:1968.07页数:270 ISBN:
- 关于视频加密ts格式转MP4的方法
copy /b "%~dp0"\*.ts "%~dp0"\new.ts 最近在手机浏览器上下载了钢铁侠等漫威电影,觉得不错想保存到手机上,却都又是m3u8格式, ...
- vuecli创建项目-vue项目目录介绍-es6导入导出语法-小练习登录功能-scoped
目录 vuecli创建项目-vue项目目录介绍-es6导入导出语法-小练习登录功能-scoped 今日内容概要 今日内容详细 1 vue-ci创建项目 2 vue项目目录介绍 3 es6导入导出语法 ...
- KingbaseES V8R3集群运维案例之---kingbase_monitor.sh启动”two master“案例
案例说明: KingbaseES V8R3集群,执行kingbase_monitor.sh启动集群,出现"two master"节点的故障,启动集群失败:通过手工sys_ctl启动 ...
- Java把List转成以逗号分隔的字符串
private static <T> String parseListToStr(List<T> list){ String result = list.stream().ma ...
- 摄像头的MIPI接口、DVP接口和CSI接口
电脑摄像头接口是USB接口,智能手机的摄像头接口是MIPI接口,还有一部分的摄像头(比如说某些支持DVP接口的硬件)是DVP接口. USB是串行通用串行总线(Universal Serial Bus) ...