网络笔试面试题整理

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

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

物理层:中继器、集线路、网关 (媒体传输比特Bit)

数据链路层:PPP、VLAN、MAC (把比特组装成帧和点到点的传输Frame)

网络层:IP、ICMP、ARP、OSPF、路由器 (负责数据包从源到宿的传递 Packet)

传输层:TCP、UDP (提供端到端的可靠报文传输和错误恢复 段Segment)

应用层:FTP、DNS、Telnet、HTTP、WWW

TCP/IP分层:网络接口层、网际层、运输层、应用层

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

2、IP地址常见笔试题

IP地址总共分为5类,A,B,C,D,E

IP地址=网络地址+主机地址,一共32位,分位4个8位二进制数

A类:0.0.0.0-127.0.0.0    子网掩码255.0.0.0      00000000 + 主机号

B类:128.0.0.0-191.255.0.0  子网掩码255.255.0.0  10000000 00000000 + 主机号

C类:192.0.0.0-223.255.255.0 子网掩码255.255.255.0 11000000 00000000 + 主机号

D类 11100000 00000000 ...

E类 11110000 00000000...

网络号的位数直接决定了可以分配的网络数,主机号的位数决定了网络中的最大主机数

子网掩码将某个IP地址划分为网络地址和主机地址两部分

1)利用子网数来计算子网掩码

将B类地址 172.16.0.0划分成30个网络

离30最近的2的倍数为32,2的5次方

即172.16.00000000.0 - 172.16.11111000.0,

将B类地址的子网掩码255.255.0.0主机地址部分的前5位变成1,得到子网掩码255.255.248.0

2)利用主机数来计算子网掩码

将B类地址172.16.0.0划分成若干个子网络,每个子网络500个主机

把500转换成二进制表示111110100,有9位,则主机部分要有9位,

则将子网掩码255.255.255.255从后向前的9位变成0,得到子网掩码255.255.254.0

3、ARP是地址解析协议,简单语言解释一下工作原理

1)首先,每个主机都会在自己的ARP缓冲区建立一个ARP列表,表示IP地址和MAC地址之间的对应关系

2)当源主机要发送数据时,首先检查ARP列表中是否有对应的IP地址的目的主机的MAC地址,如果有,则直接发送数据;

如果没有,就向本网络的所有主机发送ARP请求数据包,内容未:源主机IP,源主机MAC,目的主机IP

3)当本网络的所有主机收到该ARP数据包,首先检查数据包中的IP地址是否为自己的IP,如果是,则首先将源主机的IP、MAC地址写入自己的ARP列表,然后将自己的MAC地址写入ARP响应包中,如果不是则忽略。

4)源主机收到ARP响应包后,将目的主机IP、MAC写入ARP列表,并发送数据

注意,源主机广播发送ARP请求,目的主机单播发送ARP响应

4、TCP三次握手、四次挥手的过程

1)三次握手

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

第二次握手:服务端收到syn包,确认客户端的syn,发送ack包(ack = x+1),同时发送syn包(syn = y),即SYN+ACK包,进入SYN_RECV状态

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

为什么不能使用两次握手?

为了防止 已失效的链接请求报文突然又传送到了服务端,因而产生错误。

假设主机A第一次发送连接请求,发送的syn包经过网络延迟到主机B,主机B以为主机A发起了新的连接,同意连接,回复ack包,但是此时主机A根本不会理会,因为默认之前的连接请求已经失效。于是主机B一直在等待主机A发送数据,导致主机B的资源被浪费。

2)四次挥手

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

第二次挥手:Server方收到FIN后,回复一个ACK给对方,确认序号为收到序号+1,进入CLOSE_WAIT状态

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

第四次挥手:Client收到ACK后,进入FIN_WAIT_2状态,收到FIN后,进入TIME_WAIT状态,回复一个ACK,确认序号为收到序号+1,Server进入CLOSED状态,完成四次挥手

5、TCP和UDP的区别

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

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

TCP有拥塞控制机制;UDP没有拥塞控制,适合媒体通信

TCP注重数据安全性,UDP的传输速度快,因为不需要连接等待

6、DNS域名系统,简单描述其工作原理

应用层协议,用户查询域名对应的IP地址,在域名访问任何网络资源时都需要先进行域名解析

7、在浏览器输入www.baidu.com的全过程

1)域名解析,通过DNS获取服务的IP地址

2)tcp三次握手建立连接

3)建立连接后发送http请求

4)服务器端响应http请求

5)浏览器得到请求的内容,解析网页,通过对页面进行渲染,展示在用户面前

8、对HTTP协议的理解

超文本传输协议是一种无状态、应用层的协议,基于TCP协议传输数据

支持客户/服务器模式,每次完整交互都包含http请求和http响应

Get和Post请求的区别

GET一般用来从服务器上获取资源,POST一般用来更新服务器上的资源

POST的安全性要比GET的安全性高

1)Get请求

Get方式URL提交数据,数据在URL中可以看到,提交的数据最多能有1024字节

数据会附在URL之后,即将请求数据放置在HTTP报文的 请求头 中,以?分割URL和传输数据,参数之间以&相连

2)Post请求

POST请求会把提交的数据则放置在是HTTP请求报文的 请求体 中,提交的数据没有字节的限制,不允许缓存

9、客户端不断进行请求链接会怎样?DDos(Distributed Denial of Service)攻击?

  服务器端会为每个请求创建一个链接,并向其发送确认报文,然后等待客户端进行确认

1)、DDos 攻击

  • 客户端向服务端发送请求链接数据包
  • 服务端向客户端发送确认数据包
  • 客户端不向服务端发送确认数据包,服务器一直等待来自客户端的确认

2)、DDos 预防 ( 没有彻底根治的办法,除非不使用TCP )

  • 限制同时打开SYN半链接的数目
  • 缩短SYN半链接的Time out 时间
  • 关闭不必要的服务

10、Http和Https的区别

Https协议在http协议的基础上加了SSL(Secure Socket Layer)层,是基于SSL的超文本传输协议

http协议传输的明文,https传输的是加密后的信息

http的端口是80,https的端口是443

http的连接很简单,是无状态的;HTTPS协议进行加密传输、身份认证的网络协议,比http协议安全。

https需要申请ca证书,往往是付费的,而http是免费的

11、TCP协议如何来保证传输的可靠性

猜你喜欢

转载自blog.csdn.net/ljh0302/article/details/81183714