使用大白话介绍TCP协议以及其为什么要这么设计

因为在真实计算机之间传输的的其实是0、1比特流,0和1呢其实就是高低电压之间的不断转换(曼彻斯特编码的由来)–需要时间-但是两个比特流之间会有更长的一段时间,通过发送较长的时间间隔才会识别第二份bit数据。而物理层协议它保证了不同的设备,不同的传输介质之间能够互相传递消息。

​ 咱们计算机是通过网卡来接受和传递网络信号的,但是由于计算机内部内部是弱电压,通过网卡以及差分曼彻斯特编码转换为(弱)强电压就可以实现相互通信了。但是双方都不知对方在说啥,(好比中国人和美国人 — 美国人知道中国人在说话但是不知道干嘛,中国人也是)所以产生了协议

​ 任意两台设备之间相互通信是需要协议的(比如两个中国人能交流遵循“汉语协议”),任何两个独立设备沟通首先要有协议。

然后我通过一个例子来大概讲解

文字目的ip地址目的端口号回执消息来源ip地址来源端口号响应时间超时重发(网卡备)过期时间1、过大数据需要分包2、数据总大小3、序号CRC校验码备用字段

假设发送一个文字到另外一台设备。

​ "文字"是在通过磁介质存储磁盘中通过转动磁指针找到对应的存储位置发送到内存中,因为内存是通过电容存储的,所以通过弱电压将0、1比特流发送给网卡,网卡呢通过差分曼彻斯特编码将其转换为强电压发送出去(详细看发送细节)另外一台设备通过网卡转换为弱电压,发送到内存中再比照型状库,显示再显示器上

发送细节:

​ 由于这时候不知到发给谁,所以发送数据的时候需要加上IP地址,但是另外一台设备上可能有很多上网软件,不同的上网程序之间是通过端口号来识别的(2^16个端口号)所以还要加上端口号,但是这时候想要知道对方到底有没有收到消息所以呢加入回执消息,想要回执就要知道来源以及那个程序要接收加入来源IP和来源端口,但是由于是网络发送(并不像现实说话了立刻回话,如果a给b发送消息过了40年b回收到了,太晚)所以需要加上响应时间(a发出之后多长时间内要给出响应),如果一定时间内没有收到,所以需要有一个超时重发(意味着发送的数据在网卡中有备份)。备份就意味着浪费内存,不能长时间备份,所以需要一个加入过期时间

所以协议除了保证通信还要考虑到靠谱的稳定的传输

时间同步网:每隔一段时间会接收由另外一套体系发过来的时间,进行全网同步保证全网时间高度一致(本地时间、和网络时间。在此指网络时间)。

​ 刚刚我是拿一个文字来举例的,它的传输比较小,但是如果我们想要传输比较大的文件的话,a和b一直形成一条导线,其他的导线不能连接就断网,可能会造成网卡只接受了这个其他消息都接受不到的情况。所以超大数据文件它会导致断网

​ 假设a和b发送好几十个G的数据,a和b一直形成一条导线,其他的导线不能连接就断网所以这时候需要将大量数据转换为多份小数据这就是分包。这样每份小数据之间就有了较大的时间间隔,路由器趁着这个时间间隔可以给其他的设备发送数据,这样不会导致其他设备断网。但是会让其他人网络会慢(卡)一些。这就是为什么会网卡

​ a拆开发送b接受之后会进行组装,由于发送的时候会经过多个交换设备,可能触发超时重发机制或者数据过期导致接收数据时间不一样。所以必须要接收到所有数据才能进行组装。所以需要一个数据总大小。由于需要知道怎么组装所以数据拆分之后还需要序号。如果组装不对就会造成文件损坏的情况

为什么浏览器下载东西下载到差一点到100%就是不能用?

这就是下载东西的时候就差一点点但是就是不能用。因为不知道缺失的是那一块(所以必须要重新下载)—其实是可以的(因为有序号但是现在没有这个功能,而且对比序号需要一个一个的对比很麻烦还不如直接重新下)数据包分的很多单数据包也就几十kb需要成千上万个,浏览器如果要记录太麻烦了。

**视频加载技术(可以边下载边播放技术)**协议本身是不自带的需要我们自己写

由计算机底层必须是完整的文件才能组装,假设将这个视频包拆成100个完整的子视频每个子文件拆的时候也是需要拆成多个数据包(每来一个子文件加载长1%),所以传过来就能播放(子视频不是严格按照分包的时候顺序来到达的)。

断点续传:

就是就是记录了以及到达的序号在下次联网的时候再次接着序号下载。断点续传和视频加载都是文件切割

为什么要加效验码?

假设高低电压01010,低电压是2高电压是5,对应的就是25252,但是由于万物都有误差(初中知识),假设接收过来的是1.8、5.5、2.5、4.7、1.9(低、高、低、高)假设有一个带磁场的东西(例如:手机,电磁炸弹)经过导线附近,导线就会产生切割磁感线运动,根据安培定律,会产生电压信号,会干扰到原来的电压信号(正向电压加强信号,反向电压削弱信号)----这就是太阳风暴爆发的时候或者电磁脉冲炸弹会让通信中断的原理(爆发时所以的线都产生切割磁感线行为,会导致所有传输的数据不对)也是就说接收到了但是传输的数据不对。虽然在发送的时候有个总大小但是就相当于(我给一个人发了钱给了总重量,但是钱的金额是多少并不清楚)所以在发送的时候需要加入CRC校验码(其实就是关联数据)根据一个公式 双方计算出的值应该是一样的就是对的

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值