网络面试总结

 1.TCP 和 UDP 的区别

a、TCP面向连接(如打电话要先拨号建立连接);UDP是无连接的,即发送数据之前不需要建立连接
b、TCP提供可靠的服务。也就是说,通过TCP连接传送的数据,无差错,不丢失,不重复,且按序到达;UDP尽最大努力交付,即不保证可靠交付
c、TCP面向字节流,实际上是TCP把数据看成一连串无结构的字节流;UDP是面向报文的
d.UDP没有拥塞控制,因此网络出现拥塞不会使源主机的发送速率降低(对实时应用很有用,如IP电话,实时视频会议等)

e.每一条TCP连接只能是点到点的;UDP支持一对一,一对多,多对一和多对多的交互通信
f.TCP首部开销20字节;UDP的首部开销小,只有8个字节
g.TCP的逻辑通信信道是全双工的可靠信道,UDP则是不可靠信道

2.地址栏解析URL的过程

(1)解析 URL,如果输入的协议或主机名不合法,浏览器会将地址栏中输入的文字传给默认的搜索引擎
(2)dns 查询
a.浏览器缓存查询 b.本地 host 查询 c.本地路由器或 ISP 的缓存 DNS 服务器 d.本地 DNS 服务器
(3)ARP 过程
(4)三次握手
(5)HTTP 服务器请求处理
(6)客户端渲染

3.网络模型

(1)七层模型:物理层,数据链路层,网络层,传输层,会话层,表示层,应用层。

应用层(数据):确定进程之间通信的性质以满足用户需要以及提供网络与用户应用
表示层(数据):主要解决拥护信息的语法表示问题,如加密解密
会话层(数据):提供包括访问验证和会话管理在内的建立和维护应用之间通信的机制,如服务器验证用户登录便是由会话层完成的
运输层(段):实现网络不同主机上用户进程之间的数据通信,可靠与不可靠的传输,传输层的错误检测,流量控制等 
网络层(包):提供逻辑地址(IP)、选路,数据从源端到目的端的传输
数据链路层(帧):将上层数据封装成帧,用MAC地址访问媒介,错误检测与修正
物理层(比特流):设备之间比特流的传输,物理接口,电气特性等

(2)四层模型:

1》应用层:向网络应用提供接口,并且对应用内的数据格式进行统一编码
2》传输层:负责两个主机之间的端对端的数据连接&传输&传输控制、错误恢复
3》网络层:选择合适的路由,职责就是正确的找着目的站
4》网络接口层:负责通过网络发送和接收IP数据报

4.三次握手和四次挥手

(1)三次握手

两个序号和三个标志位:

  (1)序号:seq序号,占32位,用来标识从TCP源端向目的端发送的字节流,发起方发送数据时对此进行标记。
  (2)确认序号:ack序号,占32位,只有ACK标志位为1时,确认序号字段才有效,ack=seq+1。
  (3)标志位:共6个,即URG、ACK、PSH、RST、SYN、FIN等,具体含义如下:
  (A)URG:紧急指针(urgent pointer)有效。
  (B)ACK:确认序号有效。
  (C)PSH:接收方应该尽快将这个报文交给应用层。
  (D)RST:重置连接。
  (E)SYN:发起一个新连接。
  (F)FIN:释放一个连接。

 需要注意的是:
  (A)不要将确认序号ack与标志位中的ACK搞混了。
  (B)确认方ack=发起方req+1,两端配对。

(2)四次挥手

5.为什么要3次握手,4次挥手

1. 握手:防止已过期的连接请求报文突然又传送到服务器,因而产生错误
2. 挥手:确保数据能够完成传输,但关闭连接时,当收到对方的FIN报文通知时,它仅仅表示对方没有数据发送给你了;但未必你所有的数据都全部发送给对方了,所以你可以未必会马上会关闭SOCKET,也即你可能还需要发送一些数据给对方之后,再发送FIN报文给对方来表示你同意现在可以关闭连接了,所以它这里的ACK报文和FIN报文多数情况下都是分开发送的。

6.get 和 post 的区别

1.GET后退按钮/刷新无害,POST数据会被重新提交(浏览器应该告知用户数据会被重新提交)。
2. GET书签可收藏,POST为书签不可收藏。
3. GET能被缓存,POST不能缓存 。
4.GET编码类型application/x-www-form-url,POST编码类型encodedapplication/x-www-form-urlencoded 或 multipart/form-data。为二进制数据使用多重编码。
5. GET历史参数保留在浏览器历史中。POST参数不会保存在浏览器历史中。
6. GET对数据长度有限制,当发送数据时,GET 方法向 URL 添加数据;URL 的长度是受限制的(URL 的最大长度是 2048 个字符)。POST无限制。
7. GET只允许 ASCII 字符。POST没有限制。也允许二进制数据。
与 POST 相比,GET 的安全性较差,因为所发送的数据是 URL 的一部分。在发送密码或其他敏感信息时绝不要使用 GET !POST 比 GET 更安全,因为参数不会被保存在浏览器历史或 web 服务器日志中。
8.GET的数据在 URL 中对所有人都是可见的。POST的数据不会显示在 URL 中。

9.Get是从服务器上获取数据,Post是向服务器传送数据。

7.cookie 和 session 的区别

(1)cookie存储在客户端,session 存储在服务器,以散列表的形式存在
(2)sessionID 保存在客户端

8.HTTP与HTTPS的相同和异同点

1. HTTPS需要用到CA申请证书
2. HTTP是超文本传输协议,信息是明文的;HTTPS则是具有安全性的SSL加密传输协议
3. HTTP是80,HTTPS是443
4. HTTP的连接很简单,是无状态的,HTTPS是HTTP+SSL协议构建的,可进行加密传输、身份认证的网络协议,比HTTP协议安全

9.IP地址的分类,如何划分的,及会计算各类地址支持的主机数

1. A类地址:首位为0,1.0.0.1~~126.255.255.254;主机号24位
2. B类地址:首位为10,128.0.0.1~~191.255.255.254;主机号16位
3. C类地址:首位为110,192.0.0.1~~223.255.255.254;主机号8位
4. D类地址(多播地址,也叫做组播地址):首位为1110,224.0.0.1~~239.255.255.2545. E类地址:此类地址是保留地址,首位为11110,240.0.0.1~~254.255.255.254

10.HTTP消息结构

(1)客户端请求消息

客户端发送一个HTTP请求到服务器的请求消息包括以下格式:请求行(request line)、请求头部(header)、空行和请求数据四个部分组成,下图给出了请求报文的一般格式。

(2)服务器响应消息

HTTP响应也由四个部分组成,分别是:状态行、消息报头、空行和响应正文。

原文地址:https://www.cnblogs.com/liuwanqiu/p/8494546.html