10.网络协议栈及数据传输

量子传输,玄幻的空间大挪移,想起来某个电影里头就是人站到一个通道下,然后会有一个机器把人打散成量子碎末,然后通过高速通道输送到对应的时空,然后再重新组装人。

那么我们日常中的浏览器的和服务器之间的数据包的传输也是一样的道理,我们刷页面,浏览器需要去服务器获取数据,这样的一来一往的传输都是需要将请求和回传压缩成16进制的数据,然后经过各种人为设计好的通道,然后再将16进制的重组成一个数据交给服务器的监听程序处理,交给某个进程下的某个线程处理,这其中就涉及到以下几个概念

1)数据转化成16进制 2)数据经过各种层级进行传输 3)数据再还原 4)服务器开源程序5)监听 6)进程7)线程 8)端口

那么就一个详细说一下对于这些的理解和学习

通道是分层的分为

应用层:为应用程序提供数据传输的网络接口,应用程序就是浏览器,常见的http,ftp协议都是在这一层对数据进行包装

传输层:提供端到端的链接,主要是TCPIP 协议,TCP会通过三次握手实现数据的传输,IP提供寻址的作用

IP层:寻找对方地址

数据链路层:将数字信号转化成物理层可用的电或光信号

物理层:这个就是物理介质层,比如光纤、声波、电信号、电磁波等

应用层(浏览器)数据通过上述5个层次加工后到达目的服务器,然后再逆向的解析出来,所以说以上5个是互联网网络协议栈。栈的概念就是先进后出,最先包装的应用层协议头,最后被揭开

之所以要分成设计协议层来实现数据的包装盒传输,主要是这样的设计可以便于每一层单独进行进化和优化和改动

详细说一下TCP和UDP协议,他们都属于在传输层的协议,区别是TCP对于数据的传输是需要三次握手的,但是UDP是不需要的,只用控制超时后重发就行,但是在此之外谷歌退出了QUIC协议,建立在UDP基础上,,使用了向前就错的方式,就是发送基本数据包的同时,也发送校验包,如果发生丢包,直接用校验包就可以,而且QUIC协议采用了一个连接中带多个请求方式来避免建立多个连接,如果之前建立过连接,再次建立连接时无需确认,直接开始发送数据,原理就是本地保存了之前建立连接需要一些秘钥

当然任何协议层的改进,都得推进应用层做出对应的适配,应为一切数据的发生开端都是从应用层开始,所以QUIC需要的一些请求参数也需要应用层进行配合不然也是白搭,所以谷歌推出后chrom浏览器就已经开始支持该协议,当然数据都是需要再回传到应用层才能全线贯通,所以只有应用层支持该协议也不行还得应用层的目标服务器也支持该协议,这样QUIC只有在应用端和服务端都开始大力推进的时候互联网加速才能实现

TCP可靠性的体现

1)顺序编号

一个大文件在网络上用TCP协议传输的时候,会被拆分成多个TCP包,一个TCP包是1k,所以1M的数据会被拆分成1024个包,TCP协议会对这些包进行有序编号

2)确认机制

当数据包被对方ip成功接收,接收方会遵循TCP协议向发送方反馈一个接收成功的信号,并且会带着成功包的序号

3)超时重传

发送方没发送给一个数据包都会对这个数据包做一个定时器,当定时器归零的时候,发送方仍然没有接收到接收方的信息,则认为失败,那么发送方会对该数据包进行重新传递

你可能感兴趣的:(10.网络协议栈及数据传输)