TCP协议和UDP协议区别

标签(空格分隔): TCP,udp


TCP的三次握手

TCP被称为可靠的数据传输协议,主要是通过许多机制来实现的其中最主要的就是三次握手的功能,当然,TCP传送数据的机制非常复杂,有兴趣的朋友请自行参考相关的网络书籍,那么如何利用TCP的包头来确认这个数据包已经被对方接收,并进一步对方的主机实现连接?我们以图说明:

在上边的数据包连接的过程中,必须经过三次确认的动作,所以这种连接方式也被称为三次握手(Tree-way handshake)那么我们将上边的步骤分为:A,B,C,D四个阶段来说明;

  • A:数据包发起:
  • B:数据包接受也确认数据包传输:
  • C:回送确认数据包:
  • D:取得最后的确认:
    若一切顺利,就能建立真正的连接了;
    也就是说你必须了解“网络是双向的”这个事实,所以不论是客户端还是服务端都必须通过一次SYN和ACK来建立连接,所以总共进行三次交谈!在设定的防火墙或者是追踪网络连接的问题时,这个“双向”的概念是最容易忽略的,而且常常导致无法成功连接的问题;
  • 如下例子模拟三次握手:
    有人问:***你在吗?
    回答:在的,你在吗?
    对方回答:在的
    此时两个人确认彼此都可以听到对方的时候,就可以建立可靠的连接了;

无连接的UDP的协议:

UDP的全称是即:用户数据报协议,UDP和TCP不一样,UDP不提供可靠的传输模式,因为它不是面向连接的机制,这是因为在UDP的传送过程中,接收端在接收导数据包之后,不会回复响应数据包(ACK)给发送端,所以数据包并不像TCP有较为严密的检查机制;

TCP的数据包确实是比较可靠的,因为通过三次握手,不过,也由于三次握手的缘故,TCP数据包的传输速度会非常的慢,至于UDP数据包由于不需要确认对方是否正确的收到数据,故报头数据较少,所以UDP就可以在data 处填充更多的数据,同时UDP比较适合需要实施反映一些数据流,例如影向实时传输软件等等,就可以实用这类的数据包传输,也就是UDP的传输并不考虑连接要求,连接终止与流量控制等特性,所以适合的场景是:当数据的正确性要求不是很重要的时候,例如:网络摄影机;

另外的很多的软件提供了TCP和UDP的传输协议的,举例来说,查看主机的名字DNS服务就同时提供了TCP和UDP协议,由于UDP较为快速,所以我们的client端可以先使用UDP来与服务器连接,但是当使用UDP连接却还是无法取得正确的数据时,便转换为较为可靠的TCP协议来传输了,这样可以同时兼顾快速和可靠的传输;

  • :例子:上课的时候老师一直讲很多的东西,不管同学听不听他都一直讲,也不需要学生的响应,就一直讲,这就是UDP协议

TCP协议和UDP协议基础介绍的更多相关文章

  1. python语法基础-网络编程-TCP协议和UDP协议

    ###############    网络编程    ############## """ 网络编程 学习了Python基础之后,包括函数,面向对象等,你就可以开发了,你 ...

  2. python 全栈开发,Day33(tcp协议和udp协议,互联网协议与osi模型,socket概念,套接字(socket)初使用)

    先来回顾一下昨天的内容 网络编程开发架构 B/S C/S架构网卡 mac地址网段 ip地址 : 表示了一台电脑在网络中的位置 子网掩码 : ip和子网掩码按位与得到网段 网关ip : 内置在路由器中的 ...

  3. (1)基于tcp协议的编程模型 (2)tcp协议和udp协议的比较 (3)基于udp协议的编程模型 (4)反射机制

    1.基于tcp协议的编程模型(重中之重)1.1 编程模型服务器: (1)创建ServerSocket类型的对象,并提供端口号: (2)等待客户端的连接请求,调用accept()方法: (3)使用输入输 ...

  4. (1)网络编程的常识 (2)基于tcp协议的编程模型 (3)tcp协议和udp协议的比较 (4)基于udp协议的编程模型

    1.网络编程的常识 目前主流的网络通讯软件有:微信.QQ.YY.陌陌.探探.飞信.阿里旺旺.... 在吗? 1.1 七层网络模型(熟悉) 为了保证数据传递的可靠安全等等,ISO(国际标准委员会组织)将 ...

  5. python基础-TCP协议和UDP协议

    TCP协议是一种流式协议,UDP协议是一种数据包协议. TCP和UDP是OSI模型中传输层的协议.TCP提供可靠的通信传输,而UDP则常被用于让广播和细节控制交给应用的通信传输. TCP和UDP区别总 ...

  6. TCP协议和UDP协议的区别

    1. TCP协议面向连接. UDP协议面向非连接 (有无链接)2. TCP协议传输速度慢. UDP协议传输速度快 (传输速度)3. TCP协议保证数据顺序. UDP协议不保证 (数据的有序性. 在IP ...

  7. TCP协议和UDP协议下的socket

    UDP协议的服务端和客户端: ##udp_服务端 import socket udp_server = socket.socket(type=socket.SOCK_DGRAM)#选择udp协议 ip ...

  8. tcp协议和udp协议的使用场景

      一:什么是TCP(Transmission Control Protocol,传输控制协议) tcp是面向连接的协议,也就是说,在收发数据前,必须和对方建立可靠的连接.一个TCP连接必须要经过三次 ...

  9. TCP协议和UDP协议区别

    tcp协议:可靠的.面向连接的协议(eg:打电话).传输效率低全双工通信(发送缓存&接收缓存).面向字节流.使用TCP的应用:Web浏览器:文件传输程序 udp协议:不可靠的.无连接的服务,传 ...

随机推荐

  1. Ubuntu 16.04 安装 Python3.6

    直接在官网下载 Python3.6.3 的源代码,解压缩,按照 README.rst 内说明步骤编译安装即可,这样 pip3.6 也会自动安装. 注意第一步配置时最好指定安装目录, $ ./confi ...

  2. vue2.9.5 引入vue-strap时报错

    1.vue2.9.5 引入vue-strap时出错 2.组件中引入vue-strap的具体代码如下: 1 import DatePicker from 'vue-strap/src/Datepicke ...

  3. rabbit原理及项目应用

    1.rabbitMQ是什么? mq是由erlang语言开发的开源的amqp的实现. 2.rabbitMQ的基本原理是什么? 使用RabbitMQ,首先需要与rabbitMQ的visiu host建立连 ...

  4. Oracle “CONNECT BY” (层级递归查询)

    Oracle “CONNECT BY”是层次查询子句,一般用于树状或者层次结果集的查询.其语法是: ? 1 2 [ START WITH condition ] CONNECT BY [ NOCYCL ...

  5. 巨坑– 膜BWV543

    我不是一个喜欢膜别人的人,我从来都不擅长去夸奖.当面对巴赫的作品时,我发现我的敬佩难以用语言表达.我决定用另一种方式来表达我的欣赏,那就是分析并背下这个谱子. http://music.163.com ...

  6. Layout-2相关代码:3列布局代码演化[一]

    <!doctype html> <html> <head> <meta charset="utf-8"> <title> ...

  7. Why Lua?

    Why Lua? 最近在很多的地方都遇到了lua这个东西,于是想一探究竟,为什么这么多的游戏前端都用了Lua脚本呢? 于是乎简单的看了一下Lua,目前总结出来了几点~ 还是先放上资源: GitHub上 ...

  8. 服务调用框架DataStrom

    根据以前的命名服务,从新构建了下服务框架: 结构模式:c-center-s; 1.服务端: 服务端启动,讲自己的IP,端口注册到注册中心节点(master),然后注册自己的处理类(需要继承对应接口); ...

  9. VUE插件总结

    亲们支持我的新博客哦==>地址(以后更新会尽量在新博客更新,欢迎大家访问加入我的后宫w) ) UI组件 element - 饿了么出品的Vue2的web UI工具套件 Vux - 基于Vue和W ...

  10. 走进HashMap

    1.手写实现HashMap 2.解析代码并阐述HashMap1.7到1.8的变化 3.HashMap的遍历方式 4.HashMap与HashSet,Hashtable,ConcurrentHashMa ...