当前位置: 首页 > news >正文

图解网络(第二集)

上集我们已经讲解了物理层、数据链路层、网络层这三层。接下来讲讲第四层,传输层遇到的问题:

前三层协议只能把数据包从一个主机搬到另外一台主机,但是,到了目的地以后,数据包具体交给哪个程序(进程)呢?

所以,你需要把通信的进程区分开来,于是就给每个进程分配一个数字编号,你给它起了一个响亮的名字:端口号。然后你在要发送的数据包上,增加了传输层的头部,源端口号目标端口号

1.丢包

由于网络的不可靠,数据包可能在半路丢失,而 A 和 B 却无法察觉。

对于丢包问题,只要解决两个事就好了。

第一个,A 怎么知道包丢了?

答案:让 B 告诉 A

第二个,丢了的包怎么办?

答案:重传

于是你设计了如下方案,A 每发一个包,都必须收到来自 B 的确认(ACK),再发下一个,否则在一定时间内没有收到确认,就重传这个包。

你管它叫停止等待协议。只要按照这个协议来,虽然 A 无法保证 B 一定能收到包,但 A 能够确认 B 是否收到了包,收不到就重试,尽最大努力让这个通信过程变得可靠,于是你们现在的通信过程又有了一个新的特征,可靠交付

2.效率

停止等待虽然能解决问题,但是效率太低了,A 原本可以在发完第一个数据包之后立刻开始发第二个数据包,但由于停止等待协议,A 必须等数据包到达了 B ,且 B 的 ACK 包又回到了 A,才可以继续发第二个数据包,这效率慢得可不是一点两点。

于是你对这个过程进行了改进,采用流水线的方式,不再傻傻地等。

3.顺序

但是网路是复杂的、不可靠的。

有的时候 A 发出去的数据包,分别走了不同的路由到达 B,可能无法保证和发送数据包时一样的顺序。

那就A 在发送的数据包中增加一个序号(seq),同时 B 要在 ACK 包上增加一个确认号(ack),这样不但解决了停止等待协议的效率问题,也通过这样标序号的方式解决了顺序问题。

而 B 这个确认号意味深长:比如 B 发了一个确认号为 ack = 3,它不仅仅表示 A 发送的序号为 2 的包收到了,还表示 2 之前的数据包都收到了。这种方式叫累计确认累计应答

4.流量

有的时候,A 发送数据包的速度太快,而 B 的接收能力不够,但 B 却没有告知 A 这个情况。

B 怎么告诉 A 呢?B 跟 A 说"我很强"这三个字么?那肯定不行,得有一个严谨的规范。

于是 B 决定,每次发送数据包给 A 时,顺带传过来一个值,叫窗口大小(win),这个值就表示 B 的接收能力。同理,每次 A 给 B 发包时也带上自己的窗口大小,表示 A 的接收能力。

假如 B 给 A 传过来的窗口大小 win = 5,那 A 根据这个值,把自己要发送的数据分成这么几类。

当 A 不断发送数据包时,已发送的最后一个序号就往右移动,直到碰到了窗口的上边界,此时 A 就无法继续发包,达到了流量控制。

但是当 A 不断发包的同时,A 也会收到来自 B 的确认包,此时整个窗口会往右移动,因此上边界也往右移动,A 就能发更多的数据包了。

给这个窗口起了一个更生动的名字,滑动窗口

5.连接

有的时候,B 主机的相应进程还没有准备好或是挂掉了,A 就开始发送数据包,导致了浪费。

这个问题在于,A 在跟 B 通信之前,没有事先确认 B 是否已经准备好,就开始发了一连串的信息。就好比你和另一个人打电话,你还没有"喂"一下确认对方有没有在听,你就巴拉巴拉说了一堆。

这就是我们熟知的三次握手,四次挥手!

原视频链接:【大白话半小时理解网络!】 https://www.bilibili.com/video/BV1tseyzCEoF/?share_source=copy_web&vd_source=426e82144b8b4c2306bda741cd13a4f1

http://www.dtcms.com/a/484025.html

相关文章:

  • 做外贸服装的网站微信如何引流推广精准加人
  • 多态:C++面向对象编程的“灵魂”所在
  • 大连网站快速排名提升深圳互联网公司网站
  • 建设银行广西分行网站做自媒体的网站有哪些
  • 楼市南京做凶宅的网站郑州营销网站建设公司
  • 搭建网站需要备案吗上海网站工作室
  • 学校网站建设计入哪个会计科目类似于wordpress的网站
  • 网站seo其应用买的网站模板怎么做
  • 【GESP】C++五级考试大纲知识点梳理, (3-4) 链表-双向循环链表
  • wordpress打开网站前广告怎样免费建设个人网站
  • 网站logo更换旅游做攻略用什么网站好
  • 天津黑曼巴网站建设无锡网站排名公司
  • 【鸿蒙5.0】Scroll左右滑动
  • 抢购网站源码dz门户 WordPress
  • 百度官方网站网址wordpress微博登陆
  • 团购网站 设计方案那些网站可以做行测题
  • Spring Boot中Spring Data JPA的常用注解
  • 02117 信息组织【第四章】
  • 做带会员后台的网站用什么软件建设工程信息网一体化平台
  • 做刷单网站违法吗win7 asp.net网站架设
  • DyCoke论文阅读
  • 做翻译网站 知乎丹阳网站建设方案
  • 门户网站建设基础术语制作旅游网站的步骤
  • 开发网站建设设计公司中天建设集团网站
  • C++系列之刷题系列---栈的应用
  • 做网站着用什么软件赣榆县建设局网站
  • 关于网站开发的毕业设计网站后台怎么给图片做水印
  • 商店商品管理系统淄博网站制作网页优化
  • 网站建设网页制作软件有哪些网站建设功能清单
  • VS Code断点使用及条件断点失效问题