计算机网络面试题
因为马上要开始找工作,所有写一些面试题笔记
-
Q1:OSI七层模型和TCP/IP四层模型?
-
Q2:TCP和UDP的区别?
-
Q3:TCP的三次握手和四次挥手?
-
Q4:HTTP和HTTPS有什么区别?
-
Q5:Session和Cookie?
-
Q6:Get和Post的区别?
-
Q7:常用http状态码?
Q1:OSI七层模型和TCP/IP四层模型
OSI七层模型:物理层。数据链路层,网络层,传输层,会话层,表示层,应用层
TCP/IP四层模型:数据链路层,网络层,传输层,应用层
Q2:TCP和UDP的区别
TCP:是一种面向连接的、可靠的、基于字节流的传输层通信协议。
UDP:是一种无连接的且不对传送数据包进行可靠性保证的传输层协议,UDP传输的可靠性由应用层负责。
Q3:TCP的三次握手和四次挥手
三次握手:
图片来自百度
TCP是因特网中的传输层协议,使用三次握手协议建立连接。
(一次)
1.客户端发送SYN(SEQ=x)报文给服务器端,进入SYN_SEND状态
(两次)
2.服务器收到SYN报文,回应一个SYN(SEQ=y) ACK(ACK=x+1),进入SYN_RECV状态
(三次)
3.客户端收到服务器的SYN报文,回应一个ACK(ACK=y+1)报文,进入Established状态
这种建立连接的方法可以防止产生错误的连接,TCP使用的流量控制协议是可变大小的滑动窗口协议。
四次挥手
对于TCP来说,建立一个连接需要三次握手,而关闭连接要经过四次握手,这是因为TCP的半关闭造成的
(一次)
1.某端主动关闭,发送一个FIN(一次)
2.接收到这个FIN,处于被动关闭状态,发送一个ACK(二次)
3.过一段时间,数据传输完毕,发送一个FIN(三次)
4.接收到FIN,发送一个ACK回去。(四次)
Q4:HTTP和HTTPS有什么区别?
简单地说HTTPS是一个安全的,有加密机制的协议,在HTTP的基础上
Q5:Session和Cookie?
Session和Cookie都是用来进行身份识别的
- Cookie
Cookie是保存在客户端的一个小数据块,包含了用户信息。当客户端向服务器发送请求,服务器会向客户端浏览器发送一个Cookie,客户端会把Cookie存储起来,当下次客户端再次请求服务器时,会将这个Cookie调出,服务器通过这个Cookie识别身份
- Session
Session是通过Cookie实现的,为每个访客创建一个独一的id (UID),并基于这个UID来存储变量。UID存储在cookie 中,或者通过URL进行传导
- Token
客户端在浏览器第一次访问服务端时,服务端生成的一串字符串作为Token发给客户端浏览器,下次浏览器在访问服务端时携带token即可无需验证用户名和密码,省下来大量的资源开销。
Q6:GET和POST的区别
- 请求参数:GET 把参数包含在 URL 中,用&连接起来;POST 通过 request body 传递参数。
- 请求缓存:GET请求会被主动Cache,而POST请求不会,除非手动设置。
- 收藏为书签:GET请求支持收藏为书签,POST请求不支持。
- 安全性:POST比GET安全,GET请求在浏览器回退时是无害的,而POST会再次请求。
- 历史记录:GET请求参数会被完整保留在浏览历史记录里,而POST中的参数不会被保留。
- 编码方式:GET请求只能进行url编码,而POST支持多种编码方式。
- 参数数据类型:GET只接受ASCII字符,而POST没有限制数据类型。
- 数据包: GET产生一个TCP数据包;POST可能产生两个TCP数据包。
Q7:常用的HTTP状态码
-
1XX - 100 Continue:表示正常,客户端可以继续发送请求 - 101 Switching Protocols:切换协议,服务器根据客户端的请求切换协议。 2XX - 200 OK:请求成功 - 201 Created:已创建,表示成功请求并创建了新的资源 - 202 Accepted:已接受,已接受请求,但未处理完成。 - 204 No Content:无内容,服务器成功处理,但未返回内容。 - 205 Reset Content:重置内容,服务器处理成功,客户端应重置文档视图。 - 206 Partial Content:表示客户端进行了范围请求,响应报文应包含Content-Range指定范围的实体内容 3XX - 301 Moved Permanently:永久性重定向 - 302 Found:临时重定向 - 303 See Other:和301功能类似,但要求客户端采用get方法获取资源 - 304 Not Modified:所请求的资源未修改,服务器返回此状态码时,不会返回任何资源。 - 305 Use Proxy:所请求的资源必须通过代理访问 - 307 Temporary Redirect: 临时重定向,与302类似,要求使用get请求重定向。 4XX - 400 Bad Request:客户端请求的语法错误,服务器无法理解。 - 401 Unauthorized:表示发送的请求需要有认证信息。 - 403 Forbidden:服务器理解用户的请求,但是拒绝执行该请求 - 404 Not Found:服务器无法根据客户端的请求找到资源。 - 405 Method Not Allowed:客户端请求中的方法被禁止 - 406 Not Acceptable:服务器无法根据客户端请求的内容特性完成请求 - 408 Request Time-out:服务器等待客户端发送的请求时间过长,超时 5XX - 500 Internal Server Error:服务器内部错误,无法完成请求 - 501 Not Implemented:服务器不支持请求的功能,无法完成请求
后续有内容再添加