网络常见面试题

我整理的作为一个前端,面试常考的网络部分的内容,方便自己查看,也当做一个知识储备。

1.OSI七层协议

  1. 物理层(中继器、集线器)
  2. 数据链路层(网桥、交换机、PPP、MAC)
  3. 网络层(路由器、IP、ICMP、ARP、RARP、)
  4. 传输层(TCP、UDP)
  5. 会话层
  6. 表示层
  7. 应用层(FTP、DNS、Telnet、SMTP、HTTP、WWW、NFS)

2.各种协议的意义和功能

ICMP协议: 因特网控制报文协议。它是TCP/IP协议族的一个子协议,用于在IP主机、路由器之间传递控制消息。 TFTP协议: 是TCP/IP协议族中的一个用来在客户机与服务器之间进行简单文件传输的协议,提供不复杂、开销不大的文件传输服务。 HTTP协议:
超文本传输协议,是一个属于应用层的面向对象的协议,由于其简捷、快速的方式,适用于分布式超媒体信息系统。
NAT协议:网络地址转换属接入广域网(WAN)技术,是一种将私有(保留)地址转化为合法IP地址的转换技术,
DHCP协议:动态主机配置协议,是一种让系统得以连接到网络上,并获取所需要的配置参数手段,使用UDP协议工作。具体用途:给内部网络或网络服务供应商自动分配IP地址,给用户或者内部网络管理员作为对所有计算机作中央管理的手段。

3.TCP和UDP的区别

  1. TCP提供面向连接的、可靠的数据流传输,而UDP提供的是非面向连接的、不可靠的数据流传输。
  2. TCP传输单位称为TCP报文段,UDP传输单位称为用户数据报。
  3. TCP注重数据安全性,UDP数据传输快,因为不需要连接等待,少了许多操作,但是其安全性却一般。
  4. TCP对应的协议:
  • FTP:定义了文件传输协议,使用21端口。
  • Telnet:一种用于远程登陆的端口,使用23端口,用户可以以自己的身份远程连接到计算机上,可提供基于DOS模式下的通信服务。
  • SMTP:邮件传送协议,用于发送邮件。服务器开放的是25号端口。
  • POP3:它是和SMTP对应,POP3用于接收邮件。POP3协议所用的是110端口。
  • HTTP:是从Web服务器传输超文本到本地浏览器的传送协议
    2. UDP对应的协议:
    • DNS:用于域名解析服务,将域名地址转换为IP地址。DNS用的是53号端口。
    • SNMP:简单网络管理协议,使用161号端口,是用来管理网络设备的。由于网络设备很多,无连接的服务就体现出其优势。
    • TFTP(Trival File Transfer Protocal),简单文件传输协议,该协议在熟知端口69上使用UDP服务。

4.三次握手和四次挥手过程分析

1.三次握手

  • 客户端发送syn包到服务器,并进入syn-send状态,等待服务器确认 seq=1
  • 服务器收到syn包,必须确认客户的SYN(ack=x+1)同时自己也发送一个SYN包(syn=y),即SYN+ACK包,此时服务器进入SYN_RECV状态;
  • 客户端收到服务器发送的syn+ack包,向服务器发送确认包ACK(ack=y+1),此包发送完毕,客户端和服务器进入ESTABLISHED状态,完成三次握手。

2.四次挥手

  • 主动关闭方发送一个FIN,用来关闭主动方到被动关闭方的数据传送,但是,此时主动关闭方还可 以接受数据。
  • 被动关闭方收到FIN包后,发送一个ACK给对方,确认序号为收到序号+1(与SYN相同,一个FIN占用一个序号)。
  • 被动关闭方发送一个FIN,用来关闭被动关闭方到主动关闭方的数据传送,也就是告诉主动关闭方,我的数据也发送完了,不会再给你发数据了。
  • 主动关闭方收到FIN后,发送一个ACK给被动关闭方,确认序号为收到序号+1,至此,完成四次挥手。
    网络常见面试题_第1张图片

5.HTTP协议和HTTPS协议的区别

  • http是超文本传输协议,信息是明文传输,https则是具有安全性的ssl加密传输协议。
  • http和https使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443。

6.请求报文和响应报文

  1. 请求报文(请求行、首部行、实体主体)
  • 请求行:方法 url 版本 CRLF
  • 首部行:请求头部通知服务器有关于客户端请求的信息,典型的请求头有:User-Agent:产生请求的浏览器类型。 Accept:客户端可识别的内容类型列表。Host:请求的主机名,允许多个域名同处一个IP地址,即虚拟主机。
  • 实体主体

2.响应报文(状态行、消息报头、响应正文)

  • 状态行:版本 状态码 短语 CRLF
  • 消息报头
  • 响应正文

7.get 和 post 的区别

  • GET提交的数据会在地址栏中显示出来,而POST提交,地址栏不会改变
  • GET提交时,传输数据就会受到URL长度的限制。 POST:由于不是通过URL传值,理论上数据不受限
  • POST的安全性要比GET的安全性高。

8.浏览器输入一个请求到页面相应的过程

1、客户端浏览器通过DNS解析到www.baidu.com 的IP地址220.181.27.48,通过这个IP地址找到客户端到服务器的路径。客户端浏览器发起一个HTTP会话到220.181.27.48,然后通过TCP进行封装数据包,输入到网络层。
2、在客户端的传输层,把HTTP会话请求分成报文段,添加源和目的端口,如服务器使用80端口监听客户端的请求,客户端由系统随机选择一个端口如5000,与服务器进行交换,服务器把相应的请求返回给客户端的5000端口。然后使用IP层的IP地址查找目的端。
3、客户端的网络层不用关心应用层或者传输层的东西,主要做的是通过查找路由表确定如何到达服务器,期间可能经过多个路由器,这些都是由路由器来完成的工作,我不作过多的描述,无非就是通过查找路由表决定通过那个路径到达服务器。
4、客户端的链路层,包通过链路层发送到路由器,通过邻居协议查找给定IP地址的MAC地址,然后发送ARP请求查找目的地址,如果得到回应后就可以使用ARP的请求应答交换的IP数据包现在就可以传输了,然后发送IP数据包到达服务器的地址。

9.IP地址与子网掩码相与得到网络号:

ip : 192.168.2.110
&
Submask : 255.255.255.0
网络号 :192.168.2 .0
主机号全为0的是网络号(例如:192.168.2.0),主机号全为1的为广播地址(192.168.2.255)

10.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响应。

11.RARP逆地址解析协议

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

12.TCP流量控制和拥塞控制
流量控制和拥塞控制的针对对象不同
流量控制是TCP连接的两端通过协商窗口值来控制,是网络中两个链接的点对点通信的对象,
拥塞控制是是控制数据流量过多导致网络拥塞,控制的对象是整个网络的通信,拥塞控制的算法为:即慢开始(Slow-start),拥塞避免(Congestion Avoidance)快重传(Fast Restrangsmit)和快回复(Fast Recovery)
接收端窗口(Reciver Window)又称通知窗口(Advertised Window),是接收端根据目前的接收缓存大小所许诺的最新窗口值,是来自接收端的流量控制。拥塞窗口cwnd(Congestion Window)是发送端根据自己估计的网络拥塞程度而设置的窗口值,是来自发送端的流量控制。

13.cookie和session的区别

  1. 两者都可以用来跟踪和保存客户端的状态信息
  2. Cookie是在服务器端创建,在客户端保存, session是在服务器端创建,在服务端保存
  3. Cookie中只能存放String类型,而session中可以存放Object类型。
  4. session是依赖于Cookie的,sessionid还是存放在Cookie中并保存在客户端的浏览器中

14.TCP粘包和拆包
出现粘包跟拆包的根本原因大于服务器每次接收的字节数是不确定的
粘包/拆包的解决之道
消息定长,如固定协议包长度是100字节,如果不够,包尾空格补位;
包尾增加换行符或者其它符号进行分割,如FTP协议;
将消息分为消息头和消息体,在消息头固定的位置增加一个字段,表示消息的总长度(或消息的长度),参照TCP协议;
使用更复杂的应用层协议;

15.tcp/ip协议和http协议
 关于TCP/IP和HTTP协议的关系,网络有一段比较容易理解的介绍:
  “我们在传输数据时,可以只使用(传输层)TCP/IP协议,但是那样的话,如果没有应用层,便无法识别数据内容.”
更复杂的应用层协议;

15.tcp/ip协议和http协议
 关于TCP/IP和HTTP协议的关系,网络有一段比较容易理解的介绍:
  “我们在传输数据时,可以只使用(传输层)TCP/IP协议,但是那样的话,如果没有应用层,便无法识别数据内容.”
  http://blog.csdn.net/Pk_zsq/article/details/6087367

你可能感兴趣的:(每日总结,网络)