数据原来是这么传输的(结合动画解析)

本文涉及的产品
数据传输服务 DTS,数据迁移 small 3个月
推荐场景:
MySQL数据库上云
数据传输服务 DTS,数据同步 small 3个月
推荐场景:
数据库上云
数据传输服务 DTS,同步至SelectDB 1个月
简介: 从1990年,世界上第一个互联网Web网页诞生,到现在2021年,已经过去了30多个年头。

前言


世界上第一个互联网web网页诞生于1990年12月25日(次年8月对外开放),至今大约有28年的历史,它是由万维网之父蒂姆·伯纳斯·李(Tim Berners-Lee)与罗伯特·卡里奥在CERN(欧洲核子研究委员会)一起打造,首次成功通过因特尔网络实现HTTP代理与服务器通讯。而这次通讯成功,标志着互联网的到来,具有划时代的意义。


1990年,世界上第一个互联网Web网页诞生,到现在2021年,已经过去了30多个年头。


我们每天都可以通过互联网搜索信息,查看新闻,打游戏,办公。互联网的使用已经融入我们的生活,再也离不开了。


那么对于互联网中数据的传输过程,你了解多少呢?面试遇到类似的问题你能答上来吗?


今天我将结合动画形式和大家聊聊网络传输数据的过程


应用层(从输入网址开始)


7.png


当我们在浏览器中输入我们的网址,网络就开始数据传输了。


比如我们输入 http://www.google.com


那么浏览器就会根据我们输入的这个URL,进行解析。


一般一个URL的格式如下:


http://www.baidu.com:80/s?ie=utf-8


其中:


  • http 属于协议类型
  • www.baidu.com 属于服务器地址
  • 80 属于端口号
  • /s 属于路径
  • ie=utf-8 属于携带参数


经过这样的解析,最后会形成一个叫做请求消息的东西,也叫请求报文。


这个请求报文的一般格式是这样的:


(请求行)
GET /s HTTP/1.1
(请求头Header)
Host: www.baidu.com
Content-Type: text/plain
(请求体Body)
name=123


  • 请求行(包括请求方法、请求路径、HTTP版本)
  • 请求头Header(包括域名、数据类型、cookie、等等)
  • 请求体Body(一般存储post请求时候的一些参数数据)


到此一个请求报文,或者叫HTTP请求消息,就生成好了。


但是浏览器的工作还没完成哦,


在这之后,浏览器还做了一件事,就是去DNS服务器上查询这个域名对应的IP地址


当然浏览器本身是查询不了的,需要借助电脑上的DNS解析器,其实就是一个DNS客户端


DNS,域名系统(英文:Domain Name System,缩写:DNS)是互联网的一项服务。它作为将域名和IP地址相互映射的一个分布式数据库,能够使人更方便地访问互联网


DNS解析器会向DNS服务器发送查询消息,带着这个域名。然后DNS服务器就会返回相应的响应消息,带上域名对应的IP地址


到此,浏览器的工作就完成了,接下来就交给操作系统中的TCP协议栈,也就是我们常说的传输层。


传输层TCP(拿到数据了我该怎么做)


8.gif


说到TCP,可能有人就会问了,TCP到底在哪呢,到底是啥呢?


  • 首先,TCP是一个协议,传输控制协议。
  • 其次,它会在系统中存在一个TCP传输实体。TCP实体可以是一个库过程、一个用户进程,或者内核的一部分。


所以可以理解为一个TCP进程,管理着TCP相关的流、进行TCP协议相关的工作。


TCP拿到数据之后,首先要做的就是把数据分成一个个数据包


主要是为了数据传输的稳定、安全


  • 1、如果数据过大,本身传输的速度就变慢了,如果过程中发生问题,又要重新传,大大降低了效率。所以分成一个个小的数据包就能在某个包发生问题后,只需要重传这个包就行了。
  • 2、分成多个数据包之后,也增加了对数据窃听的困难,如果要窃听,需要拿到所有的数据并且能正确拼接才行。
  • 3、是关于路由的问题,不同的包经过不同路由到底目的地,就算某个路由中断,也只会造成比较小的影响。


所以互联网就基于包交换来传输信息,也限定了每个数据包的大小。


TCP层的第一个工作,就将刚才拿到的数据分成一个个数据包,然后做第二步工作:加头信息


大家从动画中应该可以看到,在每个数据包上都会加一段头信息,头信息中有两个重要信息,大家一定要记住:


  • 序号(发送数据的顺序编号)
  • ACK号(接受数据的顺序编号)


这两个信息在数据双向传输中发挥了重要的作用,关系到数据的拼装、数据重传等,下次说到三次握手的时候会说到。


加上了TCP头信息的数据包,就改名叫做TCP数据包


然后将这个TCP数据包发送给IP协议模块


网络层IP(我要找到传输的方向)


9.png


首先我们要明确的一点就是,网络中数据不是一下就从客户端传到服务器端的,中间会穿插很多路由器转接。


路由器是连接两个或多个网络的硬件设备,在网络间起网关的作用,是读取每一个数据包中的地址然后决定如何传送的专用智能性的网络设备。


就像这样:


10.png


再说回数据传输


IP模块拿到TCP数据包之后,又要开始添加数据头信息,首先增加了一个IP头信息:

IP头信息中包含了目的地的IP地址


然后通过这个IP地址,就知道数据传输的方向,从而找到下一个路由器MAC地址。然后再次增加一个头部,MAC头信息:


MAC头信息就包括了下一个路由器的MAC地址


最后的以太网数据包就是这个样子:(图片来源自参考链接)


11.png


IP模块会将这个数据包发送给数据链路层。


数据链路层(我才是真正把信息发出去的!)


12.png


数据链路层是负责网络在现实世界的一个表现,比如以太网,Wi-Fi


数据链路层拿到数据包之后,会转换成电信号或者光信号


电信号是指随着时间而变化的电压或电流.


然后通过网线或者光纤发送出去,再由路由器等转发设备一步步到底我们的目的地——服务器。


数据接收


13.png


数据的接收和发送的过程完全相反。


  • 数据包到达服务器的数据链路层,比如以太网,然后会将其转换为数据包(数字信号)交给IP模块
  • IP模块会将MAC头部和IP头部后面的内容,也就是TCP数据包发送给TCP模块。
  • TCP模块会解析TCP头信息,然后和客户端沟通表示收到这个数据包了。
  • TCP模块在收到消息的所有数据包之后,就会封装好消息,生成相应报文发给应用层,也就是HTTP层。
  • HTTP层收到消息,比如是HTML数据,就会解析这个HTML数据,最终绘制到浏览器页面上。


到此,整个网络通信就简单介绍完了。


参考


百度百科


《网络是怎样连接的》


https://www.ttssoo.com/huanqiushiye/shijie-shangdi-yigehub.html 

http://www.ruanyifeng.com/blog/2017/06/tcp-protocol.html

目录
相关文章
|
7月前
|
数据采集 JSON 数据可视化
JSON数据解析实战:从嵌套结构到结构化表格
在信息爆炸的时代,从杂乱数据中提取精准知识图谱是数据侦探的挑战。本文以Google Scholar为例,解析嵌套JSON数据,提取文献信息并转换为结构化表格,通过Graphviz制作技术关系图谱,揭示文献间的隐秘联系。代码涵盖代理IP、请求头设置、JSON解析及可视化,提供完整实战案例。
450 4
JSON数据解析实战:从嵌套结构到结构化表格
|
7月前
|
JSON 监控 网络协议
Bilibili直播信息流:连接方法与数据解析
本文详细介绍了自行实现B站直播WebSocket连接的完整流程。解析了基于WebSocket的应用层协议结构,涵盖认证包构建、心跳机制维护及数据包解析步骤,为开发者定制直播数据监控提供了完整技术方案。
|
7月前
|
机器学习/深度学习 JSON 算法
淘宝拍立淘按图搜索API接口系列的应用与数据解析
淘宝拍立淘按图搜索API接口是阿里巴巴旗下淘宝平台提供的一项基于图像识别技术的创新服务。以下是对该接口系列的应用与数据解析的详细分析
|
8月前
|
Java API 数据处理
深潜数据海洋:Java文件读写全面解析与实战指南
通过本文的详细解析与实战示例,您可以系统地掌握Java中各种文件读写操作,从基本的读写到高效的NIO操作,再到文件复制、移动和删除。希望这些内容能够帮助您在实际项目中处理文件数据,提高开发效率和代码质量。
192 4
|
8月前
|
数据采集 监控 搜索推荐
深度解析淘宝商品详情API接口:解锁电商数据新维度,驱动业务增长
淘宝商品详情API接口,是淘宝开放平台为第三方开发者提供的一套用于获取淘宝、天猫等电商平台商品详细信息的应用程序接口。该接口涵盖了商品的基本信息(如标题、价格、图片)、属性参数、库存状况、销量评价、物流信息等,是电商企业实现商品管理、市场分析、营销策略制定等功能的得力助手。
|
8月前
|
数据采集 前端开发 API
SurfGen爬虫:解析HTML与提取关键数据
SurfGen爬虫:解析HTML与提取关键数据
|
7月前
|
缓存 监控 搜索推荐
【实战解析】smallredbook.item_get_video API:小红书视频数据获取与电商应用指南
本文介绍小红书官方API——`smallredbook.item_get_video`的功能与使用方法。该接口可获取笔记视频详情,包括无水印直链、封面图、时长、文本描述、标签及互动数据等,并支持电商场景分析。调用需提供`key`、`secret`和`num_iid`参数,返回字段涵盖视频链接、标题、标签及用户信息等。同时,文章提供了电商实战技巧,如竞品监控与个性化推荐,并列出合规注意事项及替代方案对比。最后解答了常见问题,如笔记ID获取与视频链接时效性等。
|
7月前
|
存储 缓存 监控
如何高效爬取天猫商品数据?官方API与非官方接口全解析
本文介绍两种天猫商品数据爬取方案:官方API和非官方接口。官方API合法合规,适合企业长期使用,需申请企业资质;非官方接口适合快速验证需求,但需应对反爬机制。详细内容涵盖开发步骤、Python实现示例、反爬策略、数据解析与存储、注意事项及扩展应用场景。推荐工具链包括Playwright、aiohttp、lxml等。如需进一步帮助,请联系作者。
|
7月前
|
JSON API 数据格式
淘宝商品评论API接口系列的应用与数据解析
在电商平台中,用户评论是了解商品质量、服务水平和用户满意度的重要数据来源。淘宝作为中国最大的电商平台,提供了商品评论API接口,帮助开发者获取和分析用户评价数据。本文将介绍淘宝商品评论API接口系列的作用、使用方法,并通过示例展示如何调用API并解析返回的JSON数据。
|
8月前
|
存储 数据采集 JSON
Python爬取某云热歌榜:解析动态加载的歌曲数据
Python爬取某云热歌榜:解析动态加载的歌曲数据

推荐镜像

更多
  • DNS