TCP和UDP面试经常被问到,一些初学者也经常问我这种问题,由于TCP协议和UDP协议是基于三次“对话”,解释起来很费劲,所以在这里详细的描述一下自己对TCP协议和UDP协议的理解,如有不妥之处,望指正。

首先是TCP,全称Transmission control protocol,是基于连接的协议,也就是说,这个协议的前提条件就是必须建立稳定的联系才能走协议方法。一个TCP协议必须经过三次对话建立,其中的过程比较复杂,基于本人也是做的前端开发的程序员,所以就简单的打个比方:

Long long ago,服务器A想给服务器B发送一个avi文件,然后通过QQ小窗口抖动联系服务器B,“嗨,我这里有份avi文件,你要不要?”;

PS:这是第一次对话,服务器A给服务器B发送请求数据包。

服务器B回复:“好啊,好啊,你什么时候发,我的大刀已经饥渴难耐了”;

PS:这是第二次对话,服务器B同意连接请求,要求同步。

服务器A回复:“我现在就给你发,你收好,嘿嘿”;

PS:这是第三次对话,服务器A确认同步并发出数据包。

经过这三次“对话”,服务器A才可以和服务器B发送数据。

据悉,现在的主流的聊天软件都是用的TCP协议

接下来是UDP,全称User Data protocol,是于TCP协议相对应的协议,UDP是面向非连接的协议,它不与对方建立连接,而是直接把数据包发送过去,UDP使用于一次只传送少量数据、对可靠性要求不高的应用环境,没有建立连接的过程,所以通信效果高,但也正因为如此,它的可靠性不如TCP协议高。

TCP协议和UDP协议的区别:

1、TCP协议是面向连接的协议,UDP是面向非连接的协议

2、TCP要比UDP更可靠、更安全

3、在传输大量数据的时候一般用TCP,小数据传输用的是UDP

4、UDP要比TCP要快。

一个深圳的可爱小朋友,问我这样的一个问题“FTP、TCP和UDP有什么联系?”。我只想说,FTP是文本传输协议,剩下的自己理解吧。

浅知拙见,如有纰漏瑕疵,欢迎指针。

iOS_TCP和UDP的详解的更多相关文章

  1. ip头、tcp头、udp头详解及定义,结合Wireshark抓包看实际情况

    公司的同事们在分析网页加载慢的问题,忽然使用到了Wireshark工具,我就像发现新大陆一样好奇,赶紧看了看,顺便复习了一下相关协议.上学时学的忘的差不多了,汗颜啊! 报文封装整体结构 mac帧头定义 ...

  2. 计算机网络——TCP与UDP协议详解

    根据应用程序的不同需求,运输层需要两种不同的运输协议,即面向连接的TCP和无连接的UDP. TCP:传输控制协议 TCP特点: 1)TCP是面向连接的运输层协议.所以,应用程序在使用TCP协议之前,必 ...

  3. IP头、TCP头、UDP头详解以及定义

    一.MAC帧头定义 /*数据帧定义,头14个字节,尾4个字节*/typedef struct _MAC_FRAME_HEADER{ char m_cDstMacAddress[6];    //目的m ...

  4. UDP协议详解

    1.UDP协议的作用 IP协议无法区别同一个主机系统上的多个应用程序.UDP采用端口标识同一主机上的不同应用程序. 无法采取进程ID来标识不同应用程序的原因: 1)系统中应用程序的进程ID分配和销毁是 ...

  5. 网络通信协议八之UDP协议详解

    视频传输中使用UDP协议比较多 UDP协议的责任 >>创建进程到进程间的通信(由端口号完成) >>有限的差错控制,出现差错悄悄丢弃报文(注意这点和TCP协议的区别)

  6. 运输层(TCP/UDP)详解

    TCP和UDP的区别: tcp是面向连接的可靠的传输协议 udp是非连接的不可靠的传输协议 TCP组成 可以看到虽然tcp是面向字节流的,但是其传输的基本单位还是报文(tcp首部和数据,ip报文和ud ...

  7. TCP与UDP区别详解

    TCP协议与UDP协议的区别    首先咱们弄清楚,TCP协议和UCP协议与TCP/IP协议的联系,很多人犯糊涂了,一直都是说TCP/IP协议与UDP协议的区别,我觉得这是没有从本质上弄清楚网络通信! ...

  8. UDP编程详解

    目录 报文格式 通信过程 UDP客户端流程 UDP客户端编码 UDP服务器流程 UDP服务器编码 参考文献 UDP与TCP的不同之处是:他的通信不需要建立连接的过程.中文名称用户数据报协议.时OSI参 ...

  9. 《TCP/IP详解卷1:协议》第11章 UDP:用户数据报协议-读书笔记

    章节回顾: <TCP/IP详解卷1:协议>第1章 概述-读书笔记 <TCP/IP详解卷1:协议>第2章 链路层-读书笔记 <TCP/IP详解卷1:协议>第3章 IP ...

随机推荐

  1. Jquery中each的三种遍历方法

    Jquery中each的三种遍历方法 $.post("urladdr", { "data" : "data" }, function(dat ...

  2. centos7 yum 方式安装nginx

    centos7系统库中默认是没有nginx的rpm包的,所以我们自己需要先更新下rpm依赖库 (1)使用yum安装nginx需要包括Nginx的库,安装Nginx的库 #rpm -Uvh http:/ ...

  3. js跳转

    window.location.reload(); //刷新当前页,参数保留

  4. JavaScript数组类型

    特点 动态长度 一个数组里面的元素可以是不同类型 数组的length属性不是只读属性,可通过length延长数组也可以删减数组的长度 定义数组两种方法 //方法一: var names = new A ...

  5. SQL数据库中字段类型 与C#中的对应字段类型

    数据库中的字段类型和对应的C#中的对应字段类型 数据库                 C#程序int int32text stringbigint int64binary System.Byte[] ...

  6. jq菜单折叠效果

    <!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8" ...

  7. 记一次python编码错误

    摘要: 断断续续写python一段时间了,让我说python最令我头疼的问题,莫过于编码问题.最近做大论文,使用python再次出现编码报错.错误如下: "UnicodeEncodeErro ...

  8. Hibernate的性能优化问题

    本文是根据Hibernate帮助文档,以及一些书籍及项目经验整理而成,只提供要点和思路,具体做法可以留言探讨,或是找一些更详细更有针对性的资料. 初用Hibernate的人也许都遇到过性能问题,实现同 ...

  9. 让Xcode 8.x能够调试iOS 7.x真机

    首先需要 Xcode 7.x.可以去 苹果开发者官网 下载. 打开Finder, 进入文件夹: Xcode .x.app/Contents/Developer/Platforms/iPhoneOS.p ...

  10. Docker常见问题解决

    一.Docker中运行ubuntu容器,字体颜色太深导致无法看清 解决方案: 1. 利用dircolors命令,查看我们的系统当前的文件名称显示颜色的值,然后利用管道重定向到用户目录下的任意一个文件( ...