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. 作业---修改haproxy配置文件

    #查询 f=open("C:\\aaaaaaaaaaaaa\\haproxy.txt", "r", encoding="utf-8") ha ...

  2. IOS屏幕旋转思路和实践

    这段时间同事在做一个直播项目,项目有个需求:一个界面需要手动设置屏幕的方向,设置好之后方向不能变化.完成这个需求花了特别大的精力,归因是网上关于屏幕旋转的知识比较凌乱,解决问题花费不少时间,最后决定把 ...

  3. Functional programming idiom

    A functional programming function is like a mathematical function, which produces an output that typ ...

  4. centos7 系统优化脚本

    脚本一: #!/usr/bin/env bash #设置环境变量 export PATH=$PATH:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sb ...

  5. VMare Workstation 12 安装 AsteriskNow freePBX

    一.准备工作 VMware 12 安装好的电脑 AsteriskNow iso文件  官网地址 https://www.asterisk.org/downloads 本人提供相关分享:https:// ...

  6. gradle项目

    gradle构建web项目 0.安装gradle http://services.gradle.org/distributions/ 下载对应版本:gradle-5.2.1-bin.zip 解压到自定 ...

  7. JS面试Q&A(续2): Rest parameter,Arrow function 等

    rest parameter 和 Destructuring assignment. function fun1(...theArgs) { console.log(theArgs.length);} ...

  8. js 连接mqtt

    js连接mqtt 项目中要用到mqtt,前端调用,使用github开源的paho-mqtt.js,api还是挺全面的,网上各种教程很全面,但是感觉代码过于杂乱,故而封装的一下.仿jquery ajax ...

  9. Docker最简教程

    本文旨在让你用最短的时间弄懂Docker命令操作,什么虚拟化都太泛泛了,不讲大道理,实践出真知,让你从此的日常开发和工作中在面对Docker时不再茫然失措而是得心应手.本文也不谈安装,我实在认为作为程 ...

  10. B树与B+ 树

    本文转载自:http://www.cnblogs.com/yangecnu/p/Introduce-B-Tree-and-B-Plus-Tree.html 维基百科对B树的定义为“在计算机科学中,B树 ...