Devin's Blog

Diversity is essential to happiness

0%

网络通讯协议(1)

网络通信协议基本介绍

  互联网的实现分为好几层,每一层都有自己的功能,就好比盖房子,每一层都是依靠下一层的支持. 用户接触到的是最上面的一层.

  用户接触到的是最上面的一层, 根本没有感觉到下面的层.而要理解互联网就必须要从下层开始, 自下而上的理解每一层的含义. 而如何分层,有不同的模型.

  有的是七层模型, 有的分为五层. 我们一般倾向于五层协议, 这里给大家阐述的也都是五层协议.


GitHub Logo

  这个图中我们看见一个主机A和一主机B相互发送数据.而他们的底层支持就包含了这五层协议.

GitHub Logo

自下而上

  • Physcial Layer, 物理层
  • Data Link Layer (MAC), 数据链路层
  • Network Layer (IP), 网路层
  • Transport Layer (TCP UDP), 传输层
  • Application Layer, 应用层

  越底层离物理硬件越近,越高层和用户越近.每一层都是完成某一种功能.
为了实现这些功能,需要遵守共同的规则,我们叫做协议(protocol)

  在互联网中,每一层都定义了非常多的协议,而这些协议的总称就叫互联网协议,它是互联网的核心.

Imgur

上图是对五层协议的概述:
  应用层(Application Layer) : web服务器做交互
  传输层(Transport Layer) : 两个远程主机建立连接
  网路层(Network Layer) : 通过IP笛子传输数据包
  数据链层(Data Link Layer) : 通过MAC地址交换帧数据
  物理层(Physcial Layer) : 帧中的比特进行编码和解  码,并包括在网络上驱动和接收信号的收发器。

Imgur

比方说 下载一个网页的话
  应用层: 输一个IP地址192.168.1.102 默认输入80端口,下载他们
  传输层: 它需要告诉服务器:客户端端口是31244,要连接的服务端端口是80
  网路层: 两台主机的IP和端口在互相通讯
  网络链路层: 添加包含MAC地址信息的标头以创建帧。然后将帧发送到物理层以发送比特

#物理层

  电脑组网需要用电缆,光缆,无线电波把电脑连接起来.他们就是把电脑连接起来的物理手段.主要规定了网络中的电气特性,作用是负责传输0和1这样的电信号.

#数据链路
  但是单纯的传输0和1,没有什么意义.所以,出现了数据链路层
  多少个电信号算一组,一个信号位又有什么意义,数据链路层就解决了这个问题
  他在物理层的上方确定了0和1的分组方式.也就是常说的以太网协议.
  以太网协议规定一组电信号构成了一个数据包,我们把他叫做帧
  每一个帧又分成两个部分,head 和 data

head ……..data………..
  head:表头, 包含数据包的说明项 比方说发送者是谁,接受者是谁,数据类型等等
  head在以太网协议中有一个长度的定义,他的固定长度是18个字节
  data的长度最短是46字节,最长是1500字节
  所以帧的最短长度是64字节,最长是1518字节
  但是某些情况下,数据非常长,就需要被分割成多个帧进行发送

MAC地址:以太网的数据包的head包含了发送者和接受者的信息,MAC地址就是每一块网卡都有唯一的地址.长度是48个二进制位,通常是12个十六进制数去表示.有了这个MAC地址,就可以定位网卡和数据包的路径.为数据传输做了夯实的基础.

#广播
一个网卡为什么会知道另一块网卡的地址.这个时候在以太网中,有一个ARP协议,他可以解决这个问题.这个在后面会有所涉及.
我们需要知道,以太网数据包必须知道接收方的MAC地址才能够发送,
其次就算有了MAC地址,系统怎么样才能把数据包准确的发送到接受方.
在以太网中采用了一种非常原始的方式,他不是准确的把数据包发送到接受方
而是向本网络内的所有计算机房发送,让每一台计算机自己去判断自己是不是接受方.

假设1,2,3,4,5计算机在同一个网络中

  • 广播 1号计算机向处于同一网络中的所有计算机发送数据包
  • 2,3,4,5号计算机都收到这个包,读取数据包head部分,找到接收方的MAC地址,与自身MAC地址比较
  • MAC地址相同的话就接受这个包,然后做进一步处理,否则丢弃这个包.