导入
在计算机网络学习中我觉得比较重要的就是网络协议的学习。网络协议是为计算机网络中进行数据交换而建立的规则、标准或者说是约定的集合。因为不同用户的数据终端可能采取的字符集是不同的,两者需要进行通信,必须要在一定的标准上进行。一个很形象地比喻就是我们的语言,我们天朝大国人多地广,地方性语言也非常丰富,而且方言之间差距巨大。A地区的方言可能B地区的人根本无法接受,所以我们要为全国人名进行沟通建立一个语言标准,这就是我们的普通话的作用。同样,放眼全球,我们与外国朋友交流大部分程度用的就是英语,所以我们才要不断的学习英语。因此,在计算机网络中,数据收发也需要一定的规则,我们把这个规则也叫做 “ 协议 ” 。
协议的概念
从应用的角度出发,协议可理解为“规则”,是数据传输和数据的解释的规则。
协议分层
为了使不同计算机厂家生产的计算机能够相互通信,以便在更大的范围内建立计算机网络,国际标准化组织(ISO)在1978年提出了"开放系统互联参考模型",即著名的OSI/RM模型(Open System Interconnection/Reference Model)。它将计算机网络体系结构的通信协议划分为七层,自下而上依次为:物理层(Physics Layer)、数据链路层(Data Link Layer)、网络层(Network Layer)、传输层(Transport Layer)、会话层(Session Layer)、表示层(Presentation Layer)、应用层(Application Layer)。其中第四层完成数据传送服务,上面三层面向用户。
- OSI七层模型与TCP/IP四层模型
- 应用层:负责应用程序之间的数据沟通
典型协议:http,ftp,SMTP,DNS - 表示层:会话层管理主机之间的会话进程,即负责建立、管理、终止进程之间的会话。会话层还利用在数据中插入校验点来实现数据的同步。
- 会话层:会话层管理主机之间的会话进程,即负责建立、管理、终止进程之间的会话。会话层还利用在数据中插入校验点来实现数据的同步。
- 传输层:负责端与端之间的数据传输
典型协议:TCP/UDP - 网络层:负责地址管理与路由选择
典型协议:IP
典型设备:路由器 - 数据链路层:负责相邻设备之间的数据帧传输
典型协议:Ethernet(以太网协议)
典型设备:交换机 - 物理层:负责光电信号的传输
典型协议:以太网协议
典型设备:集线器
通信过程
两台计算机通过TCP/IP协议通讯的过程如下所示
数据包的封装
网络地址管理
IP地址
- IP协议有两个版本, IPv4和IPv6. 我们整个的课程, 凡是提到IP协议, 没有特殊说明的, 默认都是指IPv4
- IP地址是在IP协议中, 用来在网络环境中标识不同主机的地址
- 对于IPv4来说, IP地址是一个4字节, 32位的整数
- 由于数字不好记忆,故一般采用点分十进制来表示IP地址,例如 192.168.0.1, 用点分割的每一个数字表示一个字节, 范围是 0 - 255
IP地址的编址经历了三个历史阶段,分类的IP地址、子网的划分以及构成超网。
分类IP地址
分类的IP地址中是将IP划分为几种固定的类,每一类地址都有两个固定长度的字段组成–网络号和主机号。网络号是标志网络节点所连接到的网络,主机号标志该节点。IP地址主要分为5大类,A类、B类和C类都是单播地址,即一对一通信,最常用。D类地址用于多播,即一对多通信。E类地址保留为以后用。
- A类地址以0开头,第一个字节作为网络号,地址范围0.0.0.0~127.255.255.255
- B类地址以10开头,前两个字节作为网络号,地址范围是:128.0.0.0~191.255.255.255
- C类地址以110开头,前三个字节作为网络号,地址范围是:192.0.0.0~223.255.255.255
- D类地址以1110开头,地址范围是224.0.0.0~239.255.255.255,D类地址作为组播地址
- E类地址以1111开头,地址范围是240.0.0.0~255.255.255.255,E类地址为保留地址,供以后使用
划分子网
分类的IP地址是二级IP地址,是由网络号和主机号组成的,而现在常用的是三级IP地址,添加了一个子网号。二级的IP不够灵活且造成了浪费。如,我们办公室假如有300台电脑,使用C类地址,最多可接入=256台主机,显然不够,若使用B类地址,则可接入=65536台主机,造成了极大的浪费。此时,我们可以申请一个B类的网络,如网络地址为172.16.0.0,同时可以把这65536个地址划分成一个个局域网,相互之间互不干扰,划分过的局域网可以称为这个B类网络的一个个子网,而相对于本单位外的网络仍然表现为一个网络。网络号是需要申请和指派的,它一般是固定的,所以想要进行子网的划分,划分的方法是将二级IP的主机号字段借用若干位来表示子网号,这样就变成了三级IP地址:网络号、子网号和主机号。
IP地址::={<网络号>,<子网号>,<主机号>}
什么是子网掩码?
子网掩码是标志两个IP地址是否同属于一个子网的,也是32位二进制地址,其每一个为1代表该位是网络位,为0代表主机位。它和IP地址一样也是使用点式十进制来表示的。如果两个IP地址在子网掩码的按位与的计算下所得结果相同,即表明它们共属于同一子网中。
在计算子网掩码时,我们要注意IP地址中的保留地址,即" 0"地址和广播地址,它们是指主机地址或网络地址全为" 0"或" 1"时的IP地址,它们代表着本网络地址和广播地址,一般是不能被计算在内的。
子网掩码的计算:
对于无须再划分成子网的IP地址来说,其子网掩码非常简单,即按照其定义即可写出:如某B类IP地址为 10.12.3.0,无须再分割子网,则该IP地址的子网掩码255.255.0.0。如果它是一个C类地址,则其子网掩码为 255.255.255.0。其它类推,不再详述。下面我们关键要介绍的是一个IP地址,还需要将其高位主机位再作为划分出的子网网络号,剩下的是每个子网的主机号,这时该如何进行每个子网的掩码计算。
下面总结一下有关子网掩码和网络划分常见的面试考题:
(1)利用子网数来计算
在求子网掩码之前必须先搞清楚要划分的子网数目,以及每个子网内的所需主机数目。
(1) 将子网数目转化为二进制来表示;
如欲将B类IP地址168.195.0.0划分成27个子网:27=11011;
(2) 取得该二进制的位数,为N;
该二进制为五位数,N = 5
(3) 取得该IP地址的类子网掩码,将其主机地址部分的的前N位置1即得出该IP地址划分子网的子网掩码。
将B类地址的子网掩码255.255.0.0的主机地址前5位置 1,得到 255.255.248.0
2)利用主机数来计算
如欲将B类IP地址168.195.0.0划分成若干子网,每个子网内有主机700台:
(1) 将主机数目转化为二进制来表示;
700=1010111100
(2) 如果主机数小于或等于254(注意去掉保留的两个IP地址),则取得该主机的二进制位数,为N,这里肯定 N<8。如果大于254,则 N>8,这就是说主机地址将占据不止8位;
该二进制为十位数,N=10;
(3) 使用255.255.255.255来将该类IP地址的主机地址位数全部置1,然后从后向前的将N位全部置为 0,即为子网掩码值。
将该B类地址的子网掩码255.255.0.0的主机地址全部置1,得到255.255.255.255,然后再从后向前将后 10位置0,即为:11111111.11111111.11111100.00000000,即255.255.252.0。这就是该欲划分成主机为700台的B类IP地址 168.195.0.0的子网掩码。
3)还有一种题型,要你根据每个网络的主机数量进行子网地址的规划和计算子网掩码。这也可按上述原则进行计算。
比如一个子网有10台主机,那么对于这个子网需要的IP地址是:
10+1+1+1=13
注意:加的第一个1是指这个网络连接时所需的网关地址,接着的两个1分别是指网络地址和广播地址。
因为13小于16(16等于2的4次方),所以主机位为4位。而256-16=240,所以该子网掩码为255.255.255.240。
如果一个子网有14台主机,不少人常犯的错误是:依然分配具有16个地址空间的子网,而忘记了给网关分配地址。这样就错误了,因为14+1+1+1=17,17大于16,所以我们只能分配具有32个地址(32等于2的5次方)空间的子网。这时子网掩码为:255.255.255.224。
端口
- 概念:在主机上唯一的标识一个进程 uint16_t 0~65535
一个端口只能被一个进程占用,一个进程可以使用多个端口。
每条数据中都含有源端口,目的端口。
五元组
用来标识一条通信