29_互联网(The Internet)(IP数据包;UDP;TCP;DNS;OSI)

news2025/1/20 22:39:10

上篇介绍了计算机网络的基础知识,也提到互联网(The Internet),本篇将会详细介绍互联网(The Internet)

文章目录

  • 1. 互联网(The Internet)组成及数据包传输过程
  • 2. IP 数据包的不足
  • 3. UDP(User Datagram Protocol)
  • 4.TCP(Transmission Control Protocol)
  • 5. DNS(Domain Name System)
  • 6. OSI Model

1. 互联网(The Internet)组成及数据包传输过程

上篇介绍了你的计算机和一个巨大的分布式网络连在一起,这个网络叫互联网。
在这里插入图片描述
互联网由无数互联设备组成,而且日益增多,计算机为了获取视频首先要连到局域网,也叫 LAN(local area network),你家 WIFI 路由器连着的所有设备,组成了局域网,局域网再连到广域网,广域网也叫 WAN(Wide Area Network)
在这里插入图片描述
WAN 的路由器一般属于你的"互联网服务提供商",简称 ISP(Internet Service Provider),比如 Comcast,AT&T 和 Verizon 这样的公司。

广域网里,先连到一个区域性路由器,这路由器可能覆盖一个街区,然后连到一个更大的 WAN,可能覆盖整个城市,可能再跳几次,但最终会到达互联网主干。互联网主干由一群超大型、带宽超高路由器组成,

为了从 YouTube 获得这个视频,数据包(packet)要先到互联网主干,沿着主干到达有对应视频文件的 YouTube 服务器,数据包从你的计算机跳到 Youtube 服务器,可能要跳个10次,先跳4次到互联网主干,2次穿过主干,主干出来可能再跳4次,然后到 Youtube 服务器。
如果你在用 Windows, Mac OS 或 Linux系统,可以用 traceroute 来看跳了几次,更多详情看视频描述(YouTube原视频下)。

我们在"印第安纳波利斯"的 Chad&Stacy Emigholz 工作室,访问加州的 DFTBA 服务器,经历了11次中转,从 192.168.0.1 出发,这是我的电脑在 局域网(LAN)里的 IP 地址,然后到工作室的 WIFI 路由器,然后穿过一个个地区路由器,到达主干。然后从主干出来,又跳了几次,到达"DFTBA.com”的服务器,IP 地址是 104.24.109.186。过程可参考下图:
在这里插入图片描述
注:如何查询访问的网页的服务器地址-百度一下即可,这是我利用百度到的方法访问到的百度网站服务器地址
在这里插入图片描述
但数据包到底是怎么过去的?如果传输时数据包被弄丢了,会发生什么?如果在浏览器里输 “DFTBA.com”,浏览器怎么知道服务器的地址多少?本篇将会讨论这些话题

2. IP 数据包的不足

上篇介绍过,互联网是一个巨型分布式网络会把数据拆成一个个数据包来传输,如果要发的数据很大,比如邮件附件数据会被拆成多个小数据包。例如,网页上所看到的视频就是一个个到达你电脑的数据包,而不是一整个大文件发过来。

数据包(packet)想在互联网上传输要符合"互联网协议(Internet Protocol)"的标准,简称 IP。
就像邮寄手写信一样,邮寄是有标准的,每封信需要一个地址,而且地址必须是独特的,并且大小和重量是有限制的,违反这些规定,信件就无法送达。
在这里插入图片描述

IP 数据包也是如此,因为 IP 是一个非常底层的协议,数据包的头部(或者说前面)只有目标地址,头部存 "关于数据的数据"也叫元数据(meta data)
在这里插入图片描述

这意味着当数据包到达对方电脑对方不知道把包交给哪个程序,是交给 Skype 还是使命召唤?因此需要在 IP 之上,开发更高级的协议。

3. UDP(User Datagram Protocol)

这些协议里最简单最常见的叫"用户数据报协议",简称 UDP(User Datagram Protocol)
在这里插入图片描述

UDP 也有自己的头部,这个头部位于数据前面,头部里包含有用的信息,信息之一是端口号,每个想访问网络的程序都要向操作系统申请一个端口号。比如 Skype 会申请端口 3478,当一个数据包到达时接收方的操作系统会读 UDP 头部,读里面的端口号,如果看到端口号是 3478,就把数据包交给 Skype。

总结:IP 负责把数据包送到正确的计算机UDP 负责把数据包送到正确的程序
在这里插入图片描述
UDP 头部里还有"校验和",用于检查数据是否正确,正如"校验和"这个名字所暗示的检查方式是把数据求和来对比。

以下是个简单例子:
假设 UDP 数据包里原始数据是 89 111 33 32 58 41,在发送数据包前电脑会把所有数据加在一起,算出"校验和",89+111+33+... 以此类推,得到 364,这就是"校验和"。
在这里插入图片描述

UDP 中,"校验和"以 16 位形式存储 (就是16个0或1),如果算出来的和,超过了 16 位能表示的最大值高位数会被扔掉,保留低位,当接收方电脑收到这个数据包,它会重复这个步骤把所有数据加在一起,89+111+33... 以此类推,如果结果和头部中的校验和一致代表一切正常
在这里插入图片描述

如果不一致,数据肯定坏掉了,也许传输时碰到了功率波动,或电缆出故障了。

不幸的是,UDP 不提供数据修复或数据重发的机制,接收方知道数据损坏后,一般只是扔掉。而且,UDP 无法得知数据包是否到达,发送方发了之后,无法知道数据包是否到达目的地,这些特性听起来很糟糕,但是有些程序不在意这些问题,因为 UDP 又简单又快。

拿 Skype 举例:它用 UDP 来做视频通话,能处理坏数据或缺失数据,所以网速慢的时候 Skype 卡卡的,这是因为只有一部分数据包到了你的电脑,但对于其他一些数据,这个方法不适用。比如发邮件,邮件不能只有开头和结尾 没有中间,邮件要完整到达收件方,如果"所有数据必须到达"就用"传输控制协议",简称 TCP(Transmission Control Protocol)

4.TCP(Transmission Control Protocol)

TCP 和 UDP 一样,头部也在存数据的前面,因此,人们叫这个组合 TCP/IP。
在这里插入图片描述
就像 UDP ,TCP 头部也有"端口号"和"校验和",但 TCP 有更高级的功能,我们这里只介绍重要的几个:

  • TCP 数据包有序号:15号之后是16号,16号之后是17号,以此类推发上百万个数据包也是有可能的。序号使接收方可以把数据包排成正确顺序,即使到达时间不同,哪怕到达顺序是乱的,TCP 协议也能把顺序排对。

以下即为该过程的示意图:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • TCP 要求接收方的电脑收到数据包并且"校验和"检查无误后(数据没有损坏)给发送方发一个确认码(acknowledgement,ACK),代表收到了。
    “确认码” 简称 ACK得知上一个数据包成功抵达后,发送方会发下一个数据包,假设这次发出去之后,没收到确认码那么肯定哪里错了,如果过了一定时间还没收到确认码发送方会再发一次。

过程示意图如下:
在这里插入图片描述
注意:数据包可能的确到了,只是确认码延误了很久,或传输中丢失了,但这不碍事 因为收件方有序列号,如果收到重复的数据包就删掉。

  • TCP 不是只能一个包一个包发, 可以同时发多个数据包,收多个确认码这大大增加了效率,不用浪费时间等确认码。
    在这里插入图片描述
  • 有趣的是,确认码的成功率和来回时间可以推测网络的拥堵程度,TCP 用这个信息,调整同时发包数量,解决拥堵问题。
    简单说:TCP 可以处理乱序和丢失数据包,丢了就重发,还可以根据拥挤情况自动调整传输率

你可能会奇怪,既然 TCP 那么厉害,还有人用 UDP 吗?
TCP 最大的缺点是那些"确认码"数据包把数量翻了一倍,但并没有传输更多信息,有时候这种代价是不值得的特别是对时间要求很高的程序,比如在线射击游戏,如果你玩游戏很卡,你也会觉得这样不值!

5. DNS(Domain Name System)

当计算机访问一个网站时需要两个东西:1.IP地址 2.端口号
例如 172.217.7.238 的 80 端口这是谷歌的 IP 地址和端口号。
在这里插入图片描述

事实上,你可以输到浏览器里,然后你会进入谷歌首页,有了这两个东西就能访问正确的网站但记一长串数字很讨厌,google.com 比一长串数字好记,所以互联网有个特殊服务负责把域名和 IP 地址一一对应,就像专为互联网的电话簿它叫"域名系统",简称 DNS(Domain Name System)

它的运作原理你可能猜到了,一般 DNS 服务器是互联网供应商提供的,DNS 会查表,如果域名存在,就返回对应 IP 地址。如果你乱敲键盘加个.com 然后按回车,你很可能会看到 DNS 错误,因为那个网站不存在,所以 DNS 无法返回给你一个地址。如果你输的是有效地址,比如 youtube.com,DNS 按理会返回一个地址,然后浏览器会给这个 IP 地址发 TCP 请求。

发送youtube.com
在这里插入图片描述
DNS返回一个地址,然后浏览器会给这个 IP 地址发 TCP 请求
在这里插入图片描述
输入一个错误的网址后:
在这里插入图片描述

如今有三千万个注册域名,所以为了更好管理,DNS 不是存成一个超长超长的列表,而是存成树状结构。顶级域名(Top Level Domains,简称 TLD)在最顶部,比如 .com .gov,下一层是二级域名,比如 .com 下面有google.com 和 dftba.com,再下一层叫子域名,比如 images.google.com, store.dftba.com,再下一层叫子域名,比如 images.google.com, store.dftba.com,这个树超!级!大!
在这里插入图片描述

前面说的"三千万个域名"只是二级域名不是所有子域名,因此,这些数据散布在很多 DNS 服务器上,不同服务器负责树的不同部分。

6. OSI Model

好了 我知道你肯定在等这个:我们到了一层新抽象!
在这里插入图片描述

前面介绍了线路里的电信号,以及无线网络里的无线信号,这些叫"物理层(Physical Layer)",而"数据链路层(Data Link Layer)"负责操控"物理层"。

数据链路层有: 媒体访问控制地址(MAC),碰撞检测,指数退避,以及其他一些底层协议
再上一层是"网络层(Network Layer)",负责各种报文交换和路由。

本篇我们讲了"传输层(Transport layer)"里一大部分, 比如 UDP 和 TCP 这些协议,负责在计算机之间进行点到点的传输,而且还会检测和修复错误。

我们还讲了一点点"会话层(Session Layer)","会话层"会使用 TCP 和 UDP 来创建连接,传递信息,然后关掉连接,这一整套叫"会话(session)"

查询 DNS 或看网页时,就会发生这一套流程,这是 开放式系统互联通信参考模型(OSI,Open System Interconnection) 的底下5层。这个概念性框架 把网络通信划分成多层,每一层处理各自的问题,如果不分层直接从上到下捏在一起实现网络通信,是完全不可能的,抽象使得科学家和工程师能分工同时改进多个层不被整体复杂度难倒。

而且惊人的是!我们还没讲完呢!OSI 模型还有两层,“表示层"和"应用程序层”,其中有浏览器、Skype、HTML解码、在线看电影等。下篇再进行介绍

7.学习视频地址:互联网(The Internet)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/813146.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【Spring Boot 源码学习】走近 AutoConfigurationImportSelector

AutoConfigurationImportSelector 源码解析 引言主要内容1. ImportSelector 接口2. DeferredImportSelector 接口3. AutoConfigurationImportSelector 功能概述 总结 引言 上篇博文我们了解了 EnableAutoConfiguration 注解,其中真正实现自动配置功能的核心实现者 …

手把手一起实现Visual Studio 2022本地工程提交(和克隆)Gitee

1、VS2022本地工程提交Gitee 登录Gitee,创建空仓库,如图: 新建仓库: 打开Visual Studio 2022创建的工程,点击创建Git存储库: 复制Gitee仓库URL: 将URL填入,点击创建并推送&#xff…

计算机基本硬件的内部结构

1.早期冯诺依曼机结构 世界上第一台计算机ENIAC是使用手动接线来控制计算,十分麻烦。 冯诺依曼提出“存储程序”的概念,是指将指令以二进制代码的形式事先输入计算机的主存储器(内存),然后按照其在存储器中的首地址执…

【递归、搜索与回溯算法练习】day1

文章目录 一、面试题 08.06. 汉诺塔问题1.题目简介2.解题思路3.代码4.运行结果 二、21. 合并两个有序链表1.题目简介2.解题思路3.代码4.运行结果 三、206. 反转链表1.题目简介2.解题思路3.代码4.运行结果 总结 一、面试题 08.06. 汉诺塔问题 1.题目简介 面试题 08.06. 汉诺塔…

玩转LaTeX(二)【特殊字符、插图设置、表格、浮动体】

特殊字符: 导言区:(添加几个宏包) \usepackage{xltxtra} %\XeLaTeX(提供了针对XeTeX的改进并且加入了XeTeX的LOGO)\usepackage{texnames} %LOGO\usepackage{mflogo}\usepackage{ctex} 正文区: \begin{document}…

vue拖拽改变宽度

1.封装组件ResizeBox.vue <template><div ref"resize" class"resize"><div ref"resizeHandle" class"handle-resize" /><slot /></div> </template> <script> export default {name: Resi…

【八】mybatis 日志模块设计

mybatis 日志模块设计 简介&#xff1a;闲来无事阅读一下mybatis的日志模块设计&#xff0c;学习一下优秀开源框架的设计思路&#xff0c;提升自己的编码能力 模块设计 在Mybatis内部定义了4个级别&#xff1a;Error:错误 、warn:警告、debug:调试、trance&#xff0c;日志优…

C++STL序列式容器——vector容器详解

纵有疾风起&#xff0c;人生不言弃。本文篇幅较长&#xff0c;如有错误请不吝赐教&#xff0c;感谢支持。 &#x1f4ac;文章目录 一.vector容器基本概念二.vector常用操作①vector构造函数②特性操作③元素操作④赋值操作⑤交换操作⑥比较操作⑦插入和删除操作 一.vector容器基…

MATLAB编程实践12、13

生命游戏 游戏的宇宙是无限可扩展的二维矩形网格&#xff0c;群体是那些标注为存活的网格的集合。群体可以依照称为代的离散时间步距进化。在每一步中&#xff0c;每个网格的命运由它周围最近的8个网格邻居的活度决定&#xff0c;规则如下&#xff1a; 如果一个存活的网格有两个…

想阻止BOT攻击?一起聚焦灵活有效的F5解决方案

伴随着突如其来的数字创新&#xff0c;使潜在的欺诈无处不在。现在&#xff0c;帮我们查找机票交易、位置理想的演唱会座位的 BOT技术正在为网络犯罪分子所利用。权威数据表示&#xff0c;在过去5年&#xff0c;撞库攻击已成为造成经济损失的最大原因之一&#xff0c;几乎每个企…

小研究 - 基于解析树的 Java Web 灰盒模糊测试(二)

由于 Java Web 应用业务场景复杂, 且对输入数据的结构有效性要求较高, 现有的测试方法和工具在测试Java Web 时存在测试用例的有效率较低的问题. 为了解决上述问题, 本文提出了基于解析树的 Java Web 应用灰盒模糊测试方法. 首先为 Java Web 应用程序的输入数据包进行语法建模创…

前端技术周刊 2023-07-30:Promise.withResolvers 进入 Stage3

项目地址&#xff1a;olivewind/weekly[1] 微信公众号&#xff1a;依赖注入 发布时间&#xff1a;2023.07.30 本周内容&#xff1a;资讯x2、开源x8、文章x4 动态 Promise.withResolvers 进入 Stage3 某些情况下需要在 Promise 外部获取 resolve 和 reject 句柄&#xff0c;我们…

【云原生】一文学会Docker存储所有特性

目录 1.Volumes 1.Volumes使用场景 2.持久将资源存放 3. 只读挂载 2.Bind mount Bind mounts使用场景 3.tmpfs mounts使用场景 4.Bind mounts和Volumes行为上的差异 5.docker file将存储内置到镜像中 6.volumes管理 1.查看存储卷 2.删除存储卷 3.查看存储卷的详细信息…

RWEQ模型参量提取

土壤风蚀是一个全球性的环境问题。中国是世界上受土壤风蚀危害最严重的国家之一&#xff0c;土壤风蚀是中国干旱、半干旱及部分湿润地区土地荒漠化的首要过程。中国风蚀荒漠化面积达160.74104km2&#xff0c;占国土总面积的16.7%&#xff0c;严重影响这些地区的资源开发和社会经…

机器学习深度学习——Dropout

&#x1f468;‍&#x1f393;作者简介&#xff1a;一位即将上大四&#xff0c;正专攻机器学习的保研er &#x1f30c;上期文章&#xff1a;机器学习&&深度学习——权重衰减 &#x1f4da;订阅专栏&#xff1a;机器学习&&深度学习 希望文章对你们有所帮助 Drop…

【MTI 6.S081 Lab】traps

【MTI 6.S081 Lab】traps RISC-V assembly (easy)Backtrace (moderate)实验任务Hints解决方案backtracesys_sleep Alarm (hard)实验任务test0: invoke handlerHint test1()/test2()/test3(): resume interrupted codeHints 解决方案trap.c中的时钟中断处理程序sys_sigalarmsys_…

大促之前全链路压测监控

1. skywalking服务监控 1.1 skywalking简介 Skywalking 是一个APM系统&#xff0c;即应用性能监控系统&#xff0c;为微服务架构和云原生架构系统设计 它通过探针自动收集所需的指标&#xff0c;并进行分布式追踪&#xff0c;通过这些调用链路以及指标&#xff0c;Skywalking …

使用Postman如何在接口测试前将请求的参数进行自定义处理

1、前言 当我们使用 Postman 进行接口测试时&#xff0c;对于简单的不需要处理的接口&#xff0c;直接请求即可&#xff0c;但是对于需要处理的接口&#xff0c;如需要转码、替换值等&#xff0c;则就麻烦一些&#xff0c;一般我们都是先手动把修改好的值拷贝到请求里再进行请…

计算机的大小端模式

计算机的大小端模式 大端/小端字节序字节序转换函数判断Linux字节序的方法string有字节序的说法吗64位系统和32位系统的区别 大端/小端字节序 计算机硬件有两种储存数据的方式&#xff1a;大端字节序&#xff08;big endian&#xff09;和小端字节序&#xff08;little endian…

MySQL数据库——DQL操作——基本查询

文章目录 前言事前准备——测试数据整表查询指定列查找别名查询MySQL运算符条件查询模糊查询排序查询聚合查询分组查询分组之后的条件筛选 分页查询将整张表的数据插入到另一张表中 前言 MySQL数据库常见的操作是增删查改&#xff0c;而其中数据的查询是使用最多&#xff0c;也…