计算机网络模型

1、OSI7层网络模型,自底向上:物理层,数据链路层,网络层,传输层,会话层,表示层,应用层

2、tcp/ip4层网络模型,自底向上:数据链路层(以太网协议),网络层(ip协议),传输层(tcp协议),应用层(http协议)

3、两台计算机是如何通信的呢?

  • 首先两台计算机想要通信最底层都是通过以太网协议用mac地址来确定电脑,而ip地址的作用其实就是为了寻找接收方电脑的mac地址才引入的ip协议
  • 其次,计算机通讯层上层应用层开始到最底层物理层是对发送的数据进行一层一层封包,接收方在底层物理层接到数据包,然后一层层往上进行拆包,最后把数据响应到应用层。

4、下面开始介绍网络模型

    1、物理层

  • 一台计算机与另一台计算机要进行通信,第一件要做的事是什么?当然是要把这台计算机与另外的其他计算机连起来啊,这样,我们才能把数据传输过去。例如可以通过光纤啊,电缆啊,双绞线啊等介质把他们连接起来,然后才能进行通信。

    2、数据链路层

  • 前面说了,物理层它只是单纯着负责把计算机连接起来,并且在计算机之间传输 0,1 这样的电信号。如果这些 0,1 组合的传送毫无规则的话,计算机是解读不了的。一大堆 0,1 谁知道是什么鬼啊。因此,我们需要制定一套规则来进行 0,1 的传送。例如多少个电信号为一组啊,每一组信号应该如何标识才能让计算机读懂啊等等,于是,有了以太网协议
  • 以太网协议:规定,一组电信号构成一个数据包,我们把这个数据包称之为帧。每一个帧由标头(Head)和数据(Data)两部分组成。  帧的大小一般为 64 - 1518 个字节。假如需要传送的数据很大的话,就分成多个桢来进行传送。
  • 标头部分主要是一些说明数据,例如发送者,接收者的信息,而数据部分则是这个数据包具体的,想给接守者的内容。
  • 把一台计算的的数据通过物理层和链路层发送给另一台计算机,究竟是谁发给谁的,计算机与计算机之间如何区分,,你总得给他们一个唯一的标识吧?于是,MAC 地址出现了。
  • MAC 地址 :连入网络的每一个计算机都会有网卡接口,每一个网卡都会有一个唯一的地址,这个地址就叫做 MAC 地址。计算机之间的数据传送,就是通过 MAC 地址来唯一寻找、传送的。MAC 地址由 48 个字节所构成,在网卡生产时就被唯一标识了。
  • 广播与 ARP 协议 
  • 通过上面可知两台电脑通讯是通过mac地址来找到对方的,虽然计算机 A 知道计算机 B 的 MAC 地址,可是计算机 A 却不知道知道计算机 B 是分布在哪边路线上,为了解决这个问题,于是,有了广播的出现。
  •  在同一个子网中,计算机 A 要向计算机 B 发送一个数据包,这个数据包会包含接收者的 MAC 地址。
  • 当发送时,计算机 A 是通过广播的方式发送的,这时同一个子网中的计算机 C, D 也会收到这个数据包的,然后收到这个数据包的计算机,会把数据包的 MAC 地址取出来,与自身的 MAC 地址对比,如果两者相同,则接受这个数据包,否则就丢弃这个数据包。
  •  这种发送方式我们称之为广播,就像我们平时在广场上通过广播的形式呼叫某个人一样,如果这个名字是你,你就理会一下,如果不是你,你就当作听不见
  • 那么问题来了,计算机 A 是如何知道计算机 B 的 MAC 地址的呢?这个时候就得由 ARP 协议来解决了,不过 ARP 协议会涉及到IP地址,所以放到下面讲,我们就先记着通过ARP 协议我们可以知道子网中其他计算机的 MAC 地址。

3、网络层

  • 子网: 上面我们有说到子网这个关键词,实际上我们所处的网络,是由无数个子网络构成的。计算机发送信息是靠广播的方式,也只有同一个子网里面的计算机能够收到。一台计算机发送信息会广播给同一个子网中的所有计算机,其他计算机在根据ip等信息对比是否是给自己的,是则接受,不是则舍弃
  • 广域网:所以 假如没有子网这种划分的话,计算机 A 通过广播的方式发一个数据包给计算机 B , 其他所有计算机也都能收到这个数据包,然后进行对比再舍弃。世界上有那么多它计算机,每一台计算机都能收到其他所有计算机的数据包,那就不得了了。那还不得奔溃。因此才产生了子网这么一个东西。
  • 那么问题来了,我们如何区分哪些 MAC 地址是属于同一个子网的呢?假如是同一个子网,那我们就用广播的形式把数据传送给对方,如果不是同一个子网的,我们就会把数据发给网关,让网关进行转发。为了解决这个问题,于是,有了 IP 协议
  • IP 协议:
  • 它所定义的地址,我们称之为 IP 地址。IP 协议有两种版本,一种是 IPv4,另一种是 IPv6。不过我们目前大多数用的还是 IPv4,我们现在也只讨论 IPv4 这个版本的协议。
  • 这个 IP 地址由 32 位的二进制数组成,我们一般把它分成 4 段的十进制表示,地址范围为 0.0.0.0~255.255.255.255。
  • 每一台想要联网的计算机都会有一个 IP 地址。这个 IP 地址被分为两部分,前面一部分代表网络部分,后面一部分代表主机部分。并且网络部分和主机部分所占用的二进制位数是不固定的。
  • 假如两台计算机的网络部分是一模一样的,我们就说这两台计算机是处于同一个子网中。例如 192.168.43.1 和 192.168.43.2,假如这两个 IP 地址的网络部分为 24 位,主机部分为 8 位。那么他们的网络部分都为 192.168.43,所以他们处于同一个子网中。
  • 可是问题来了,你怎么知道网络部分是占几位,主机部分又是占几位呢?也就是说,单单从两台计算机的 IP 地址,我们是无法判断他们的是否处于同一个子网中的。
  • 子网掩码
  • 这就引申出了另一个关键词子网掩码。子网掩码和 IP 地址一样也是 32 位二进制数,不过它的网络部分规定全部为 1,主机部分规定全部为 0。也就是说,假如上面那两个 IP 地址的网络部分为 24 位,主机部分为 8 位的话,那他们的子网掩码都为  11111111.11111111.11111111.00000000,即 255.255.255.0。
  •  那有了子网掩码,如何来判端 IP 地址是否处于同一个子网中呢。显然,知道了子网掩码,相当于我们知道了网络部分是几位,主机部分是几位
  • 我们只需要把 IP 地址转化为二进制与它的子网掩码的二进制做与(and)运算,然后把各自的结果进行比较就行了如果比较的结果相同,则代表是同一个子网,否则不是同一个子网。
  • 例如,192.168.43.1 和 192.168.43.2 的子码掩码都为 255.255.255.0,把 IP 与子码掩码相与,可以得到他们都为 192.168.43.0,进而他们处于同一个子网中。
  • ARP协议
  •   有了上面 IP 协议的知识,我们回来讲一下 ARP 协议。
  •   有了两台计算机的 IP 地址与子网掩码,我们就可以判断出它们是否处于同一个子网之中了。
  • ARP协议其实就是通过ip协议来找对方的mac地址
  • ARP 协议也是通过广播的形式给同一个子网中的每台电脑发送一个数据包(当然,这个数据包会包含接收方的 IP 地址)。
  • 对方收到这个数据包之后,会取出 IP 地址与自身的对比,如果相同,则把自己的 MAC 地址回复给对方,否则就丢弃这个数据包。这样,计算机 A 就能知道计算机 B 的 MAC 地址了。
  • 可能有人会问,知道了 MAC 地址之后,发送数据是通过广播的形式发送,询问对方的 MAC 地址也是通过广播的形式来发送,那其他计算机怎么知道你是要传送数据还是要询问 MAC 地址呢?
  • 其实在询问 MAC 地址的数据包中,在对方的 MAC 地址这一栏中,填的是一个特殊的 MAC 地址,其他计算机看到这个特殊的 MAC 地址之后,就能知道广播想干嘛了。
  • 假如两台计算机的 IP 不是处于同一个子网之中,这个时候,我们就会把数据包发送给网关,然后让网关让我们进行转发传送
  • 那我们是如何知道对方计算机的 IP 地址的呢,于是就有了DNS
  • DNS 服务器
  • 当我们想要访问某个网站的时候,我们可以输入 IP 来进行访问,但是我相信绝大多数人是输入一个网址域名的,例如访问百度是输入 www.baidu.com 这个域名。
  •  其实当我们输入这个域名时,会有一个叫做 DNS 服务器的家伙来帮我们解析这个域名,然后返回这个域名对应的 IP 给我们的。
  •  因此,网络层的功能就是让我们在茫茫人海中,能够找到另一台计算机在哪里,是否属于同一个子网等。

 4、传输层

  • 通过物理层、数据链路层以及网络层的互相帮助我们已经把数据成功从计算机 A 传送到计算机 B 了,可是,每次传输数据都是用的同一个网卡上的同一个mac地址,计算机 B 里面有各种各样的应用程序,计算机该如何知道这些数据是给谁的呢?于是端口Port产生了
  • 我们在从计算机 A 传数据给计算表B的时候,还得指定一个端口,以供特定的应用程序来接受处理。
  • 也就是说,传输层的功能就是建立端口到端口的通信。相比网络层的功能是建立主机到主机的通信。
  • 也就是说,只有有了 IP 和端口,我们才能进行准确着通信。这个时候可能有人会说,我输入 IP 地址的时候并没有指定一个端口啊。其实呢,对于有些传输协议,已经有设定了一些默认端口了。例如 http 的传输默认端口是 80,这些端口信息也会包含在数据包里的
  • 传输层最常见的两大协议是 TCP 协议和 UDP 协议,其中 TCP 协议与 UDP 最大的不同就是 TCP 提供可靠的传输,而 UDP 提供的是不可靠传输(因为udp不需要建立连接就可以发送数据,所以效率高但是不太可靠)
  • 而在两个电脑之间进行三次握手建立连接和四次挥手释放连接也是发生在传输层的,一般说http的三次握手其实是不太恰当的,它指的传输层的tcp三次握手和四次挥手

 5、应用层

  • 终于说到应用层了,应用层这一层最接近我们用户了。
  • 虽然我们收到了传输层传来的数据,可是这些传过来的数据五花八门,有 html 格式的,有 mp4 格式的,各种各样。你确定你能看的懂?因此我们需要指定这些数据的格式规则,收到后才好解读渲染。例如我们最常见的 Http 数据包中,就会指定该数据包是 什么格式的文件了。于是,就有了http协议
  • http协议通过返回http状态码(200,404,401等),然后把接收到的数据解析成key:value的形式
  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值