美文网首页iOS 开发 Objective-C
第十一篇:Objective-C 知识回顾网络(互联网协议入门一

第十一篇:Objective-C 知识回顾网络(互联网协议入门一

作者: 望穿秋水小作坊 | 来源:发表于2019-11-26 17:07 被阅读0次
    问题一:思考全世界几十亿太电脑,连接在一起,两两通信。厦门的某一块网卡发出信号,洛杉矶的另一块网卡居然就收到了,两者实际上根本不知道对方物理位置,请简述其中的流程?
    问题二:互联网的核心是什么?
    • 核心是一套协议,总称为“互联网协议”(Internet Protocol Suite)。它们对电脑如何连接和组网,做出了详尽的规定。理解这些协议,就理解了互联网的原理。
    问题三:互联网分为哪几层?
    • 应用层
    • 传输层
    • 网络层
    • 链接层
    • 物理层(实体层)
    问题三:物理层或者说实体层,做了哪些事(实现哪些协议)?
    • 电脑要组网,当然是先把电脑连起来,可以用光缆、电缆、双绞线、无线电波等方式,这就叫做“实体层”,它就是把电脑连接起来的物理手段。
    • 它主要规定了网络的一些电气特性,作用是负责传送 0 和 1 的电信号。
    问题四:链接层,做了哪些事(实现哪些协议)?
    • 单纯的 0 和 1 没有任何意义,必须规定解读方式,多少个电信号算一组?每个信号位有何意义?
    • 这就是“链接层”的功能,他在“实体层”上分,确定了 0 和 1 的分组方式。
    问题五:链接层分组确定电信号分组的协议叫什么?
    • 有一种叫“以太网”的协议,占据了主导地址,以太网规定,一组电信号构成一个数据包,叫做“帧”(Frame)。每一帧分成两个部分:标头(Head)和数据(Data)。
    • ”标头“ 的包含数据包的说明项,比如发送者、接受着、数据类型等等;数据则是数据包的具体内容。
    问题六:链接层分组标头里面的发送者和接受者是如何标识呢?
    • 以太网规定,连入网络的所有设备,都必须具有“网卡”接口。数据包必须是从一块网卡,传送至另一块网卡。
    • 网卡的地址,就是数据包的发送地址和接收地址,这叫做 MAC 地址。
    问题七:就算有了 MAC 地址,系统怎么样才能把数据包准确的送到接收方?
    • 以太坊采用了一种很“原始”的方式,它不是吧数据准确的送到接收方,而是向本网络内所有计算机发送,让每一台计算机自己判断是否为接收方。
    • 这种发送方式就叫做“广播”(Broadcasting)
    • 有了数据包的定义,网卡的 mac 地址、广播的发送方式,“链接层”就可以再多台计算机之间传送数据了。
    问题八:理论上有链接层就能传递数据了,为什么还需要网络层?
    • 以太网协议,依靠 MAC 地址发送数据。理论上,单单依靠 MAC 地址,上海的网卡就可以找到洛杉矶的网卡了,技术上是可以实现的。
    • 但是,这样做有一个重大的缺点。以太网采用广播的方式发送数据包,所有成员人手一“包”,不仅效率低,而且局限在发送者所在子网络。也就是,如果两台计算机不在同一个子网络,广播是传送不过去的。这种设计是合理的,否则互联网上每一台计算机都会收到所有的包,那会引起灾难。
    • 互联网是无数个子网络共同组成的一个巨型网络,很难想象厦门和洛杉矶会在同一个子网络,这几乎是不可能的。
    • 因此,必须找到一种方法,能够区分哪些 MAC 地址属于同一个子网络,哪些不是。如果是同一个子网络,就采用广播的方式发送,否则就采用“路由”方式发送。
    • 这就导致“网络层”的诞生,他的作用是引进一套新的地址,使得我们能够区分不同的计算机是否属于同一个子网络。这套地址就叫做“网络地址”,简称“网址”。
    • 于是,“网络层“出现以后,每台计算机有两种地址,一种是 MAC 地址,另一个网络地址。两种地址之间没有任何联系,MAC 地址是绑定在网卡上的,网络地址则是管理员分配的,他们只是随机组合在一起。
    • 网络地址帮助我们确定计算机所在的子网络,MAC 地址则将数据包发送到该子网络中的目标网卡。因此,逻辑上可以推断,必定是先处理网络地址,然后再处理 MAC 地址。
    问题九:什么是 IP 协议?
    • 规定网络地址的协议,叫做 IP 协议,它所定义的地址,就被称为 IP 地址。
    • 我利用 ”子网掩码“ 集合 IP 地址,来判断两台计算机是否属于同一个子网络。
    问题十:什么是 IP 数据包?
    • 根据 IP 协议发送的数据,就叫做 IP 数据包。不难想象,其中必定包括 IP 地址信息。
    • 但是前面说过,以太数据包值包含 MAC 地址,并没有 IP 地址的栏位。那么是否需要修改数据定义,再添加一个栏位呢?
    • 回答是不需要,我们可以把 IP 数据包直接放进以太网数据包的”数据部分”,因此完全不用修改以太网的规格。这就是互联网分层结构的好处,上层的变动完全不涉及下层的结构。
    问题十一:什么是ARP协议?
    • 因为 IP 数据包是放在以太网数据包里发送的,所以我们必须同时知道两个地址,一个是对方的 MAC 地址,另一个是对方的 IP 地址。通常情况下,对方的 IP 地址是已知的(后文会解释),但是我们不知道它的 MAC 地址。
    • 所以我们需要一种机制,能够从 IP地址得到 MAC 地址。
    • 这里又可以分两种情况。第一种情况,如果两台主机不在同一个子网络,那么事实上没有办法得到对方的 MAC 地址,只能把数据包传送到两个子网络连接处的“网关”(gateway),让网关去处理。
    • 第二种情况,如果两台主机在同一个子网络,那么我们可以用 ARP 协议,得到对方的 MAC 地址。
    问题十二:传输层做了些什么事情?
    • 有了 MAC 地址和 IP 地址,我们已经可以再互联网上任意两台主机上建立通讯。
    • 接下来的问题是,同一台主机有多个程序都需要用到网络,比如,网页浏览,在线聊天。当一个数据包从互联网发来的时候,你怎么知道,它是表示网页的内容,还是在线聊天的内容呢?
    • 也就是说,我们还需要一个参数,表示这个数据包到底供哪个程序(进程)使用。这个参数就叫做“端口”(port),它其实是每一个使用网卡的程序的编号。每个数据包都发到主机的特定端口,所以不同的程序就能取到自己所需要的数据。
    • “传输层”的功能,就是建立“端口到端口”的通讯。相比之下,“网络层”的功能是建立“主机到主机“的通信。只要确定了主机和端口,我们就能实现程序之间的交流。因此,Unix 系统就把主机+端口,叫做”套接字“(socket),有了它,就可以进行网络应用程序开发了。

    相关文章

      网友评论

        本文标题:第十一篇:Objective-C 知识回顾网络(互联网协议入门一

        本文链接:https://www.haomeiwen.com/subject/iusewctx.html