admin管理员组

文章数量:1532222

体系结构

 

OSI分层(7层):物理层;数据链路层;网络层;传输层;会话层;表示层;应用层;

TCP/IP分层(4层):网络接口层;网际层;运输层;应用层;

五层协议:物理层;数据链路层;网络层;运输层;应用层;

-应用层的任务是通过应用进程间的交互来完成特定网络应用。应用层协议定义的是应用进程(进程:主机中正在与运行的程序)间的通信和交互的规则。对于不同的网络应用需要不同的应用层协议。在互联网中应用层协议很多,比如域名系统DNS,支持万维网应用的HTTP协议,支持电子邮件的SMTP协议等。我们把应用层交互的数据单元称为报文

-运输层的主要任务就是负责向两个主机进程之间的通信提供通用的数据传输服务。应用进程利用该服务传送应用层报文。“通用的”是指并不针对某一特定的网络应用,而是多种应用可以使用同一运输层服务。由于一台主机可同时运行多个线程,因此运输层有复用和分用的功能。所谓复用就是指多个应用层进程可同时使用下面运输层的服务,分用和复用相反,是运输层把收到的信息分别交付上面应用层中的相应进程。运输层主要使用以下两种协议:传输控制协议TCP-提供面向连接的、可靠的数据传输服务;用户数据协议UDP-提供无连接的、尽最大努力的数据传输服务(不保证数据传输的可靠性)。运输层交互的数据单位称为报文段/用户数据报

-网络层负责为分组交换网上的不同主机提供通信服务。在发送数据时,网络层把运输层产生的报文段或用户数据报封装成分组和包进行传送。在TCP/IP体系结构中,用于网络层使用IP协议,因此分组也叫IP数据报,简称数据报。网络层的另一个任务就是选择合适的路由,使源主机传输层所传下来的分组,能通过网络层中的路由器找到目的主机。互联网是由大量的异构网络通过路由器相互连接起来的。互联网使用的网络层协议是无连接的网际协议和许多路由器选择协议,因此互联网的网络层也叫网际层或IP层。网络层交互的数据单位称为IP数据报。IP、ICMP、OSPF、IPX、RIP、IGRP(路由器)

-数据链路层通常简称为链路层,两台主机之间的数据传输,总是在一段一段的链路上传送的,这就需要使用专门的链路层的协议。在两个相邻节点之间传送数据时,数据链路层将网络层交下来的IP数据报组装成,在两个相邻节点间的链路上传送帧。每一帧包括数据和必要的控制信息(比如同步信息,地址信息,差错控制等)。在接收数据时,控制信息使接收端能够知道一个帧从哪个比特开始到哪个比特结束。这样,数据链路层在收到一个帧后,就可从中提出数据部分,上交网络层。控制信息还使接收端能够检测到所收到的帧中有误差错,如果发现误差,数据链路层就简单地丢弃这个出了差错的帧,以避免继续在网络中传送下去拜拜浪费网络资源。如果需要改正数据在链路层传输时出现差错(这就是说,数据链路层不仅要检错,还要纠错),那么就要采用可靠性传输协议来纠正出现的差错,这种方法会使链路层的协议复杂些。PPP、FR、HDLC、VLAN、MAC(网桥、交换机)、ARP、RARP

-物理层上所传送的数据单位是比特。物理层的作用是实现相邻计算机节点之间比特流的透明传送,尽可能屏蔽掉具体传输介质和物理设备的差异。使其上面的数据链路层不必考虑网络的具体传输介质是什么。“透明传送比特流”表示经实际电路传送后的比特流没有发生变化,对传送的比特流来讲,这个电路好像是看不见的。RJ45、CLOCK、IEEE802.3(中继器、集线器)

MAC地址作用 IP地址作用

MAC地址是一个硬件地址,用来定义网络设备的位置,主要由数据链路层负责。IP地址是IP协议提供的一种统一的地址格式,为互联网上的每一个网络和每一台主机分配一个逻辑地址,以此来屏蔽物理地址的差异。

ping的原理

ping是用来探测主机到主机之间是否可通信,如果不能ping到某台主机,表明不能和这台主机建立连接。ping使用的是ICMP协议(网际层协议),它发送icmp回送请求消息给目的主机,icmp协议规定,目的主机必须返回icmp回送应答消息给源主机,如果源主机在一定时间内收到应答,则认为主机可达。

假定主机A的IP地址是192.168.1.1,主机B的IP地址是192.168.1.2,都在同一子网内,则当你在主机A上运行“Ping 192.168.1.2”后,都发生了些什么呢?

首先,Ping命令会构建一个固定格式的ICMP请求数据包,然后由ICMP协议将这个数据包连同地址“192.168.1.2”一起交给IP层协议(和ICMP一样,实际上是一组后台运行的进程),IP层协议将以地址“192.168.1.2”作为目的地址,本机IP地址作为源地址,加上一些其他的控制信息,构建一个IP数据包,并在一个映射表中查找出IP地址192.168.1.2所对应的物理地址,一并交给数据链路层。其中, 映射表由ARP实现。ARP(Address Resolution Protocol)是地址解析协议,是一种将IP地址转化成物理地址的协议。后者构建一个数据帧,目的地址是IP层传过来的物理地址,源地址则是本机的物理地址,还要附加上一些控制信息,依据以太网的介质访问规则,将它们传送出去。

主机B收到这个数据帧后,先检查它的目的地址,并和本机的物理地址对比,如符合,则接收;否则丢弃。接收后检查该数据帧,将IP数据包从帧中提取出来,交给本机的IP层协议。同样,IP层检查后,将有用的信息提取后交给ICMP协议,后者处理后,马上构建一个ICMP应答包,发送给主机A,其过程和主机A发送ICMP请求包到主机B一模一样。

因为ping命令是使用ICMP协议,所以没有端口号,但是有两个域:类型和代码。

DNS协议(域名与IP地址相互转换)

DNS协议是用来将域名转换为IP地址的协议(也可以将IP地址转换为相应的域名地址)

为什么不使用域名来直接进行通信呢?

  • 因为IP地址是固定长度的,IPV4是32位,IPV6是128位,而域名是变长的,不便于计算机处理
  • IP地址对于用户来说记忆不方便,但域名便于用户使用,例如www.baidu就是百度的域名。

总结来说,IP地址对面向主机的,而域名是面向用户的。

hosts文件:

域名和IP的对应关系保存在一个叫hosts文件中。最初,通过互联网信息中心来管理这个文件,如果有一个新的计算机想接入网络,或者某个计算IP变更都需要到信息中心申请变更hosts文件,其他计算姐也需要定期更新,才能上网,但是这样太麻烦了,就出现了DNS系统。

DNS系统:

1.一个组织的系统管理机构,维护系统内的每个主机的IP和主机名的对应关系

2.如果新计算机接入网络,将这个信息注册到数据库中

3.用户输入域名的时候,会自动查询DNS服务器,由DNS服务器检索数据库,得到对应的IP地址

我们可以通过命令查看自己的hosts文件:

 

在域名解析的过程中仍然会优先查找hosts文件的内容。

DNS迭代查询 递归查询

1.主机向本地域名服务器的查询一般都是采用递归查询

所谓递归查询就是:如果主机所询问的本地域名服务器不知道被查询的域名的IP地址,那么本地域名服务器就以DNS客户的身份,向其他根域名服务器继续发出查询请求报文(即替主机继续查询),而不是让主机自己进行下一步查询。

因此,递归查询返回的查询结果要么是所要查询的IP地址,要么是报错,表示无法查询到所需的IP地址。

2.本地域名服务器向根域名服务器的查询一般为迭代查询(DNS服务器之间的交互查询)

迭代查询的特点:当根域名服务器收到本地域名服务器发出的迭代查询请求报文时,要么给出所要查询的IP地址,要么告诉本地服务器:“你下一步应当向哪一个域名服务器进行查询”。然后让本地服务器进行后续的查询。根域名服务器通常是把自己知道的顶级域名服务器的IP地址告诉本地域名服务器,让本地服务器再向顶级域名服务器查询。顶级域名服务器在收到本地域名服务器的查询请求后,要么给出所要查询的IP地址,要么告诉本地服务器下一步应当向哪一个权限域名服务器进行查询。

最后,知道了所要解析的IP地址或报错,把这个结果返回给发起查询的主机。

递归:客户端只发一次请求,要求对方给出最终结果。

迭代:客户端发出一次请求,对方如果没有授权回答,它就会返回一个能解答这个查询的其它名称服务器列表,客户端会再向返回的列表中发出请求,直到找到最终负责所查域名的名称服务器,从它得到最终结果。

授权回答:向dns服务器查询一个域名,刚好这个域名是本服务器负责,返回的结果就是授权回答。

从递归和迭代查询可以看出:

客户端-本地dns服务端:这部分属于递归查询。(定义)

本地dns服务端---外网:这部分属于迭代查询。

递归查询时,返回的结果只有两种:查询成功或查询失败.

迭代查询,又称作重指引,返回的是最佳的查询点或者主机地址.

DNS举例解析步骤

假定域名为m.xyz的主机想知道另一个主机y.abc的IP地址。例如,主机m.xyz打算发送邮件给y.abc。这时就必须知道主机y.abc的IP地址。下面是上图a的几个查询步骤:

1、主机m.abc先向本地服务器dns.xyz进行递归查询。

2、本地服务器采用迭代查询。它先向一个根域名服务器查询。

3、根域名服务器告诉本地服务器,下一次应查询的顶级域名服务器dns的IP地址。

4、本地域名服务器向顶级域名服务器dns进行查询。

5、顶级域名服务器dns告诉本地域名服务器,下一步应查询的权限服务器dns.abc的IP地址。

6、本地域名服务器向权限域名服务器dns.abc进行查询。

7、权限域名服务器dns.abc告诉本地域名服务器,所查询的主机的IP地址。

8、本地域名服务器最后把查询结果告诉m.xyz。

整个查询过程共用到了8个UDP报文。

为了提高DNS查询效率,并减轻服务器的负荷和减少因特网上的DNS查询报文数量,在域名服务器中广泛使用了高速缓存,用来存放最近查询过的域名以及从何处获得域名映射信息的记录。

DNS域名解析

当一个用户在地址栏输入www.taobao时,DNS解析大概有10个过程:

1.浏览器先检查自身缓存中有没有被解析过的这个域名对应的IP地址,如果有,解析结束。同时域名被缓存的时间也可通过TTL属性来设置。

2.如果浏览器缓存中没有(即没命中),浏览器会检查操作系统缓存中有没有对应的已解析过的结果,而操作系统也有一个域名解析的过程,在windows中可通过c盘里一个叫hosts的文件来设置,如果你这里指定了一个域名对应的IP地址,那么浏览器会首先使用这个IP地址。

但是这种操作系统级别的域名解析规程也被很多黑客利用,通过修改你的hosts文件里的内容把特定的域名解析到他指定的IP地址上,造成所谓的域名劫持,所以在windows中将hosts文件设置成了readonly,防止被恶意篡改。

3.如果至此还没有命中域名,才会真正地请求本地域名服务器(LDNS)来解析这个域名,这台服务器一般在你的城市的某个角落,距离你不会很远,并且这台服务器的性能都很好,一般都会缓存域名解析结果,大约80%的域名解析到这里就完成了。

4.如果LDNS仍然没有命中,就直接跳到Root Server域名服务器请求解析

5.根域名服务器会返回给LDNS一个所查询域的主域名服务器(gTLD Server,国际顶尖域名服务器,如 等)地址

6.此时LDNS会再发送请求给上一步返回的gTLD

7.接受请求的gTLD查找并返回这个域名所对应的Name Server的地址,这个Name Server就是网站注册的域名服务器

8.Name Server根据映射关系表找到目标IP,返回给LDNS

9.LDNS缓存这个域名和对应的IP

10.LDNS把解析的结果返回给用户,用户根据TTL值缓存到本地系统缓存中,至此域名解析过程结束。

DNS使用的是TCP协议还是UDP协议?

DNS占用53号端口,同时使用TCP和UDP协议。那么DNS在什么情况下使用这两种协议?

DNS在区域传输的时候使用TCP协议,其他时候使用UDP协议。

DNS区域传输的时候使用TCP协议:

1.辅域名服务器会定时(一般3小时)向主域名服务器进行查询以便了解数据是否有变动。如有变动,会执行一次区域传送,进行数据同步。区域传送使用TCP而不是UDP,因为数据同步传送的数据量比一个请求应答的数据量要多得多。

2.TCP是一种可靠连接,保证了数据的准确性。

域名解析时使用UDP协议:

客户端向DNS服务器查询域名,一般返回的内容都不超过512字节,用UDP传输即可。不用经过三次握手,这样DNS服务器负载更低,响应更快。理论上说,客户端也可以指定向DNS服务器查询时用TCP,但事实上,很多DNS服务器进行配置的时候,仅支持UDP查询包。

ARP协议(将IP地址转换为MAC地址)数据链路层

地址解析协议。是一种将IP地址转化成物理地址的协议。

一台网络设备要发送数据给另外一台网络设备时,必须要知道对方的IP地址。但是,仅有IP地址是不够的,因为IP数据报文必须封装成帧才能通过数据链路层进行发送,而数据帧必须要包含目的MAC地址,因此发送端还必须获取到目的MAC地址。每一个网络设备在数据封装前都需要获取下一跳的MAC地址。IP地址由网络层来提供,MAC地址通过ARP协议来获取。ARP协议是TCP/IP协议簇中的重要组成部分,ARP能够通过目的IP地址发现目标设备的MAC地址,从而实现数据链路层的可达性。

ARP 工作的基本流程

ARP 工作流程分为两个阶段,一个是 ARP 请求过程,另一个是 ARP 响应过程。

工作流程如下所示:

在上面图片中,主机 A 的 IP 地址为 192.168.1.1,主机 B 的 IP 地址为 192.168.1.2。

主机 A 与主机 B 进行通信,需要获取其 MAC 地址,基本流程如下:

  • 主机 A 以广播形式向网络中所有主机发送 ARP 请求,请求包中包含了目标 IP 地址 192.168.1.2。
  • 主机 B 接收到请求,发现自己就是主机 A 要找的主机,返回响应,响应包中包含自己的 MAC 地址。

TCP三次握手和四次挥手

TCP 的三次握手

过程:

假设 A 为客户端,B 为服务器端。

首先 B 处于 LISTEN(监听)状态,等待客户的连接请求。

  • A 向 B 发送连接请求报文,SYN=1,ACK=0,选择一个初始的序号 x。A进入SYN_SENT状态。
  • B 收到连接请求报文,如果同意建立连接,则向 A 发送连接确认报文,SYN=1,ACK=1,确认号为 x+1,同时也选择一个初始的序号 y。

本文标签: 计算机网络面试题常见