1.linux的常用命令,十个以上
- cd:切换目录,..(两个点)代表上级目录,~:home目录
- head/tail -n 10 /etc/profile :查看/etc/profile 的前、后10行内容
- pwd:查看当前路径
- ls -al :列出当前目录中的所有目录和文件,包含隐藏文件
- mkdir/rmdir:创建文件或目录/删除空目录
- touch:创建空文件
- cp:复制文件或目录
- chmod:修改文件或目录的权限 ,其中rwx:r可读:4 ,w可写:2,x可执行:1,第一段的三位:代表拥有者权限,第二段的三位:拥有者所在组的组员的权限,第三段的三位:代表其他用户的权限。
- find:在文件系统中查找文件
- rm -rf 文件名:递归删除文件或目录,且不询问
- cat:查看文件内容
- tar -zcvf 压缩文件名:压缩文件
- ps -ef:显示当前正在运行的进程
- top:显示系统资源的使用情况
- kill -9 pid:强制终止一个进程
- netstat -anp:显示网络连接状态
- ifconfig:显示网络接口配置信息,ip地址
- ping IP:测试网络连接
- df -h:显示磁盘空间
- clear:清屏
- su 用户名:切换用户名
- | :管道符,左侧的命令的结果查找右侧的字符
- >> :将左侧的命令结果输出到右侧的文件中
2.HTTP的常见状态码
一般分为5大类:
- 1xx:传递信息,服务器收到请求,需要请求者继续执行操作;
- 2xx:请求被服务器成功接收并处理
- 200:客户请求成功;
- 201:请求成功并创建了新资源;
- 3xx:重定向,需要客户端进一步操作来完成请求
- 301:永久重定向,说明请求的资源被永久的移动到新的URL,返回信息会包括新的URL;
- 302:临时重定向,资源只是临时移动,客户端应继续使用原有的URL;
- 304:资源自上次请求后未发生变化;
- 4xx:客户端出现错误,导致请求失败
- 400:客户端请求的语法错误,服务器无法理解;
- 401:当前请求需要用户身份验证;
- 403:服务器已经理解请求,但是拒绝执行它;
- 404:请求资源不存在,服务器无法根据客户端请求找到资源;
- 5xx:服务器发生错误,服务器在处理请求的过程中发生了错误
- 500:服务器内部错误,无法完成请求;
- 501:服务器不支持该请求方法,无法完成请求;
- 502:错误网关,从上游服务器收到无效响应;
- 503:由于超载或者系统维护,服务器无法处理客户端的请求;
3.地址栏输入URL后发生了什么?
会经过DNS解析、TCP连接、HTTP请求、响应数据接收、页面渲染、TCP连接断开等过程。
主要经历:
1.URL解析:浏览器会将用户输入的URL解析为IP地址,首先查询本地HOST,看是否有对应的IP地址,没有就通过DNS服务器查询得到目标服务器的IP地址;
2.建立TCP连接:浏览器向服务器发送请求之前,需要先与服务器建立TCP连接,进行三次握手,确保双方都能够正常通信;
3.发送HTTP请求:浏览器向服务器发送HTTP请求,包括请求行、请求头和请求体等信息,接收响应数据,服务器接收到请求之后,回访响应数据,包括响应行(状态码)、响应头和响应体等信息。
3.渲染页面:当浏览器接收到响应数据后,或根据页面内容,CSS样式和js代码等渲染出可视化页面。
4.断开TCP连接:当浏览器完成页面渲染后,会断开与服务器的TCP连接,释放资源。
4.tcp三次握手,四次挥手的过程
三次握手:本质就是为了保证在不可靠的网络链路中,建立起可靠的连接。
①当客户端向服务端发起连接的时候,会先发syn包连接请求数据,进行询问,能否建立连接;
②如果服务端同意连接,则回复syn+ack包;
③客户端收到之后回复ack包,建立连接。
为什么不是两次握手?
服务端回复完syn+ack之后就建立连接,是为了防止因为已失效的请求报文突然又传到服务端引起错误。
假设采用两次握手建立连接:
-
客户端向服务端发送了一个syn包,来请求建立连接,因为某些未知的原因并没有到达服务器,在中间某个网络节点产生了滞留,为了建立连接,客户端会重发syn包,这次的数据包正常送达,服务端回复syn+ack之后建立连接;
-
第一包数据阻塞的网络节点突然恢复,第一包syn包又送达服务端,这时服务端会误认为是客户端又发起了一个新的连接,从而在两次握手之后,进入等待数据状态,服务端认为是两个连接,而客户端认为是一个而连接,造成状态不一致;
-
如果在三次握手的情况下,服务端收不到最后的ack包,不会认为连接成功。
四次挥手:处于连接状态的客户端和服务端,都可以发起关闭连接请求,这就需要四次挥手来进行连接关闭。
①第一次挥手:假设客户端主动发起连接关闭请求,需要向服务端发起一包FIN包,表示要关闭连接,自己进入终止等待1 状态;
②第二次挥手:服务端收到FIN包之后,发送ACK包,表示自己进入了关闭等待状态,客户端进行终止等待2状态;
③第三次挥手:这时客户端还可以发送未发送的数据,客户端还可以接收数据,待客户端发送完数据之后,服务端发送FIN包,进入最后确认状态;
④第四次挥手:客户端收到之后回复ACK包,进入超时等待状态,经过超时时间后关闭连接,而服务端收到ACK包后,立即关闭连接。
为什么客户端需要等待超时时间?为了保证服务端已收到ACK包。保证在不可靠的网络链路中,进行可靠的连接断开确认。
-
假设客户端发送完最后一包ack后就释放了连接,一旦ack包在网络中丢失,服务端将一直停留在最后确认状态;
-
假设客户端发送完最后一包ack后,等待一段时间,这时服务端因为没有收到ack包,会重发fin包,客户端会响应这个fin包,重发ack包并刷新超时时间;
为什么要四次挥手?
-
由于tcp的半关闭特性,任何一方都可以在数据传送结束后,发出连接关闭通知,待对方确认后进入半关闭状态。当另一方也没有数据再发送时,则发出连接关闭的通知,对方确认后就完全关闭了tcp连接。
-
两次挥手就可以释放一端到另一端的tcp连接,完全释放连接一共需要四次挥手。
5.HTTPS和HTTP的区别?
介绍 :
http:超文本传输协议,被用于web浏览器和网站服务器之间传递信息。
https:安全套接字层超文本传输协议。
主要作用:
①对数据加密,建立信息安全通道保证数据传输的安全。②对网站服务器进行真实身份认证。
两者主要区别:
①安全:http是明文传输,不提供任何方式的数据加密,不适合传输一些敏感信息。而https属于“加密传输协议”,在http和TCP之间添加了一个安全协议层(SSL/TLS),来对服务器的身份进行验证并为浏览器和服务器之间的通信加密。https比http更安全。
②加密与证书:http协议使用明文传输数据,不进行加密处理,不需要向服务端申请证书;https协议在TCP三次握手阶段之后,需要向认证机构(CA)申请证书,需要费用,协商加密使用的对称加密密钥,浏览器安装对应的证书。
③端口:http的端口是80,https的端口是443。
④http基于应用层,https基于传输层。
https实现原理:
①客服端使用https的url访问服务器端,请求与服务器建立连接;
②服务器端接收到客户端的请求后,将公钥证书返回给客户端;
③客户端验证公钥证书是否有效,无效显示警告信息,有效则客户端利用伪随机数生成会话密钥,再用服务器端传过来的公钥加密会话密钥,发送给服务器端;
④服务器端利用自己的私钥解密,得到会话密钥,再用会话密钥加密明文内容A发送给了客户端;
⑤客户端使用会话密钥解密发送过来的秘文。
⑥客户端再次发起https请求,使用会话密钥加密请求的内容B,然后服务端使用会话密钥解密。 这样都收到对称密钥以后SSL层连接建立成功。
http的结构:
一个http请求由请求行、请求头、空行、请求数据四部分组成
请求行:请求方法(get/post/head/delete/options/put/trace/connect),请求url,http协议版本号
请求头:user-agent、accept、content-type、host
标签:02,测开,八股文,请求,http,服务器,连接,服务端,客户端 From: https://www.cnblogs.com/liu-myu/p/17428408.html