一、计算机网络背景
网络把主机连接起来,而互连网(internet)是把多种不同的网络连接起来,因此互连网是网络的网络。而互联网(Internet)是全球范围的互连网。
计算机网络主要包括三部分:
- 计算机 (可以包括客户端、服务器)
- 网络设备 (路由器、交换机、防火墙等)
- 传输介质(可以分为有线和无线的)
按照地域范围可以对网络进行如下分类:
- 局域网 :小范围内的私有网络,一个家庭内的网络、一个公司内的网络、一个校园内的网络都属于局域网。
- 广域网:把不同地域的局域网互相连接起来的网络。运营商搭建连接远距离区域的广域网。
- 互联网:由世界各地的局域网和广域网连接起来的网络。互联网是一个开放、互联的网络,不属于任何个人和任何机构。
主机之间的通信方式
- 客户-服务器(C/S):客户是服务的请求方,服务器是服务的提供方。
- 对等(P2P):不区分客户和服务器。
二、网络协议分层
“协议” 是一种约定.
计算机之间的传输媒介是光信号和电信号. 通过 “频率” 和 “强弱” 来表示 0 和 1 这样的信息. 要想传递各种不同的信息, 就需要约定好双方的数据格式.
网络协议, 就是人为约定一个共同的标准,让这些不同厂商之间生产的计算机能够相互顺畅的通信。
2.1 协议分层
为什么要分层? 主要是为了解耦,使得某一层的改变对整体不影响。这是对网络传输的封装,也是一种面向对象的思想。
2.2 OSI七层
OSI(Open System Interconnection,开放系统互连)七层网络模型称为开放式系统互联参考模型,是一个逻辑上的定义和规范; 把网络从逻辑上分为了7层. 每一层都有相关、相对应的物理设备,比如路由器,交换机; OSI 七层模型是一种框架性的设计方法,其最主要的功能使就是帮助不同类型的主机实现数据传输; 它的最大优点是将服务、接口和协议这三个概念明确地区分开来,概念清楚,理论也比较完整. 通过七个层次化的结构模型使不同的系统不同的网络之间实现可靠的通讯; 但是, 它既复杂又不实用;更多的是TCP/IP四层模型.
2.3 TCP/IP四层
在TCP/IP协议中,它们被简化为了四个层次。 和 OSI 七层网络协议的主要区别如下
- 应用层、表示层、会话层三个层次提供的服务相差不是很大,所以在 TCP/IP 协议中,它们被合并为应用层一个层次。
- 由于数据链路层和物理层的内容很相似,所以在 TCP/IP 协议中它们被归并在网络接口层一个层次里。
先介绍五层协议
- 物理层: 负责光/电信号的传递方式. 比如现在以太网通用的网线(双绞 线)、早期以太网采用的的同轴电缆(现在主要用于有线电视)、光纤, 现在的wifi无线网使用电磁波等都属于物理层的概念。物理层的能力决定了最大传输速率、传输距离、抗干扰性等. 集线器(Hub)工作在物理层.
- 数据链路层: 负责设备之间的数据帧的传送和识别. 例如网卡设备的驱动、帧同步(就是说从网线上检测到什么信号算作新帧的开始)、冲突检测(如果检测到冲突就自动重发)、数据差错校验等工作. 有以太网、令牌环网, 无线LAN等标准. 交换机(Switch)工作在数据链路层.
- 网络层: 负责地址管理和路由选择. 例如在IP协议中, 通过IP地址来标识一台主机, 并通过路由表的方式规划出两台主机之间的数据传输的线路(路由). 路由器(Router)工作在网路层.
- 传输层: 负责两台主机之间的数据传输. 如传输控制协议 (TCP), 能够确保数据可靠的从源主机发送到目标主机.
- 应用层: 负责应用程序间沟通,如简单电子邮件传输(SMTP)、文件传输协议(FTP)、网络远程访问协议(Telnet)等. 我们的网络编程主要就是针对应用层
TCP/IP将数据链路层和物理层合并为网络接口层。 一般而言
对于一台主机, 它的操作系统内核实现了从传输层到物理层的内容; 对于一台路由器, 它实现了从网络层到物理层; 对于一台交换机, 它实现了从数据链路层到物理层; 对于集线器, 它只实现了物理层;
三、网络传输基本流程
3.1 网络传输流程图
同一个网段内的两台主机进行文件传输. 跨网段的主机的文件传输. 数据从一台计算机到另一台计算机传输过程中要经过一个或多个路由器
3.2 数据包的封装和分用
- 不同的协议层对数据包有不同的称谓,在传输层叫做段(segment),在网络层叫做数据报 (datagram),在链路层叫做帧(frame).
- 应用层数据通过协议栈发到网络上时,每层协议都要加上一个数据首部(header),称为封装(Encapsulation).
- 首部信息中包含了一些类似于首部有多长,载荷(payload)有多长,上层协议是什么等信息.
- 数据封装成帧后发到传输介质上,到达目的主机后每层协议再剥掉相应的首部,根据首部中的 "上层协议字段"将数据交给对应的上层协议处理.
报文就是数据报,报头就是当前层添加的数据首部。除去报头的部分叫有效载荷。
报头有什么作用吗? 在解包分用的时候需要报头的数据来知道当前层进行某种协议决策,即怎么往上解包。
几乎每一层协议的报头都要包含两个字段
- 当前报文的有效载荷要交付给上层的哪一个协议。(分用)
- 几乎报头都有明确报头和有效载荷的边界
四、网络中的地址管理
4.1 IP地址
IP地址(Internet Protocol Address)是指互联网协议地址,又叫网际协议地址。 IP地址是IP协议(IP协议是为计算机网络相互连接进行通信而设计的协议)提供的一种统一的地址格式,它为互联网上的每一个网络和每一台主机分配一个逻辑地址,以此来屏蔽物理MAC地址的差异。
IP地址的作用:
IP地址用来标识网络中的设备,具有IP地址的设备可以在同一网段内或跨网段通信。(后续会介绍网络中的主机如何通过IP地址进行通信的)
IP地址包括两部分,第一部分是网络号,表示IP地址所属的网段,第二部分是主机号,用来唯一标识本网段上的某台网络设备。
IP协议有两个版本, IPv4和IPv6. 现在提到的大部分都是指IPv4
- 对于IPv4来说, IP地址是一个4字节, 32位的整数;
- 我们通常也使用 “点分十进制” 的字符串表示IP地址, 例如 192.168.0.1 ; 用点分割的每一个数字表示一个字节, 范围是 0 - 255;
例:点分十进IP地址(100.4.5.6),实际上是32位二进制数(01100100.00000100.00000101.00000110)。
4.2 几组概念
-
网络地址 IP地址由网络号(包括子网号)和主机号组成,网络地址的主机号为全0,网络地址代表着整个网络。 -
广播地址
广播地址通常称为直接广播地址,是为了区分受限广播地址。
广播地址与网络地址的主机号正好相反,广播地址中,主机号为全1。当向某个网络的广播地址发送消息时,该网络内的所有主机都能收到该广播消息。
- 组播地址
D类地址就是组播地址。
先回忆下A,B,C,D类地址吧: A类地址以0开头,第一个字节作为网络号,地址范围为:0.0.0.0~127.255.255.255;(modified @2016.05.31) 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类地址为保留地址,供以后使用。 注:只有A,B,C有网络号和主机号之分,D类地址和E类地址没有划分网络号和主机号。
- 255.255.255.255
该IP地址指的是受限的广播地址。受限广播地址与一般广播地址(直接广播地址)的区别在于,受限广播地址只能用于本地网络,路由器不会转发以受限广播地址为目的地址的分组;一般广播地址既可在本地广播,也可跨网段广播。例如:主机192.168.1.1/30上的直接广播数据包后,另外一个网段192.168.1.5/30也能收到该数据报;若发送受限广播数据报,则不能收到。
注:一般的广播地址(直接广播地址)能够通过某些路由器(当然不是所有的路由器),而受限的广播地址不能通过路由器。
- 0.0.0.0
常用于寻找自己的IP地址,例如在我们的RARP,BOOTP和DHCP协议中,若某个未知IP地址的无盘机想要知道自己的IP地址,它就以255.255.255.255为目的地址,向本地范围(具体而言是被各个路由器屏蔽的范围内)的服务器发送IP请求分组。
- 回环地址
127.0.0.0/8被用作回环地址,回环地址表示本机的地址,常用于对本机的测试,用的最多的是127.0.0.1。
- A、B、C类私有地址
私有地址(private address)也叫专用地址,它们不会在全球使用,只具有本地意义。 A类私有地址:10.0.0.0/8,范围是:10.0.0.0~10.255.255.255 B类私有地址:172.16.0.0/12,范围是:172.16.0.0~172.31.255.255 C类私有地址:192.168.0.0/16,范围是:192.168.0.0~192.168.255.255
4.3 Mac地址
如同每一个人都有一个名字一样,每一台网络设备都用物理地址来标识自己,这个地址就是MAC地址。MAC地址也叫物理地址,大多数网卡厂商把MAC地址烧入了网卡的ROM中。
网络设备的MAC地址是全球唯一的。
MAC地址包含两部分:
- 长度为48位, 及6个字节. 一般用16进制数字加上冒号的形式来表示(例如: 08:00:27:03:fb:19)
- 前24比特是组织唯一标识符(OUI,Organizationally Unique Identifier),由IEEE统一分配给设备制造商
- 后24位序列号是厂商分配给每个产品的唯一数值,由各个厂商自行分配(这里所说的产品可以是网卡或者其他需要MAC地址的设备)。
MAC地址作用
数据链路层基于MAC地址进行帧的传输。发送端使用接收端的MAC地址作为目的地址发送数据帧。
总结: 计算机中的两套地址
- 从哪里(源头),到哪里(目的)去。 ---- IP地址,传输过程中不会改变
- 上一站从哪来,下一站往哪去。 ---- Mac地址,传输过程中会变化。
|