计算机网络之面试常考

整理一下计算机网络部分的面试常考点,参考书籍:《计算机网络》第五版 谢希仁的那本,但愿对你们有所帮助css

OSI,TCP/IP,五层协议的体系结构,以及各层协议html

OSI分层      (7层):物理层、数据链路层、网络层、传输层、会话层、表示层、应用层。
TCP/IP分层(4层):网络接口层、              网际层、运输层、                            应用层。
五层协议     (5层):物理层、数据链路层、网络层、运输层、                            应用层。
 
每一层的协议以下
物理层:RJ4五、CLOCK、IEEE802.3    (中继器,集线器,网卡)
数据链路:PPP、FR、HDLC、VLAN、MAC  (网桥,交换机)
网络层:IP、ICMP、ARP、RARP、OSPF、IPX、RIP、IGRP、 (路由器)
传输层:TCP、UDP、SPX   (网关)
会话层:NFS、SQL、NETBIOS、RPC
表示层:JPEG、MPEG、ASII
应用层:FTP、DNS、Telnet、SMTP、HTTP、WWW、NFS
 
每一层的做用以下

物理层:经过媒介传输比特,肯定机械及电气规范(比特Bit)web

数据链路层:将比特组装成帧和点到点的传递(帧Frame)面试

网络层:负责数据包从源到宿的传递和网际互连(包PackeT)浏览器

传输层:提供端到端的可靠报文传递和错误恢复(段Segment)缓存

会话层:创建、管理和终止会话(会话协议数据单元SPDU)安全

表示层:对数据进行翻译、加密和压缩(表示协议数据单元PPDU)服务器

应用层:容许访问OSI环境的手段(应用协议数据单元APDU)cookie

 

ARP是地址解析协议,简单语言解释一下工做原理。网络

1:首先,每一个主机都会在本身的ARP缓冲区中创建一个ARP列表,以表示IP地址和MAC地址之间的对应关系。

2:当源主机要发送数据时,首先检查ARP列表中是否有对应IP地址的目的主机的MAC地址,若是有,则直接发送数据,若是没有,就向本网段的全部主机发送ARP数据包,该数据包包括的内容有:源主机IP地址,源主机MAC地址,目的主机的IP地址

3:当本网络的全部主机收到该ARP数据包时,首先检查数据包中的IP地址是不是本身的IP地址,若是不是,则忽略该数据包,若是是,则首先从数据包中取出源主机的IP和MAC地址写入到ARP列表中,若是已经存在,则覆盖,而后将本身的MAC地址写入ARP响应包中,告诉源主机本身是它想要找的MAC地址。

4:源主机收到ARP响应包后。将目的主机的IP和MAC地址写入ARP列表,并利用此信息发送数据。若是源主机一直没有收到ARP响应数据包,表示ARP查询失败。

广播发送ARP请求,单播发送ARP响应。

 

描述:RARP

RARP是逆地址解析协议,做用是完成硬件地址到IP地址的映射,主要用于无盘工做站,由于给无盘工做站配置的IP地址不能保存。工做流程:在网络中配置一台RARP服务器,里面保存着IP地址和MAC地址的映射关系,当无盘工做站启动后,就封装一个RARP数据包,里面有其MAC地址,而后广播到网络上去,当服务器收到请求包后,就查找对应的MAC地址的IP地址装入响应报文中发回给请求者。由于须要广播请求报文,所以RARP只能用于具备广播能力的网络。

 HTTP协议

http://www.javashuo.com/article/p-kfljnpvz-bn.html

TCP三次握手和四次挥手的全过程

三次握手:

第一次握手:客户端发送syn包(syn=x)到服务器,并进入SYN_SEND状态,等待服务器确认;

第二次握手:服务器收到syn包,必须确认客户的SYN(ack=x+1),同时本身也发送一个SYN包(syn=y),即SYN+ACK包,此时服务器进入SYN_RECV状态;

第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=y+1),此包发送完毕,客户端和服务器进入ESTABLISHED状态,完成三次握手。

握手过程当中传送的包里不包含数据,三次握手完毕后,客户端与服务器才正式开始传送数据。理想状态下,TCP链接一旦创建,在通讯双方中的任何一方主动关闭链接以前,TCP 链接都将被一直保持下去。

四次握手

四次挥手(我要和你断开连接;好的,断吧。我也要和你断开连接;好的,断吧):

  • 第一次挥手:Client发送一个FIN,用来关闭Client到Server的数据传送,Client进入FIN_WAIT_1状态。

  • 第二次挥手:Server收到FIN后,发送一个ACK给Client,确认序号为收到序号+1(与SYN相同,一个FIN占用一个序号),Server进入CLOSE_WAIT状态。此时TCP连接处于半关闭状态,即客户端已经没有要发送的数据了,但服务端若发送数据,则客户端仍要接收。

  • 第三次挥手:Server发送一个FIN,用来关闭Server到Client的数据传送,Server进入LAST_ACK状态。

  • 第四次挥手:Client收到FIN后,Client进入TIME_WAIT状态,接着发送一个ACK给Server,确认序号为收到序号+1,Server进入CLOSED状态,完成四次挥手。

 

 在浏览器中输入www.baidu.com后执行的所有过程

  

 (1). 浏览器查询 DNS,获取域名对应的IP地址:具体过程包括浏览器搜索自身的DNS缓存、搜索操做系统的DNS缓存、读取本地的Host文件和向本地DNS服务器进行查询等。对于向本地DNS服务器进行查询,若是要查询的域名包含在本地配置区域资源中,则返回解析结果给客户机,完成域名解析(此解析具备权威性);若是要查询的域名不禁本地DNS服务器区域解析,但该服务器已缓存了此网址映射关系,则调用这个IP地址映射,完成域名解析(此解析不具备权威性)。若是本地域名服务器并未缓存该网址映射关系,那么将根据其设置发起递归查询或者迭代查询;

  (2). 浏览器得到域名对应的IP地址之后,浏览器向服务器请求创建连接,发起三次握手;

  (3). TCP/IP连接创建起来后,浏览器向服务器发送HTTP请求;

  (4). 服务器接收到这个请求,并根据路径参数映射到特定的请求处理器进行处理,并将处理结果及相应的视图返回给浏览器;

  (5). 浏览器解析并渲染视图,若遇到对js文件、css文件及图片等静态资源的引用,则重复上述步骤并向服务器请求这些资源;

  (6). 浏览器根据其请求到的资源、数据渲染页面,最终向用户呈现一个完整的页面。

 

Http和Https的区别

  Http协议运行在TCP之上,明文传输,客户端与服务器端都没法验证对方的身份;Https是身披SSL(Secure Socket Layer)外壳的Http,运行于SSL上,SSL运行于TCP之上,是添加了加密和认证机制的HTTP。两者之间存在以下不一样:

    • 端口不一样:Http与Http使用不一样的链接方式,用的端口也不同,前者是80,后者是443;

    • 资源消耗:和HTTP通讯相比,Https通讯会因为加减密处理消耗更多的CPU和内存资源;

    • 开销:Https通讯须要证书,而证书通常须要向认证机构购买; 
        
      Https的加密机制是一种共享密钥加密和公开密钥加密并用的混合加密机制。

TCP和UDP的区别?

TCP提供面向链接的、可靠的数据流传输,而UDP提供的是非面向链接的、不可靠的数据流传输。

TCP传输单位称为TCP报文段,UDP传输单位称为用户数据报。

TCP注重数据安全性,UDP数据传输快,由于不须要链接等待,少了许多操做,可是其安全性却通常。

 

TCP对应的协议和UDP对应的协议

TCP对应的协议:

(1) FTP:定义了文件传输协议,使用21端口。

(2) Telnet:一种用于远程登录的端口,使用23端口,用户能够以本身的身份远程链接到计算机上,可提供基于DOS模式下的通讯服务。

(3) SMTP:邮件传送协议,用于发送邮件。服务器开放的是25号端口。

(4) POP3:它是和SMTP对应,POP3用于接收邮件。POP3协议所用的是110端口。

(5)HTTP:是从Web服务器传输超文本到本地浏览器的传送协议。

UDP对应的协议:

(1) DNS:用于域名解析服务,将域名地址转换为IP地址。DNS用的是53号端口。

(2) SNMP:简单网络管理协议,使用161号端口,是用来管理网络设备的。因为网络设备不少,无链接的服务就体现出其优点。

(3) TFTP(Trival File Transfer Protocal),简单文件传输协议,该协议在熟知端口69上使用UDP服务。

 

DNS域名系统,简单描述其工做原理。

DNS客户机须要在程序中使用名称时,它会查询DNS服务器来解析该名称。客户机发送的每条查询信息包括三条信息:包括:指定的DNS域名,指定的查询类型,DNS域名的指定类别。基于UDP服务,端口53. 该应用通常不直接为用户使用,而是为其余应用服务,如HTTP,SMTP等在其中须要完成主机名到IP地址的转换。

 

面向链接和非面向链接的服务的特色是什么?

面向链接的服务,通讯双方在进行通讯以前,要先在双方创建起一个完整的能够彼此沟通的通道,在通讯过程当中,整个链接的状况一直能够被实时地监控和管理。

       非面向链接的服务,不须要预先创建一个联络两个通讯节点的链接,须要通讯的时候,发送节点就能够往网络上发送信息,让信息自主地在网络上去传,通常在传输的过程当中再也不加以监控。

 

TCP的三次握手过程?为何会采用三次握手,若采用二次握手能够吗?

为了防止 已失效的连接请求报文忽然又传送到了服务端,于是产生错误。

  客户端发出的链接请求报文并未丢失,而是在某个网络节点长时间滞留了,以至延误到连接释放之后的某个时间才到达Server。这是,Server误觉得这是Client发出的一个新的连接请求,因而就向客户端发送确认数据包,赞成创建连接。若不采用“三次握手”,那么只要Server发出确认数据包,新的连接就创建了。因为client此时并未发出创建连接的请求,因此其不会理睬Server的确认,也不与Server通讯;而这时Server一直在等待Client的请求,这样Server就白白浪费了必定的资源。若采用“三次握手”,在这种状况下,因为Server端没有收到来自客户端的确认,则就会知道Client并无要求创建请求,就不会创建连接。

为何 是四次挥手,而不是三次

客户端和服务器端的数据传输是双向的,客户端会给服务器段发送数据,服务器端也会给客户端发送数据,这两个得分别来关闭,客户端数据传输结束后能够请求关闭到服务器端的数据传输,须要两次握手,而后服务器端数据传输完也请求关闭,也须要两次(每次关闭都须要一个响应,因此每一个须要两次挥手)。可能客户端到服务器关闭之后,服务器到客户端还有数据传输,因此中间两次挥手不能合并。

session和cookie

cookie是客户端技术,程序把每一个用户的数据以cookie的形式写给用户各自的浏览器,当用户使用浏览器再去访问服务器的web资源时,就会带着各自的数据去,这样web处理的资源就是各个用户本身的数据了,特色是会话数据保存在客户端。

session是服务器端技术,服务器在运行时为每一个用户的数据建立一个其独享的session对象,存在服务器,在cookie中设置可sessionID返回给客户端,当客户端再次访问时,在请求中会带上sessionID,服务器会经过sessionId找到session。

  • 实现机制:Session的实现经常依赖于Cookie机制,经过Cookie机制回传SessionID;

  • 大小限制:Cookie有大小限制而且浏览器对每一个站点也有cookie的个数限制,Session没有大小限制,理论上只与服务器的内存大小有关;

  • 安全性:Cookie存在安全隐患,经过拦截或本地文件找获得cookie后能够进行攻击,而Session因为保存在服务器端,相对更加安全;

  • 服务器资源消耗:Session是保存在服务器端上会存在一段时间才会消失,若是session过多会增长服务器的压力。

    Application(ServletContext):与一个Web应用程序相对应,为应用程序提供了一个全局的状态,全部客户均可以使用该状态。

 

Get与POST的区别

  GET与POST是咱们经常使用的两种HTTP Method,两者之间的区别主要包括以下五个方面:

(1). 从功能上讲,GET通常用来从服务器上获取资源,POST通常用来更新服务器上的资源;

(2). 从REST服务角度上说,GET是幂等的,即读取同一个资源,老是获得相同的数据,而POST不是幂等的,由于每次请求对资源的改变并非相同的;进一步地,GET不会改变服务器上的资源,而POST会对服务器资源进行改变;

(3). 从请求参数形式上看,GET请求的数据会附在URL以后,即将请求数据放置在HTTP报文的 请求头 中,以?分割URL和传输数据,参数之间以&相连。特别地,若是数据是英文字母/数字,原样发送;不然,会将其编码为 application/x-www-form-urlencoded MIME 字符串(若是是空格,转换为+,若是是中文/其余字符,则直接把字符串用BASE64加密,得出如:%E4%BD%A0%E5%A5%BD,其中%XX中的XX为该符号以16进制表示的ASCII);而POST请求会把提交的数据则放置在是HTTP请求报文的 请求体 中。

(4). 就安全性而言,POST的安全性要比GET的安全性高,由于GET请求提交的数据将明文出如今URL上,并且POST请求参数则被包装到请求体中,相对更安全。

(5). 从请求的大小看,GET请求的长度受限于浏览器或服务器对URL长度的限制,容许发送的数据量比较小,而POST请求则是没有大小限制的。

对于可靠性,TCP经过如下方式进行保证:

  • 数据包校验:目的是检测数据在传输过程当中的任何变化,若校验出包有错,则丢弃报文段而且不给出响应,这时TCP发送数据端超时后会重发数据;

  • 对失序数据包重排序:既然TCP报文段做为IP数据报来传输,而IP数据报的到达可能会失序,所以TCP报文段的到达也可能会失序。TCP将对失序数据进行从新排序,而后才交给应用层;

  • 丢弃重复数据:对于重复数据,可以丢弃重复数据;

  • 应答机制:当TCP收到发自TCP链接另外一端的数据,它将发送一个确认。这个确认不是当即发送,一般将推迟几分之一秒;

  • 超时重发:当TCP发出一个段后,它启动一个定时器,等待目的端确认收到这个报文段。若是不能及时收到一个确认,将重发这个报文段;

  • 流量控制:TCP链接的每一方都有固定大小的缓冲空间。TCP的接收端只容许另外一端发送接收端缓冲区所能接纳的数据,这能够防止较快主机导致较慢主机的缓冲区溢出,这就是流量控制。TCP使用的流量控制协议是可变大小的滑动窗口协议。

Http的短链接和长链接

短链接:浏览器和服务器每进行一次HTTP操做,就创建一次链接,但任务结束就中断链接。

长链接:客户端和服务器间创建链接后,该链接有必定的存活时间(keep-alive),在该时间内,客户端访问服务器不须要再新建链接,直接使用该链接实现长链接要客户端和服务端都支持长链接。

TCP/IP的流量控制?

利用滑动窗口实现流量控制,若是发送方把数据发送得过快,接收方可能会来不及接收,这就会形成数据的丢失。所谓流量控制就是让发送方的发送速率不要太快,要让接收方来得及接收。

 TCP为每个链接设有一个持续计时器(persistence timer)。只要TCP链接的一方收到对方的零窗口通知,就启动持续计时器。若持续计时器设置的时间到期,就发送一个零窗口控测报文段(携1字节的数据),那么收到这个报文段的一方就从新设置持续计时器。

 

TCP拥塞控制?

防止过多的数据注入到网络中,这样可使网络中的路由器或链路不致过载。拥塞控制所要作的都有一个前提:网络可以承受现有的网络负荷。拥塞控制是一个全局性的过程,涉及到全部的主机、路由器,以及与下降网络传输性能有关的全部因素。

几种拥塞控制方法:

慢开始(slow-start )、拥塞避免(congestion avoidance )、快重传( fastretransmit )和快恢复( fastrecovery )。

 

 
转载:http://www.cnblogs.com/zyf-zhaoyafei/p/4716297.html
相关文章
相关标签/搜索