网络传输相关概念

持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第9天,点击查看活动详情

网络传输

数据包

image-20220706152447483

按层封装,本质上是一段内存,里面存储的内存是有序的,一般是按照TCP/IP的多层协议去封装。拆包/封包都是按照协议去写内存/读内存。

数据包发送

客户端与服务端进行交互——按层递进

image-20220706153325462

DNS请求过程

image-20220706153545042

流程:

  • 客户端发www.douyin.com的解析请求
  • 递归解析器去问“"" , com.去哪里解析
  • 递归解析器去问“com.", douyin.com去哪里解析
  • douyin.com告诉递归解www.douyin.com解析到xxx

DNS的传输协议UDP

image-20220706154205269

  1. 简单使用UDP(例如发送一个DNS数据包,失败则重新发送)

  2. 复杂使用UDP

    由于UDP是不稳定的传输,因此无法知道是否丢包

TCP三次握手

TCP连接仅仅是通过一定的数据包交互获取的一个状态。跟你存在mysql里面某个客户端给你的数据本质上没有区别,它的"连接"是虚拟的。

确认传输的序列号/MSS/Option字段,建立连接

TCP传输

image-20220706160158031

image-20220706160217483

典型的tcp协效要求每一个数据段发送之后都要有一个ack回复,然后才能发送下一个数据段,虽然这样能保证数据的可靠传输,但是效率不高,由于tcp是全双工通信,在等待一个数据段的 ack恢复之前网络将会闲置,因此效率将会受到极大影响,因此协议提出了滑动窗口子协议,专门负责数据的传输,滑动窗口子协议分为简单的停-等协议,后退N协议,以及选择重传协议三个子协议,其实三个子协议可以由一个例程表示,只是一个例程的三个不同情况,比如发送和接收窗口都为1时就是简单的停等协议。三个子子协议都很复杂,只有靠这种复杂的机制才换取了网络链路的高效利用。

HTTP/HTTP1.1

image-20220707103833649

用TCP编程过于复杂,用HTTP协议可以使创作者专注于实现过程本身,(可以将TCP看成一个概念,但HTTP偏于实践,专用语)

HTTP比TCP方便

HTTP1.1的优化——长连接

HTTPS

即——如果在打开一个网址(网络传输中)被插入小网站

HTTPS解密后依然是HTTP

举例:image-20220707104752087

SSL/TLS握手

即HTTPS的加密方式——即对称加密和非对称加密

举例: image-20220707105129448

在现实情况下

image-20220707105655315

在非对称加密中,会在盒子中进行加密方式,第三方CA证书来作为一个合法性标准。(由于盒子非常难开,因此非对称加密非常消耗资源,在TLS的优化也主要集中在非对称加密)

总结

在打开抖音,开始接入的过程经过了

网络连接协议——网络传输协议——刷抖音

posted @ 2022-10-08 22:15  Luciferpluto  阅读(2)  评论(0)    收藏  举报  来源