互联网的实现

互联网的实现

全世界几十亿台电脑,连接在一起,两两通信。上海的某一块网卡送出信号,洛杉矶的另一块网卡就收到了,两者实际上根本就不知道对方的物理位置,这难道不是一件很神奇的事情吗?  
互联网的**核心**是一些列协议,总称为“互联网协议”(Internet Protocol Suite)。它们对电脑如何连接和组网做出了详细的规定。

互联网协议入门

  1. 概述

    1. 五层模型:

      1. 互联网的实现,分成好几层。每一层都有自己的功能,就想建筑物一样,每一层都靠下一层支撑。而作为用户所接触到的,只是最上面的一层。
      2. 分层有不同的模型,以下我们把互联网分成五层来理解:

        1. 他们从上至下应该是

          1. 应用层
          2. 传输层
          3. 网络层
          4. 连接层
          5. 实体层
      3. 越下面的层,越靠近硬件,而越上面的层越靠近用户。它们叫什么名字并不重要,只需要知道互联网分成多层就行了
      4. 层与协议

        1. 每一层都是为了完成一种功能。为了实现这些功能,就需要每一层都遵守共同的规则,而这个规则就叫做协议(protocol)
        2. 互联网的每一层,都定义了很多协议。这些协议的总成就叫做互联网协议(Internet Protocol Suite)。它们是互联网的核心。下面介绍每一层的功能,主要就是介绍每一岑的主要协议
    2. 实体层

      1. 电脑要组网,第一件事就是把电脑连接起来。而连接电脑可以用有形介质连接,比如电缆,光缆。也有无形介质的连接方式,比如无线电波
      2. 这就叫做“实体层”,它就是把电脑连接起来的物理手段。主要规定了网络的一些电器特性,作用是负责传送0和1的电信号
    3. 链接层

      1. 定义:单纯的0和1没有任何意义,必须规定解读方式:多少个蒂娜信号算一组?每个信号为有何意义?
      2. 链接层的功能,它在“实体层”的上方,确定了0和1的分组方式
      3. 以太网协议

        • 早期的时候,每家公司都有自己的电信号分组方式,而后,一种叫做“以太网”的协议,占据了主导地位
        • 以太网规定,一组电信号构成一个数据包,它的单位叫做“帧(Frame)”。每一帧分成两个部分:标头(Head),数据(Data)。“标头”包含数据包的一些说明,比如发送者、接受者、数据类型等;“数据”则是数据包的具体内容
        • “标头”的长度,固定为18字节。“数据”的长度,最短为46字节,最长为1500字节。因此,整个“帧”最短为64字节。如果数据很长,就必须分割成为多个帧进行发送
      4. MAC地址

        • 以太网的“标头”包含了发送者和数据接收者的信息。那么发送者和接受者是如何识别的呢?
        • 以太网规定,连入网络的所有设备,都必须有“网卡”接口。数据包必须是从一块网卡,传送到另一块网卡。网卡的地址,就是数据包的发送地址和接受地址,这个就叫做MAC地址
        • 每一块网卡出厂时,都有一个全世界独一无二的MAC地址,长度是48个二进制位,通常用12个十六进制数表示。比如:00-B0-A0-81-AA-C0.它的前6个十六进制数表示厂商编号,后6个十六进制数表示该厂商的网卡流水号
      5. 广播

        • 定义地址只是第一步,后面还有许多的步骤。
        • 首先,一块网卡怎么知道另外一块网卡的MAC地址?
        • 有一种叫做”ARP”的协议,可以解决两块网卡MAC地址相互通知的问题(后面再介绍)。以太网数据包必须知道接收方的MAC地址,才能发送
        • 其次,就算有了MAC地址,系统怎么样才能把数据包准确送到接收方?
        • 以太网采用了一种很“原始”的方式,它不是把数据包准确的送到接收方,而是向本网络内所有计算机发送,让每台计算机自己判断,是否为接收方
        • 有了数据包的定义、网卡的MAC地址、广播的发送方式,“链接层”就可以在多台计算机之间传送数据了
    4. 网络层

      1. 由来:

        • 以太网协议,依靠MAC地址发送数据。理论上,单单依靠MAC地址,上海的网卡就可以找到华盛顿的网卡,技术上是可以实现的。
        • 但是,这样做右一个重大的缺点。以太网采用广播方式发送数据包,所有成员人手一“包”,不仅效率低,而且局限在发送者所在的子网络。如果两台计算机不在同一个子网络,广播是传不过去的。这种设计师合理的,否则互联网上的每一台计算机都会收到所有包,后果不堪设想
        • 互联网是无数子网络共同组成的一个巨型网络,因此,必须找到一种方法,能够区分哪些MAC地址属于同一个子网络,哪些不是。如果是同一个子网络,就采用广播方式发送,否则就采用“路由”方式发送。(路由的意思,就是指如何向不同的子网络分布数据包)。但是靠MAC地址无法做到这一点。MAC地址只与厂商有关,与所处网络无关
        • 这就导致了“网络层”的诞生。它的作用是引进一套新的地址,使得我们能够区分不同的计算机是否属于同一个子网络。这套地址就是“网络地址”,也就是“网址”。网络层出现之后,没一台计算机有了两种地址,一种是MAC地址,另外一种是网络地址。两种地址之间没有任何联系,MAC地址绑定在网卡上,网络地址则是管理员分配,它们只是随机组合在一起。
        • 网络地址帮助我们确定计算机所处在的子网络,MAC地址则将数据包送到该子网络中的目标网卡。因此,从逻辑上可以推断,必定是先处理网络地址,再处理MAC地址
      2. IP协议

        • 啊、规定网络地址的协议,叫做IP协议。它所定义的网址,被称为IP地址
        • 目前广泛采用的是IPv4(IP协议的第4个版本,简称IPv4) 。它规定,网络地址由32个二进制位组成
        • 互联网上的没一台计算机都会分配到一个IP地址。这个地址分成两个部分。第一个部分叫做网络IP,第二各部分叫做主机IP。
        • 但是,单单从IP地址,我们无法判断网络部分。我们需要借助子网掩码(subnet mask),它是表示子网络特征的一个参数。在形式上与IP地质一样是32位二进制数,但是它的网络部分全部为1,主机IP全部为0
        • 知道“子网掩码”之后,将它与IP地质想与,然后比较两个IP地址结果是否相同,如果相同,则说明二者在一个网络中。否则就不在
        • IP协议的主要作用:一是为每一台计算机分配IP地址,另外一个是确定哪些地址在同一个子网络
      3. IP数据包

        • 根据IP协议发送的数据,叫做IP数据包。其中必定包括IP地址信息。
        • 但是以太网数据包只包含MAC地址,并没有IP地址的栏位。那么是否需要修改数据定义,再添加一个栏位呢?不需要,我们可以把数据包直接放进以太网数据包的“数据”部分,因此完全不用修改以太网的规格。这人就是互联网分层结构的好处:上层的变动完全不涉及下层的结构
        • 具体来说,IP数据包也分为“标头”“数据”两个部分;标头部分主要包括版本、长度、IP地址等信息,数据部分则是IP数据包的具体内容。
        • IP数据包的标头部分的长度为20字节到60字节,整个数据包德宗长度最大为65535字节,因此,理论上一个IP数据包的数据部分,最长为65515字节。以太网数据包的数据部分,最长只有1500字节。因此,如果IP数据包超过了1500字节,它就需要分割成为几个以太网数据包,分开发送。
      4. ARP协议

        • IP数据包是放在以太网数据包里发送的,所以我们需要同时知道两个地址,一个是对方的MAC地址,另外一个是对方的IP地址。通常情况下,对方的IP地址是已知的,但是我们不知道它的MAC地址。
        • 有两种情况。第一种情况是:如果两台主句不在同一个子网络,那么事实上没有办法得到对方的MAC地址,只能把数据包送到两个子网络连接处的“网关”(geteway),让网管去处理。第二种情况:如果两台主机在同一个子网络,那么我们可以用ARP协议,得到对方的MAC地址。ARP协议也是一个数据包(包含在以太网数据包中),其中包含它所要查询主机的IP地址,在对方的MAC地址这一栏,是12个F,FF:FF:FF:FF:FF:FF,它所在子网络的没一台主机,都会收到这个数据包,从中取出IP地址,与自身的IP地址进行比较。如果两者相同,都做出恢复,向对方报告自己的MAC地址,否则就丢弃这个包
    5. 传输层

      1. 由来:

        • 有了MAC地址和IP地址,我们已经可以在互联网上任意两台主机上建立通信。但接下来的问题是,同一台主机上有许多程序都需要用到网络,当一个数据包从互联网上发来的时候,你怎么知道它是的是网页的内容,还是在线聊天的内容?
        • 也就是说,我们还需要一个参数,表示这个数据包到底供哪个程序(进程)使用。这个参数叫做“端口”(port),它其实是每一个使用网卡的程序的编号。每个数据包都发到主机的特定端口,所以不同的程序就能取到自己所需要的数据。
        • “端口”是0到65535之间的一个整数,正好16个二进制位。0到1023的端口被系统占用,用户只能选用大于1023的端口。不管是浏览器浏览网页,还是使用通讯工具在线聊天,应用程序会随机选用一个端口,然后与服务器响应端口联系
        • “传输层”的功能,就是建立“端口到端口”的通信。相比之下,“网络层”的功能是建立在“主机到主机”的通信。只要确定主机和端口,就能实现程序之间的交流。因此,Uinx系统就把主机+端口,叫做“套接字”(socket)。有了套接字,就可以进行网络应用程序开发了
      2. UDP协议

        • 现在,我们必须在数据包中键入端口信息,就需要新的协议。。最简单的实现叫做UDP协议,它的格式就是在数据数据前面加上端口号。
        • UDP数据包,由标头和数据两部分组成
        • 标头部分主要定义了发出端口和接受内容,数据部分就是具体的内容,IP数据包有事放在以太网数据包之中的,所以整个以太网数据包现在编程了 Head head head Data
        • UDP数据包非常简单,标头部分一共只有8个字节,总长度不超过65535个字节,正好放进一个IP数据包。
      3. TCP协议

        • UDP协议的优点是比较简单,内容容易实现,但缺点是可靠性较低,一旦数据包发出,无法知道对方是否收到。
        • 为了解决这个问题,提高网络可靠性,TCP协议就诞生了。它是一个有确认机制的UDP协议,每发出一个数据包都要求确认,如果有一个数据包遗失,就收不到却仍,发厨房就知道有必要重发这个数据包了。
        • 因此,TCP协议能够确保数据不会遗失。缺点是过程复杂、实现困难、小号资源较多。
        • YCP数据包和UDP数据包一样,是内嵌在IP数据包的数据部分。TCP数据包没有长度限制,理论上可以无限长,但是为了保证网络的效率,通常TCP数据包的长度会尝过IP数据包的长度,以确保蛋哥TCP数据包不必再分割。
    6. 应用层

      • 应用层收到传输层的数据,接下来就要进行数据解读。由于互联网是开放架构,数据来源五花八门,必须事先规定好格式,否则根本无法解读。
      • 应用层的作用,就是规定应用程序的数据格式
      • TCP协议可以为各种各样的程序传递数据,比如Email、WWW、FTP等等。那么,必须有不同协议规定电子邮件、网页、FTP数据的格式,这些应用程序协议就构成了应用层
      • 这是最上面的一层,直接面对用户。它的数据就放在TCP数据包的数据不封。因此,现在的以太网数据包就编程了head head head Data

以上。

原创文章,作者:半斤八两,如若转载,请注明出处:http://www.178linux.com/74794

(0)
半斤八两半斤八两
上一篇 2017-05-04
下一篇 2017-05-05

相关推荐

  • 马哥教育21期网络班—第11周课程+练习—-成长进行时–不退步–下

    3、描述DNS查询过程以及DNS服务器类别。 DNS查询过程主机—>查找互联网上的主机 www.magedu.com—>联系到自己指向的DNS服务器—>DNS服务器—>找根 .—>根返回给DNS服务器—>DNS找.com—>com返回给DNS—->DNS找ma…

    Linux干货 2016-09-19
  • N26-第六周作业-邢岩

    马哥门徒-N26-邢岩      一直以来都用windows 的word来编辑文件,从今天开始,我又学会了新的编辑文件方式了,掩饰不住愉悦的心情!没错,就是vim 编辑器,一个神奇的编辑器!让我来详细介绍一下这个神器是如何使用的吧。     vim:vim其实就是(VI IMproved) vi增强…

    Linux干货 2017-02-26
  • N21沉舟14周作业

    系统的INPUT和OUTPUT默认策略为DROP; iptables -P INPUT DROP iptables -P OUTPUT DROP 1、限制本地主机的web服务器在周一不允许访问;新请求的速率不能超过100个每秒;web服务器包含了admin字符串的页面不允许访问;web服务器仅允许响…

    Linux干货 2016-11-14
  • linux 网络管理

    1、ifconfig命令格式: ifconfig[interface] 查看IP ifconfig-a 查看全部网卡信息 ifconfigIFACE [up|down] 网卡开启关闭 ifconfigIFACE IP/netmask [up] ifconfigIFACE IP netmask NETMASK 命令立即生效,不能永久保存  &nbsp…

    Linux干货 2017-08-20
  • Shell 脚本作业(8月11号)

    1、编写脚本/root/bin/systeminfo.sh,显示当前主机系统信息,包括主机名,IPv4地址,操作系统版本,内核版本,CPU型号,内存大小,硬盘大小。 #!/bin/bash # author:huiping # version:1.0.1 # date:2016-08-11 # describe:&nb…

    Linux干货 2016-08-15
  • N21沉舟11周作业

    1、请描述一次完整的http请求处理过程; (1) 建立或处理连接:接收请求或拒绝请求 (2) 接收请求: (3) 处理请求:对请求报文进行解析,并获取请求的资源及请求方法等相关信息 (4) 访问资源:获取请求报文中请求的资源 (5) 构建响应报文 (6) 发送响应报文 (7) 记录日志 …

    Linux干货 2016-09-26