网络协议
网络协议是计算机在通信过程中要遵循的一些约定好的规则。 要对网络进行分层的原因
- 易于实现和维护,因为各层之间是独立的,层与层之间不会受到影响。
- 有利于标准化的制定。
各层协议及作用
计算机网络体系可以大致分为三种:七层模型、五层模型和TCP/IP四层模型。需要熟练掌握的是五层模型
- 应用层:应用层的任务是通过应用进程之间的交互来完成特定的网络作用,常见的应用层协议有域名系统DNS,HTTP协议等。
- 表示层:表示层的主要作用是数据的表示、安全、压缩。可确保一个系统的应用层所发送的信息可以被另一个系统的应用层读取。
- 会话层:会话层的主要作用是建立通信链接,保持会话过程通信链接的畅通,同步两个节点之间的对话,决定通信是否被中断以及通信中断时决定从何处重新发送。
- 传输层:传输层的主要作用是负责向两台主机进程之间的通信提供数据传输服务。传输层的协议主要有传输控制协议TCP和用户数据协议UDP。
- 网络层:网络层的主要作用是选择合适的网间路由和交换节点,确保数据及时送达。常见的协议有IP协议。
- 数据链路层:数据链路层的作用是在物理层提供比特流服务的基础上,建立相邻结点之间的数据链路,通过差错控制 提供数据帧在信道上无差错的传输,并进行各电路上的动作系列。常见的协议有SDLC、HDLC、PPP等
- 物理层:物理层的主要作用是实现相邻计算机结点之间比特流的透明传输,并尽量屏蔽掉具体传输介质和物理设备的差异。
URI和URL的区别
- URI全称是统一资源标志符,主要作用是唯一标识一个资源。
- URL全称是统一资源定位符,主要作用是提供资源的路径。
经典比喻是URI像是身份证,可以唯一标识一个人,URL像是一个住址,可以通过URL找到这个人。
DNS的工作流程
DNS全称为domain name system,即域名系统。DNS是因特网上作为域名和IP地址相互映射的一个分布式数据库,能够使用户更方便的去访问互联网,而不用去记住能够被机器直接读取的IP地址。比如我们访问百度是www.baidu.com,而不是访问112.80.248.74,DNS要做的就是将www.baidu.com解析成112.80.248.74
DNS是集群式的工作方式
如果只用一个DNS服务器包含了所有的域名和IP地址映射,虽然简单,但如果出现故障,就会崩溃。
所以DNS系统使用的是分布式的层次数据数据库模型,还有缓存机制也能解决这个问题。
DNS的工作流程
主机向本地域名服务器的查询一般是递归查询,本地域名服务器向根域名的查询一般是迭代查询。
举例说明递归查询就是小明去问小红问题,小红不知道,小红就去问了小王,小王把答案告诉小红后,小红再把答案告诉小明。 迭代查询就是小明去问小红问题,小红不知道,然后小红就让小明去问小王,小明就去问小王,然后小王把答案告诉小明。
- 在浏览器中输入www.baidu.com 域名,操作系统会先检查自己本地的hosts文件是否有这个域名的映射关系,如果有,就先调用这个IP地址映射,完成域名解析。
- 如果没有,则查询本地DNS解析器缓存,如果有则完成地址解析。
- 如果本地DNS解析器缓存中没有,则去查找本地DNS服务器,如果查到,完成解析。
- 如果没有,则本地服务器会向根域名服务器发起查询请求。根域名服务器会告诉本地域名服务器去查询哪个顶级域名服务器。
- 本地域名服务器向顶级域名服务器发起查询请求,顶级域名服务器会告诉本地域名服务器去查找哪个权限域名服务器。
- 本地域名服务器向权限域名服务器发起查询请求,权限域名服务器告诉本地域名服务器网址对应的IP地址。
- 本地域名服务器告诉主机网址对应的IP地址。
ARP协议
ARP协议属于网络层的协议,主要作用是实现从IP地址转换成MAC地址。在每个主机或者路由器中都建有一个ARP缓存表,表中有IP地址对应的MAC地址。
- IP地址是指互联网协议地址,IP地址是IP协议提供的一种统一的地址格式,他为互联网上的每一个网格和每一台主机分配一个逻辑地址,以此来屏蔽物理地址的差异。
- MAC地址又称物理地址,由网络设备制造商生产时写在硬件内部,不可更改,并且每个以太网设备的MAC地址都是唯一的。
数据在传输过程中,会先从高层传到底层,然后在通信链路上传输。
见下图,TCP报文在网络层被封装成IP数据报,在数据链路层被封装成MAC帧,然后在通信链路中传输。在网络层使用的是IP地址,在数据链路层使用的是MAC地址。
MAC帧在传送时的源地址和目的地址使用的都是MAC地址,在通信链路上的主机或路由器也都是都是根据MAC帧首部的MAC地址接收MAC帧。并且在数据链路层是看不到IP地址的,只有当数据传到网络层时去掉MAC帧的首部和尾部时才能在IP数据报的首部中找到源IP地址和目的地址。 网络层实现的是主机之间的通信,而链路层实现的是链路之间的通信,从下图可以看出,在数据传输过程中,IP数据报的源地址(IP1)和目的地址(IP2)是一直不变的,而MAC地址(硬件地址)却一直随着链路的改变而改变。
ARP工作流程
- 在局域网内,主机A要向主机B发送IP数据报时,首先会在主机A的ARP缓存表中查找是否有IP地址及其对应的MAC地址,如果有,则将MAC地址写入到MAC帧的首部,并通过局域网将该MAC帧发送到MAC地址所在的主机B。
- 如果A的ARP缓存表中没有B的IP地址及所对应的MAC地址,A会在局域网内广播发送一个ARP请求分组。局域网内所有主机都会收到这个ARP请求分组。
- B在看到A发送的ARP请求分组中有自己的IP地址,就会向A以单播的方式发送一个带有自己MAC地址的相应分组。
- A收到B的ARP响应分组后,会在ARP缓存表中写入B的IP地址及其对应的MAC地址。
- 如果A和B不在同一个局域网内,即使知道主机B的MAC地址也是不能直接通信的,必须通过路由器转发到主机B的局域网才可以通过B的MAC地址找到B。
并且在A和B已经可以通信的情况下,A的ARP缓存表中存的并不是B的IP地址及MAC地址,而是B的IP地址及该通信链路上的下一跳路由器的MAC地址。这就是上图中的源IP地址和目的IP地址一直不变,而MAC地址却随着链路的不同而改变。 - 如果A和B不在同一个局域网,参考上图,H1需要先广播找到路由器R1的MAC地址,再由R1广播找到路由器R2的MAC地址,最后R2广播找到H2的MAC地址,建立起通信链路。
IP地址和MAC地址
标识网络中的一台计算机比较常用的就是IP地址和MAC地址,但是计算机的IP地址可由用户自行更改,管理起来相对困难,而MAC地址不可更改,所以一般会把IP地址和MAC地址结合起来使用。
但只用MAC也是不行的,因为随着网络中的设备越来越多,路由过程越来越复杂,出现了子网概念。对于目的地址在其他子网的数据包,路由只需要将数据包送到那个子网即可,这个过程就是上面说的ARP协议。
而使用IP地址,是因为IP地址是和地域相关的,对于同一个子网上的设备,IP地址的前缀是一样的,这样路由器通过IP地址前缀就知道是在哪个子网,但只用MAC地址的话,路由器需要记住每个MAC地址在哪个子网,这需要极大的存储空间。
IP地址可以比作地址,MAC地址比作收件人,在一次通信过程中,两者缺一不可。
|