1.说说HTTP常用的状态码及其含义?
日常开发中的状态码:
状态码 |
含义 |
101 |
切换请求协议 |
200 |
请求成功 |
301 |
永久性重定向,会缓存 |
302 |
临时重定向,不会缓存 |
400 |
客户端请求的语法错误 |
403 |
服务器禁止访问,权限有关 |
404 |
服务器无法根据客户端的请求找的资源 |
500 |
服务端错误 |
2.HTTP常用的请求方式,区别和用途?
请求方式 |
用途 |
GET |
对服务器资源获取的简单请求 |
POST |
用于发送包含提交数据的请求 |
PUT |
向服务器提交数据,以修改数据 |
HEAD |
请求页面的首部,获取资源的元信息 |
DELETE |
删除服务器上的某些资源 |
CONNECT |
用于ssl隧道的基于代理的请求 |
OPTIONS |
返回所有可用的方法,常用于跨域 |
TRACE |
追踪请求-响应的传输路径 |
3.请简单说你了解的端口及对应的服务
端口 |
服务 |
21 |
FTP(文件传输协议) |
22 |
SSH |
23 |
telnet服务 |
25 |
SMTP(简单邮件传输协议) |
53 |
DNS域名服务器 |
80 |
HTTP超文本传输协议 |
110 |
POP3邮件协议3 |
4.计算机网络体系结构
5.ISO七层模型
应用层:网络服务与最终用户的一个接口,常见的协议有:HTTP FTP SMTP SNMP DNS
表示层:数据的表示、安全、压缩。确保一个系统的应用层所发送的信息可以被另一个系统的应用层读取。
会话层:建立、管理、终止会话,对应主机进程,指本地主机与远程主机正在进行的会话。
传输层:定义传输数据的协议端口号,以及流控和差错校验,协议有TCP,UDP。
网络层:进行逻辑地址寻址,实现不同网络之间的路径选择,协议有ICMP,IGMP,IP等
数据链路层:在物理层提供比特流服务的基础上,建立相邻结点之间的数据链路。
物理层:建立、维护、断开物理连接。
6.从浏览器地址栏URL到显示主页的过程
1.DNS解析,查找域名对应的IP地址
2.与服务器通过三次握手,建立TCP连接
3.向服务器发送HTTP请求
4.服务器处理请求,返回网页内容
5.浏览器解析并渲染页面
6.TCP四次挥手 ,连接结束
7.交互过程中如果数据传送完了,还不想断开连接怎么办,怎么维持?
在HTTP中响应体的connection字段指定为Keep-alive即可
8.http如何实现长连接?在什么时候会超时?
http的长连接实质是指tcp的长连接。至于什么时候超时,我们记住这几个参数如tcp_keepalive_time、tcp_keepalive_probes就好
在什么时候会超时?
http一般会有httpd守护进程,里面可以设置keep-alive timeout,当tcp连接闲置超过这个时间就会关闭,也可以在HTTP的header里面设置超时时间
tcp的keep-alive包含三个参数,支持在系统内核的net.ipv4里面设置;当tcp连接之后,闲置了tcp_keepalive_time,则会发生侦测包,如果没有收到对方的ACK,那么会每隔tcp_keepalive_intvl再发一次,直到发送了tcp_keepalive_probes,就会丢弃该连接。
9.http和https有什么区别
http,即超文本传输协议,是一个基于tcp/ip通信协议来传递明文数据的协议。http会存在这几个问题:
请求信息是明文传输,容易被窃听截取。
没有验证对方身份,存在被冒充的风险。
数据的完整性未校验,容易被中间人篡改。
所以为了解决这些问题,就有了https。
https=http+ssl,可以理解https是带着ssl的http。
http |
https |
|
安全性 |
不安全 |
安全 |
默认端口 |
80 |
443 |
资源消耗 |
较少 |
较多 |
是否需要证书 |
不需要 |
需要 |
报文是否加密 |
明文 |
密文 |
10.什么是数字签名?什么是数字证书?
数字证书是指在互联网通讯中标志通讯各方身份信息的一个数字认证,人们可以在网上用它来识别对方的身份。它的出现,是为了避免身份被篡改冒充的。比如Https的数字证书,就是为了避免公钥被中间人冒充篡改。
数字证书构成:
- 公钥和个人等信息,经过Hash摘要算法加密,形成消息摘要;将消息摘要拿到拥有公信力的认证中心(CA),用它的私钥对消息摘要加密,形成数字签名。
- 公钥和个人信息、数字签名共同构成数字证书。
11.说说DNS的解析过程
DNS,域名解析系统,是Internet上作为域名与IP相互映射的一个分布式数据库。它的作用很明确,就是可以根据域名查出对应的IP地址。
9.说下HTTP/1.0,1.1,2.0的区别
HTTP/1.0
默认使用短连接,每次请求都需要建立一个TCP连接。它可以设置connection:keep-alive,强制开启长连接。
HTTP/1.1
引入了持久连接,即TCP连接默认不关闭,可以被多个请求复用。
分块传输编码,即服务端没产生一块数据,就发送一块,用“流模式”取代“缓存模式”。
管道机制,即在同一个TCP连接里面,客户端可以同时发送多个请求。
HTTP/2.0
二进制协议,1.1版本的头信息是文本(ASCII),数据体可以是文本或者二进制;2.0中,头信息和数据体都是二进制。
完全多路复用,在一个连接里,客户端和浏览器都可以同时发送多个请求或回应,而且不用按照顺序一一对应。
报头压缩,HTTP协议不带有状态,每次请求都必须附上所有信息。
服务端推送,允许服务器未经请求,主动向客户端发送资源。
10.在交互过程中如果数据传送完了,还不想断开连接怎么办,怎么维持?
在HTTP中相应体的connection字段指定为keep-alive即可。
11.每一层网络协议有哪些?
应用层:HTTP(超文本传输协议),FTP(文本传输协议),SMTP(简单邮件传输协议),DNS(域名系统),SSH(安全外壳协议),DHCP(动态主机配置协议),TELNET(远程登录协议)
传输层:TCP(传输控制协议),UDP(用户数据报文协议)
网络层:IP(网际协议),ARP(地址转换协议),RARP(反向地址转换协议),ICMP(Internet控制报文协议)
数据链路层:ARQ(自动重传需求协议),CSMA(停止等待协议),PPP(点对点协议)
物理层:HUB,网线,中继器
12.说说websocket与socket的区别
socket就是IP地址+端口+协议
websocket是一个持久化的协议,伴随H5而出的协议,用来解决http不支持持久化连接的问题
socket一个是网编编程的标准接口,而websocket则是应用层通信协议。
13.IP地址有哪些分类?
IP地址=网络号+主机号
网络号:标志主机所连接的网络地址表示属于互联网的哪一个网络
主机号:标志主机地址表示其属于该网络中的哪一台主机
IP地址分为A,B,C,D,E五大类:
A类地址(1~126):以0开头,网络号占前8位,主机号占后面24位
B类地址(128~191):以10开头,网络号占前16位,主机号占后面16位
C类地址(192~223):以110开头,网络号占前24位,主机号占后面8位
D类地址(224~239):以1110开头,保留位多播地址
E类地址(240~255):以11110开头,保留位为将来使用
14.有了IP地址为什么还要用MAC地址?
一台计算机常用的就是IP地址和MAC地址,但计算机的IP地址可由用户自行更改,管理起来就相对困难,而mac地址不可更改,所以一般把mac地址和IP地址组合起来使用。
15.详细介绍一下TCP的三次握手机制
- 第一次握手(SYN=1, seq=x),发送完毕后,客户端就进入SYN_SEND状态
- 第二次握手(SYN=1, ACK=1, seq=y, ACKnum=x+1), 发送完毕后,服务器端就进入SYN_RCV状态。
- 第三次握手(ACK=1,ACKnum=y+1),发送完毕后,客户端进入ESTABLISHED状态,当服务器端接收到这个包时,也进入ESTABLISHED状态。
16.TCP四次挥手过程
- 第一次挥手(FIN=1,seq=u),发送完毕后,客户端进入FIN_WAIT_1状态。
- 第二次挥手(ACK=1,ack=u+1,seq =v),发送完毕后,服务器端进入CLOSE_WAIT状态,客户端接收到这个确认包之后,进入FIN_WAIT_2状态。
- 第三次挥手(FIN=1,ACK1,seq=w,ack=u+1),发送完毕后,服务器端进入LAST_ACK状态,等待来自客户端的最后一个ACK。
- 第四次挥手(ACK=1,seq=u+1,ack=w+1),客户端接收到来自服务器端的关闭请求,发送一个确认包,并进入TIME_WAIT状态,等待了某个固定时间(两个最大段生命周期,2MSL,2 Maximum Segment Lifetime)之后,没有收到服务器端的ACK ,认为服务器端已经正常关闭连接,于是自己也关闭连接,进入CLOSED状态。服务器端接收到这个确认包之后,关闭连接,进入CLOSED状态。