• 互联网分层和协议【学习笔记】


    互联网的分层

     

      1. 实体层(Physical Layer

      2. 链接层(Link Layer

      3. 网络层(Network Layer

      4. 传输层(Transport Layer

      5. 应用层(Application Layer

     

      越下面的层,越靠近用户;越上面的层,越靠近硬件。

     

    互联网协议

     

      每一层都是为了完成一种功能。为了实现这些功能,就需要大家都遵守共同的规则。大家都遵守的规则,就叫做"协议"protocol)。

      互联网的每一层,都定义了很多协议。这些协议的总称,就叫做"互联网协议"Internet Protocol Suite)。它们是互联网的核心。

     

     

    各分层的定义和作用

     

      "实体层",就是把电脑连接起来的物理手段,例如光缆、电缆、双绞线、无线电波等方式。它主要规定了网络的一些电气特性,作用是负责传送01的电信号。

       "链接层",它在"实体层"的上方,确定了01的分组方式。单纯的01没有任何意义,必须规定解读方式:多少个电信号算一组?每个信号位有何意义?

     

      ①以太网协议:

         以太网规定,一组电信号构成一个数据包,叫做""Frame)。每一帧分成两个部分:标头(Head)和数据(Data)。

        "标头"包含数据包的一些说明项,比如发送者、接受者、数据类型等等;"数据"则是数据包的具体内容。

      ②MAC地址

        以太网规定,连入网络的所有设备,都必须具有"网卡"接口。数据包必须是从一块网卡,传送到另一块网卡。网卡的地址,就是数据包的发送地址和接收地址,这叫做MAC地址。(每块网卡出厂的时候,都有一个全世界独一无二的MAC地址,长度是48个二进制位,通常用12个十六进制数表示。前6个十六进制数是厂商编号,后6个是该厂商的网卡流水号。有了MAC地址,就可以定位网卡和数据包的路径了。)

     

     

    网络层

     

      ①IP协议

        规定网络地址的协议,叫做IP协议。它所定义的地址,就被称为IP地址。

        目前,广泛采用的是IP协议第四版,简称IPv4。这个版本规定,网络地址由32个二进制位组成。(IP协议的作用主要有两个,一个是为每一台计算机分配IP地址,另一个是确定哪些地址在同一个子网络。)

     

    因为IP数据包是放在以太网数据包里发送的,所以我们必须同时知道两个地址,一个是对方的MAC地址,另一个是对方的IP地址。

     

      ②ARP协议

         有了ARP协议,我们就可以得到同一个子网络内的主机MAC地址,就可以把数据包发送到任意一台主机之上。

     

    传输层

     

      ①由来

        为了区分数据包是提供给哪个程序用的,除了mac地址和ip地址,还需要一个参数,表示这个数据包到底供哪个程序(进程)使用。这个参数就叫做"端口"port),它其实是每一个使用网卡的程序的编号。每个数据包都发到主机的特定端口,所以不同的程序就能取到自己所需要的数据。

        "端口"065535之间的一个整数,正好16个二进制位。01023的端口被系统占用,用户只能选用大于1023的端口。不管是浏览网页还是在线聊天,应用程序会随机选用一个端口,然后与服务器的相应端口联系。

     

        "传输层"的功能,就是建立"端口到端口"的通信。相比之下,"网络层"的功能是建立"主机到主机"的通信。只要确定主机和端口,我们就能实现程序之间的交流。因此,Unix系统就把主机+端口,叫做"套接字"socket)。有了它,就可以进行网络应用程序开发了。

     

      ②UDP协议

        针对端口定义的新的协议。  

        UDP数据包,也是由"标头""数据"两部分组成。"标头"部分主要定义了发出端口和接收端口,"数据"部分就是具体的内容。然后,把整个UDP数据包放入IP数据包的"数据"部分,而前面说过,IP数据包又是放在以太网数据包之中的,所以整个以太网数据包现在变成了下面这样:

        Head - Head - Head - Data

     

      ③TCP协议  

        UDP协议的优点是比较简单,容易实现,但是缺点是可靠性较差,一旦数据包发出,无法知道对方是否收到。为了解决这个问题,提高网络可靠性,TCP协议就诞生了。

        这个协议非常复杂,但可以近似认为,它就是有确认机制的UDP协议,每发出一个数据包都要求确认。如果有一个数据包遗失,就收不到确认,发出方就知道有必要重发这个数据包了。

     

     

    应用层

     

      应用程序收到"传输层"的数据,接下来就要进行解读。数据必须事先规定好格式,否则根本无法解读。"应用层"的作用,就是规定应用程序的数据格式。

      (举例来说,TCP协议可以为各种各样的程序传递数据,比如EmailWWWFTP等等。那么,必须有不同协议规定电子邮件、网页、FTP数据的格式,这些应用程序协议就构成了"应用层"。)

    这是最高的一层,直接面对用户。它的数据就放在TCP数据包的"数据"部分。

     

     

    总结:

     

      网络通信就是交换数据包。电脑A向电脑B发送一个数据包,后者收到了,回复一个数据包,从而实现两台电脑之间的通信。数据包的结构,基本上是下面这样:

     

      发送这个包,需要知道两个地址:

      * 对方的MAC地址

      * 对方的IP地址

      (1)最前面的"以太网标头",设置发出方(本机)的MAC地址和接收方(DHCP服务器)的MAC地址。前者就是本机网卡的MAC地址,后者这时不知道,就填入一个广播地址:FF-FF-FF-FF-FF-FF

      (2)后面的"IP标头",设置发出方的IP地址和接收方的IP地址。这时,对于这两者,本机都不知道。于是,发出方的IP地址就设为0.0.0.0,接收方的IP地址设为255.255.255.255

      (3)最后的"TCP 标头",设置发出方的端口和接收方的端口。这一部分是DHCP协议规定好的,发出方是68端口,接收方是67端口。

       

     

     

    参考:http://www.ruanyifeng.com/blog/2012/05/internet_protocol_suite_part_i.html

     

     

     

     

     

     

     

     

  • 相关阅读:
    解析iOS开发中的FirstResponder第一响应对象
    iOS9新特性——堆叠视图UIStackView
    IOS定位服务的应用
    iOS原生地图开发详解
    iOS原生地图开发进阶——使用导航和附近兴趣点检索
    iOS开发之----常用函数和常数
    iOS延时执行
    Mac快捷键、命令行
    UICollectionView使用
    iOS: 在代码中使用Autolayout (1) – 按比例缩放和优先级
  • 原文地址:https://www.cnblogs.com/windrainpy/p/3391646.html
Copyright © 2020-2023  润新知