网络面试题
秋招抖音一面:
HTTPS过程。
.http请求的全过程,顺带着问了http报文格式(字节)
计算机网络体系结构
[1. 五层协议](https://cyc2018.github.io/CS-Notes/#/notes/计算机网络 - 概述?id=_1-五层协议)
应用层 :是用户与网络的界面,为特定应用程序提供数据传输服务,例如 HTTP、DNS 等协议。数据单位为报文。
表示层:主要用于处理2个通信系统中交换信息的表示方式(不同机器采用的编码和表示方法不同)。数据压缩,加密解密也是它的功能。
会话层:允许不同主机上各进程之间的会话
传输层 :负责两个进程之间的通信。运输层包括两种协议: TCP,提供面向连接、可靠的数据传输服务,数据单位为报文段;用户数据报协议 UDP,提供无连接、尽最大努力的数据传输服务,数据单位为用户数据报。TCP 主要提供完整性服务,UDP 主要提供及时性服务。
网络层 :为不同主机提供通信服务。网络层把传输层传递下来的报文段或者用户数据报封装成分组,不提供有序到达。
数据链路层 :数据链路层是对物理层传输原始比特流的功能的加强,将物理层提供的可能出错的物理连接改造成为逻辑上无差错的数据链路,使之对网络层表现为一无差错的线路。
物理层 :考虑的是怎样在传输媒体上传输比特流,而不是指具体的传输媒体。物理层的作用是尽可能屏蔽传输媒体和通信手段的差异,使数据链路层感觉不到这些差异。
1.1七层模型,每一层是干什么的
2.DNS解析过程,如果服务器ip地址改变了,客户端怎么知道呢
3.https和http的区别
4.tcp/ip
5.tcp 三次握手和四次挥手
TCP的三次握手
假设 A 为客户端,B 为服务器端。
- 首先 B 处于 LISTEN(监听)状态,等待客户的连接请求。
- A 向 B 发送连接请求报文,SYN=1,ACK=0,选择一个初始的序号 x。
- B 收到连接请求报文,如果同意建立连接,则向 A 发送连接确认报文,SYN=1,ACK=1,确认号为 x+1,同时也选择一个初始的序号 y。
- A 收到 B 的连接确认报文后,还要向 B 发出确认,确认号为 y+1,序号为 x+1。
- B 收到 A 的确认后,连接建立。
三次握手的原因
第三次握手是为了防止失效的连接请求到达服务器,让服务器错误打开连接。
客户端发送的连接请求如果在网络中滞留,那么就会隔很长一段时间才能收到服务器端发回的连接确认。客户端等待一个超时重传时间之后,就会重新请求连接。但是这个滞留的连接请求最后还是会到达服务器,如果不进行三次握手,那么服务器就会打开两个连接。
假设是2次的话,服务端发出确认就建立连接,并一直等待客户端发送数据,服务端的资源就浪费了。
如果有第三次握手,客户端会忽略服务器之后发送的对滞留连接请求的连接确认,不进行第三次握手,因此就不会再次打开连接。
四次挥手的原因
客户端发送了 FIN 连接释放报文之后,服务器收到了这个报文,就进入了 CLOSE-WAIT 状态。这个状态是为了让服务器端发送还未传送完毕的数据,传送完毕之后,服务器会发送 FIN 连接释放报文。
TIME_WAIT
客户端接收到服务器端的 FIN 报文后进入此状态,此时并不是直接进入 CLOSED 状态,还需要等待一个时间计时器设置的时间 2MSL。这么做有两个理由:
- 确保最后一个确认报文能够到达。如果 B 没收到 A 发送来的确认报文,那么就会重新发送连接释放请求报文,A 等待一段时间就是为了处理这种情况的发生。
- 等待一段时间是为了让本连接持续时间内所产生的所有报文都从网络中消失,使得下一个新的连接不会出现旧的连接请求报文。
6.get和post区别
- GET 用于获取资源,而 POST 用于传输实体主体。
- GET比POST更不安全,因为参数直接暴露在URL上,所以不能用来传递敏感信息POST放在Request body中。
GET在浏览器回退时是无害的,而POST会再次提交请求。
GET产生的URL地址可以被Bookmark,而POST不可以。
GET请求会被浏览器主动cache,而POST不会,除非手动设置。
GET请求只能进行url编码,而POST支持多种编码方式。
GET请求参数会被完整保留在浏览器历史记录里,而POST中的参数不会被保留。
GET请求在URL中传送的参数是有长度限制的,而POST么有。
对参数的数据类型,GET只接受ASCII字符,而POST没有限制。
GET参数通过URL传递,
7.http
7.1http状态码
2020-08-03 16:57:29 504遇到, 技术部客户端网站打不开
8.tcp和udp
本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!