zoukankan      html  css  js  c++  java
  • TCP/UDP协议到底是什么

    TCP/UDP协议到底是什么

    TCP详解推荐博客:https://www.jianshu.com/p/ef892323e68f

    三握四挥参考博客:https://blog.csdn.net/sinat_36629696/article/details/80740678

    阮一峰的网络日志 :http://www.ruanyifeng.com/blog/2017/06/tcp-protocol.html

    UDP详解推荐博客:https://blog.csdn.net/chengfengwenalan/article/details/84496477

    TCP/IP协议分层

    TCP 是互联网核心协议之一 ,TCP/IP协议族按照层次由上到下,层层包装。

    1. 物理层
      主要是处理机械的、电气的和过程的接口,以及物理层下的物理传输介质等。
    2. 数据链路层
      的任务是加强物理层的功能,使其对网络层显示为一条无错的线路。
    3. 网络层
      确定分组从源端到目的端的路由选择。路由可以选用网络中固定的静态路由表,也可以在每一次会话时决定,还可以根据当前的网络负载状况,灵活地为每一个分组分别决定。
    4. 传输层
      从会话层接收数据,并传输给网络层,同时确保到达目的端的各段信息正确无误,而且使会话层不受硬件变化的影响。通常,会话层每请求建立一个传输连接,传输层就会为其创建一个独立的网络连接。
    5. 会话层
      允许不同机器上的用户之间建立会话关系,既可以进行类似传输层的普通数据传输,也可以被用于远程登录到分时系统或在两台机器间传递文件。
    6. 表示层
      用于完成一些特定的功能,这些功能由于经常被请求,因此人们希望有通用的解决办法,而不是由每个用户各自实现。
    7. 应用层
      包含了大量人们普遍需要的协议,不同的文件系统有不同的文件命名原则和不同的文本行表示方法等,不同的系统之间传输文件还有各种不兼容问题,这些都将由应用层来处理。此外,应用层还有虚拟终端、电子邮件和新闻组等各种通用和专用的功能。

    连接管理机制

    正常情况下, TCP需要经过三次握手建立连接, 四次挥手断开连接.

    • 那么什么是三次握手? 什么是四次挥手呢?

    三次握手

    第一次:
    客户端 - - > 服务器 此时服务器知道了客户端要建立连接了
    第二次:
    客户端 < - - 服务器 此时客户端知道服务器收到连接请求了
    第三次:
    客户端 - - > 服务器 此时服务器知道客户端收到了自己的回应

    到这里, 就可以认为客户端与服务器已经建立了连接.

    再来看张图:

    四次挥手

    所谓的四次挥手即TCP连接的释放(解除)。连接的释放必须是一方主动释放,另一方被动释放。以下为客户端主动发起释放连接的图解:

    “四次挥手”的通俗理解

    举个栗子:把客户端比作男孩,服务器比作女孩。通过他们的分手来说明“四次挥手”过程。

    • "第一次挥手":日久见人心,男孩发现女孩变成了自己讨厌的样子,忍无可忍,于是决定分手,随即写了一封信告诉女孩。
    • “第二次挥手”:女孩收到信之后,知道了男孩要和自己分手,怒火中烧,心中暗骂:你算什么东西,当初你可不是这个样子的!于是立马给男孩写了一封回信:分手就分手,给我点时间,我要把你的东西整理好,全部还给你!男孩收到女孩的第一封信之后,明白了女孩知道自己要和她分手。随后等待女孩把自己的东西收拾好。
    • “第三次挥手”:过了几天,女孩把男孩送的东西都整理好了,于是再次写信给男孩:你的东西我整理好了,快把它们拿走,从此你我恩断义绝!
    • “第四次挥手”:男孩收到女孩第二封信之后,知道了女孩收拾好东西了,可以正式分手了,于是再次写信告诉女孩:我知道了,这就去拿回来!这里双方都有各自的坚持。女孩自发出第二封信开始,限定一天内收不到男孩回信,就会再发一封信催促男孩来取东西!男孩自发出第二封信开始,限定两天内没有再次收到女孩的信就认为,女孩收到了自己的第二封信;若两天内再次收到女孩的来信,就认为自己的第二封信女孩没收到,需要再写一封信,再等两天…..

    倘若双方信都能正常收到,最少只用四封信就能彻底分手!这就是“四次挥手”。

    UDP协议

    TCP/UDP协议的区别

    TCP的优点: 可靠,稳定 TCP的可靠体现在TCP在传递数据之前,会有三次握手来建立连接,而且在数据传递时,有确认、窗口、重传、拥塞控制机制,在数据传完后,还会断开连接用来节约系统资源。 TCP的缺点: 慢,效率低,占用系统资源高,易被攻击 TCP在传递数据之前,要先建连接,这会消耗时间,而且在数据传递时,确认机制、重传机制、拥塞控制机制等都会消耗大量的时间,而且要在每台设备上维护所有的传输连接,事实上,每个连接都会占用系统的CPU、内存等硬件资源。 而且,因为TCP有确认机制、三次握手机制,这些也导致TCP容易被人利用,实现DOS、DDOS、CC等攻击。

    UDP的优点: 快,比TCP稍安全 UDP没有TCP的握手、确认、窗口、重传、拥塞控制等机制,UDP是一个无状态的传输协议,所以它在传递数据时非常快。没有TCP的这些机制,UDP较TCP被攻击者利用的漏洞就要少一些。但UDP也是无法避免攻击的,比如:UDP Flood攻击…… UDP的缺点: 不可靠,不稳定 因为UDP没有TCP那些可靠的机制,在数据传递时,如果网络质量不好,就会很容易丢包。 基于上面的优缺点,那么: 什么时候应该使用TCP: 当对网络通讯质量有要求的时候,比如:整个数据要准确无误的传递给对方,这往往用于一些要求可靠的应用,比如HTTP、HTTPS、FTP等传输文件的协议,POP、SMTP等邮件传输的协议。 在日常生活中,常见使用TCP协议的应用如下: 浏览器,用的HTTP FlashFXP,用的FTP Outlook,用的POP、SMTP Putty,用的Telnet、SSH QQ文件传输 ………… 什么时候应该使用UDP: 当对网络通讯质量要求不高的时候,要求网络通讯速度能尽量的快,这时就可以使用UDP。 比如,日常生活中,常见使用UDP协议的应用如下: QQ语音 QQ视频 TFTP ……

    有些应用场景对可靠性要求不高会用到UPD,比如长视频,要求速率。

    小结TCP与UDP的区别:

    1、基于连接与无连接;

    2、对系统资源的要求(TCP较多,UDP少);

    3、UDP程序结构较简单;

    4、流模式与数据报模式 ;

    5、TCP保证数据正确性,UDP可能丢包;

    6、TCP保证数据顺序,UDP不保证。

  • 相关阅读:
    Android变化如何破解几场金
    mysql 在创建批处理脚本日志表信息
    近期感悟要多说多想多做
    Spring使用小结2
    structs2使用小结2
    2013第50周五打包
    2013第50周四开发记
    jquery使用总结
    2013第50周三开发记
    eclipse编辑工具小结
  • 原文地址:https://www.cnblogs.com/tjw-bk/p/14280310.html
Copyright © 2011-2022 走看看