TCP面向连接的本质

HTTP-应用层协议:

1.0与1.1最大的区别在于,HTTP1.1可以支持长连接,头部加入:Connection:keep-alive,即可保持长连接,那么HTTP是如何实现保持长连接的呢?

TCP-UDP-传输层协议:

UDP:面向无连接的协议,数据封装成数据包,发送出去,不保证数据是否送达

TCP:面向连接的协议,所谓面向连接,就是在数据传输之前A和B之间保持一条”连接“,通过这条“连接”,所有的数据被可靠,有序的在两者之间传输

“连接”:这个连接并不是真正意义上的连接,称之为“虚电路”,其实也并不是说A和B之间震荡建立了一条连接,或者说保证了路由路径是一致的,因为路由选择并不是传输层控制的,传输层负责流量控制和差错控制,因此所有的拥塞控制和路由选择其实是IP协议的工作,所以说,TCP怎能保证路由路径是一样的呢,如果出现网络拥堵,必然会重新选择路径。那么这个连接究竟是什么呢?

答案是:状态和序列号,以及错误校验(可以查看TCP和UDP的请求头,就会发现两者之间的差距了),其实所谓的TCP三次握手请求连接,无非就是初始化一个序列号,保证后面的数据有序到达,同时TCP还支持重传,错误校验,保证数据的可靠性,当然UDP也提供校验。

状态:TCP与UDP的区别还在于TCP有很多状态,这个状态保证了A和B如何处理自己收到的数据包,因为如果状态是连接状态,大家可以愉快的通信,但是当一方断开连接,那么之后收到的数据包就该丢弃掉才是正确的选择,所以状态也是保证TCP可靠性的重要因素,具体了解TCP有哪些状态可以网络上搜索一下,这不是这篇的重点。

IP:网络层协议:

IP属于网络层协议,众所周知它是不可靠的,(PS:当初考试背的时候TCP/IP,可靠不可靠,哈哈),因为IP协议是不可靠的,所以不能保证数据有序无误的到达,这就需要TCP/UDP进一步完善。这里要说的不是IP的可靠不可靠,而是说IP进行路由选择,提供拥塞控制,在A和B之间传输IP数据包时,会根据网络状况调整合适的路由路径,把数据包一步一步传到目的IP地址,如果IP包超时或者丢弃,传输层的TCP会因为超时重新封装数据交给IP协议重新发送,而UDP就不会,这就是TCP的面向连接所做到的可靠性的本质。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1.这篇文章不是本人原创的,只是个人为了对这部分知识做一个整理和系统的输出而编辑成的,在此郑重地向本文所引用文章的...
    SOMCENT阅读 13,134评论 6 174
  • 个人认为,Goodboy1881先生的TCP /IP 协议详解学习博客系列博客是一部非常精彩的学习笔记,这虽然只是...
    贰零壹柒_fc10阅读 5,094评论 0 8
  • 网络概念第一天 两台电脑怎么通过网络传输数据?怎样才能知道传输的是数据?谁摸过网线? 看电影,怎么看的?通过电流,...
    小吖朱阅读 1,584评论 0 1
  • 版本记录 前言 在互联网行业中,不管你是客户端前端还是后台,只要是与网络相关,你就必须了解一些基础知识,包括这里的...
    刀客传奇阅读 1,911评论 0 16
  • 一、环境介绍 1. mysql 节点1环境 操作系统: centos x64 数据库名: lujw_mycat_d...
    desirelll阅读 762评论 0 0