叮叮叮~~~~网络面试题(一)来了☺

1.TCP和UDP的区别

TCP和UDP是OSI模型中的运输层中的协议

  1. 是否面向连接:TCP面向连接,UDP面向非连接即发送数据前不需要建立链接
  2. 可靠性:TCP提供可靠的服务(数据传输),UDP无法保证
  3. 有序性:TCP有序,UDP无序
  4. 速度:TCP数据传输慢,UDP数据传输快

2.端口对应的服务

  • 80 HTTP
  • 443 HTTPS
  • 21 FTP
  • 22 SSH
  • 3306 MySQL
  • 6379 Redis

3.几种常见的HTTP状态码

  • 1XX:客户端发起请求,服务器拿到了,正在处理
  • 2XX:正常
  • 3XX:重定向
  • 4XX:客户端错误
  • 5XX:服务器错误
  • 503: 服务器暂时处于超负载或正在进行停机维护,无法处理请求

4.post和get的请求区别

  1. get请求的数据会附在URL之后,以?分割URL和传输数据,参数之间以&相连,post把提交的数据则放置在是HTTP包的包体中。
  2. get的长度受限于url的长度,而url的长度限制是特定的浏览器和服务器设置的,理论上get的长度可以无限长。
  3. get是没有大小限制的,HTTP协议规范也没有进行大小限制,起限制作用的是服务器的处理程序的处理能力。
  4. get限制form表单的数据集的值必须为ASCII字符;而post支持整个ISO10646字符集。
  5. get执行效率却比post方法好。get是form提交的默认方法。

5.HTTP和HTTPS的区别:

  1. HTTP 的 URL 以 http:// 开头,而 HTTPS 的 URL 以 https:// 开头
  2. HTTP 是不安全的,而 HTTPS 是安全的
  3. HTTP 标准端口是 80 ,而 HTTPS 的标准端口是 443
  4. 在 OSI 网络模型中,HTTPS的加密是在传输层完成的,因为SSL是位于传输层的,TLS的前身是SSL,所以同理
  5. HTTP无需认证证书,而https需要认证证书

6.TCP的三次握手和四次挥手

1.三次握手
在这里插入图片描述

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

  • 第二次握手:服务器受到SYN包,必须确认客户的SYN(ack=x+1),同时自己也发送一个SYN包(seq=y),即SYN+ACK包。此时服务器进入SYN_RECV状态

  • 第三次握手:客户端受到SYN+ACK包,向服务器发送确认包ACK(ack=y+1),此包发送完毕,客户端和服务器端进入ESTABLISHED状态,完成三次握手
    2.四次挥手
    在这里插入图片描述

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

  • 第二次挥手:Server收到FIN后,发送一个ACK给Client,确认序号为收到序号+1,Server进入CLOSE_WAIT状态

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

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

7.为什么需要三次握手才能建立连接?

为了初始化Sequence Number的初始值

8.为什么需要四次挥手才能断开连接?

因为服务器与客户端是全双工,即发送方和接收方都需要FIN报文和ACK报文