初级
1. URI和URL的区别
- URI:统一资源标识符,用于标识互联网上的资源的字符串。
维基百科解释为:该种标识允许用户对网络中(一般指万维网)的资源通过特定的协议进行交互操作。URI的两种常见形式:1.统一资源定位符URL:经常指定为非正式的网址;2.统一资源名称URN:通过提供的一种途径,用于在特定名字空间资源的标识,以补充网址。 - URL:统一资源定位符,表示资源的地点。
- URI包含URL。
- URI的格式:
http://user:pass@www.example.jp:80/dir/index.html?uid=1#ch1
http:// :方案名
user:pass:登录信息(认证)
@www.example.jp:服务器地址
80:服务器端口号
dir/index.htm:带层次的文件路径
?uid=1:查询字符串
#ch1:片段标识符
- URL与URN的区别:
URN代表着一个资源的名称,这个资源可以不是基于互联网的;URL代表着一个资源的地址。
2. 常见HTTP方法有哪些?使用场景分别是什么?
-
GET
:获取资源。GET方法用来请求访问已被URI识别的资源,指定的资源经服务器端解析后返回响应内容。HTTP1.0~1.1 -
POST
:传输实体主体。HTTP1.0~1.1 -
PUT
:传输文件。就像FTP协议的文件上传一样,要求在请求报文的主体中包含文件的内容,然后保存到请求URI指定的位置。HTTP1.0~1.1 -
HEAD
:获取报文首部。与GET方法类似,用于确认URI的有效性及资源更新的日期时间等等。HTTP1.0~1.1 -
DELETE
:删除文件。是与PUT方法相反的。HTTP1.0~1.1 -
OPTIONS
:询问支持的方法。用来查询针对请求URI指定的资源支持的方法。HTTP1.1 -
TRACE
:追踪路径。是让Web服务器端将之前的请求通信返回给客户端。HTTP1.1 -
CINNECT
:要求用隧道协议连接代理。实现用隧道协议进行TCP通信。HTTP1.1 -
LINK
:建立和资源之间的连接。 -
UNLINK
:断开连接关系。
3. GET与POST的区别
- 作用不同:GET获取资源,像后台要数据;POST传输实体主体,像后台传输数据。
- 请求参数的展现发送不同:GET请求会用
?
将请求参数拼接成url;POST请求的请求参数在请求主体内。 - 传输数据长度不同:因为浏览器地址栏对自动对url进行截取,所以当数据量过大时,GET请求会造成数据丢失。
- 安全性:因为GET请求会拼接成url展示,但是浏览器的历史记录和服务器的请求日志,都会保存其信息,造成信息的不安全。
4. 在HTML的form标签里,method支持哪些类型?
method 属性
规定如何发送表单数据(表单数据发送到 action 属性所规定的页面)。
表单数据可以作为 URL 变量(method="get")或者 HTTP post (method="post")的方式来发送。即有GET
和POST
两种类型。
5. 状态码200,301,302,304,403,404,500,503分别代表什么?
- 状态码:
- 1XX:Informational(信息性状态码),接收的请求正在处理。
- 2XX:Success(成功状态码),请求正常处理完毕。
- 3XX:Redirection(重定向状态码),需要进行附加操作以完成请求。
- 4XX:Client Erroe(客户端错误状态码),服务器无法处理请求。
- 5XX:Server Error(服务器错误状态码),服务器处理请求出错。
- 200状态码:(成功) 服务器已成功处理了请求。 通常,这表示服务器提供了请求的网页。
- 301状态码:(永久移动) 请求的网页已永久移动到新位置。 服务器返回此响应(对 GET 或 HEAD 请求的响应)时,会自动将请求者转到新位置。
- 302状态码:(临时移动) 服务器目前从不同位置的网页响应请求,但请求者应继续使用原有位置来进行以后的请求。
- 304状态码:(未修改) 自从上次请求后,请求的网页未修改过。 服务器返回此响应时,不会返回网页内容。
- 403:状态码:(禁止) 服务器拒绝请求。
- 404状态码:(未找到) 服务器找不到请求的网页。
- 500状态码:(服务器内部错误) 服务器遇到错误,无法完成请求。
- 503状态码:(服务不可用) 服务器目前无法使用(由于超载或停机维护)。 通常,这只是暂时状态。
HTTP常见状态码
中级
1. OSI的七层模型是什么?TCP/IP是哪四层模型?
- OSI七层模型
七层模型,也叫OSI(OPen System Interconnection)参考模型,是国际标准化组织(ISO)指定的一个用于计算机或通信系统间互联的标准体系。其中包括:- 应用层
- 表示层
- 会话层
- 传输层
- 网络层
- 数据链路层
- 物理层
- TCP/IP四层模型
其中主要包括:
- 应用层:
应用层决定了向用户提供应用服务时通信的活动。下述的三层负责处理网络通讯的相关细节,这部分需要稳定高效,因此它们是在操作系统的内核空间中,而应用层是在用户空间实现的,负责处理众多业务逻辑,如文件传输、网络管理。
应用层的协议众多:- 运行在TCP协议上的协议
1.1 HTTP(80端口):主要用于普通浏览。
1.2 HTTPS(443端口):HTTP协议的安全版本。
1.3 FTP(20和21端口):用于传输文件。
1.4 POP3(110端口):收邮件用。
1.5 SMTP(25端口):用来发送电子邮件。
1.6 SSH(22端口):用于加密安全登录用。 - 运行在UDP协议上的协议
2.1 DCHP(67端口,动态主机配置协议),动态配置IP地址。 - 其他
3.1 DNS(域名服务):用于完成地址查找,邮件转发等工作(运行在TCP/IP协议上)。
3.2 SNMP(简单网络管理协议):用于网络信息的收集和网络管理。
3.3 ARP(地址解析协议):用于动态解析以太网硬件的地址。
- 运行在TCP协议上的协议
- 传输层:
传输层对上层应用层,提供处于网络连接中的两台计算机之间的数据传输,即为应用程序隐藏了数据包跳转的细节,负责数据包的收发、链路超时重连等。
传输层的协议:- TCP协议:传输控制协议,是一种面向连接的,可靠的,基于字节流的传输层通信协议。
- UDP协议:用户数据报协议,不可靠的传输层协议。
- 网络层:
网络层用来处理在网络上流动的数据包。
网络层协议:- IP协议: 是网络层最核心的协议,它根据数据包的目的IP地址来决定如何投递该数据包。若数据包不可直接发送给目标主机,那么IP协议就为它寻找一个合适的下一跳路由器,并将数据包交付给该路由器去转发,如此循环直至到达目标主机或者发送失败而丢弃该数据包。
- ICMP协议: 因特网控制报文协议ICMP,是IP协议的补充,用于检测网络的连接状态,如ping应用程序就是ICMP协议的使用。
- 链路层:
用来处理连接网络的硬件部分。包括控制操作系统、硬件设备驱动、NIC(网络设备器即网卡),及光纤等物理课件部分(还包括连接器等一切传输媒介)。
2. 讲一讲TCP的三次握手和TCP四次挥手的流程
-
TCP建立连接的三次握手
图解TCP建立连接三次握手.PNG
所谓三次握手(Three-way Handshake),是指建立一个 TCP 连接时,需要客户端和服务器总共发送3个包。为了准确无误的将数据发送达目标处,TCP协议采用三次握手策略。
1.1 第一次握手(SYN=1, seq=x)
客户端发送一个SYN=1的请求报文,指明客户端要连接的服务器的端口,及初始序列号x,发送完毕后,客户端进入SYN_SEND
状态。
1.2 第二次握手(SYN=1, ACK=1, seq=y,ack=x+1)
服务器返回一个ACK=1的应答报文,并且也发送了SYN=1的请求报文,服务器端选择自己的序列号seq=y,并且响应客户端的请求,应答序号ack设置为x+1,即为客户端的请求序号+1。服务器端进入SYN_RCVD
状态。
1.3 第三次握手(ACK=1,ack=y+1)
客户端再一次发送应答报文,对服务器的应答序号ack=y+1。客户端进入ESTABLISHED
状态,当服务器端接收到这个包时,也进入ESTABLISHED
状态。
TCP 握手结束。 -
TCP释放连接的四次挥手
TCP释放连接的四次挥手.PNG
2.1 第一次挥手(FIN=1,seq=x)
客户端向服务器端发送FIN=1,告诉服务器想要关闭连接。发送完毕后,客户端进入FIN_WAIT_1
状态。
2.2 第二次挥手(ACK=1,ack=x+1)
服务器端接收到客户端的请求信息,返回一个确认信息,表示已经收到关闭连接的请求,但是还没有完毕连接,在准备。服务器端进入CLOSE_WAIT
状态,客户端接收到这个确认包之后,进入FIN_WAIT_2
状态,等待服务器端关闭连接。
2.3 第三次挥手(FIN=1,seq=y)
服务器端已经关闭连接,并告知客户端。发送完毕后,服务器端进入LAST_ACK
状态,等待来自客户端的最后一个ACK。
2.4 第四次挥手(ACK=1,ack=y+1)
客户端已经收到关闭好连接的回应,并发送一个确认包告诉服务器。并进入TIME_WAIT
状态,等待可能出现的要求重传的 ACK 包。服务器端接收到这个确认包之后,关闭连接,进入CLOSED
状态。
3. 为什么TCP建立连接是三次握手,释放连接是四次挥手?
这是因为服务端的LISTEN
状态下的SOCKET
当收到客户端建立连接请求的SYN
报文后,它可以把ACK
和SYN
(ACK
起应答作用,而 SYN
起同步作用)放在一个报文里来发送。但关闭连接时,当服务器收到客户端的 FIN 报文通知时,服务器只能发一个回应报文ACK
:“哦,我知道了”,然后通知应用程序。应用程序完成全部数据发送并确定可以终止了,服务器才能发送FIN
告诉客户端可以真正断开连接了。所以这一步ACK
报文和FIN
报文需要分开发送,因此多了一个步骤。
4. RESTful API
5. HTTP请求报文与响应报文的格式
-
HTTP请求报文格式:
HTTP请求报文主要由请求行、请求头部、请求正文3部分组成
HTTP请求报文.PNG
-
HTTP响应报文格式:
HTTP响应报文主要由状态行、响应头部、响应正文3部分组成
HTTP响应报文.PNG
6. HTTP首部包含哪些字段,举例说明?
- 通用首部字段(General Header Fields)
请求报文和响应报文两方都会使用的首部。 - 请求首部字段(Request Header Fields)
从客户端向服务器端发送请求报文时使用的首部。补充了请求的附加内容、客户端信息、响应内容相关优先级等信息。 - 响应首部字段(Response Header Fields)
从服务器端向客户端返回响应报文时使用的首部。补充了响应的附加内容,也会要求客户端附加额外的内容信息。 - 实体首部字段(Entity Header Fields)
针对请求报文和响应报文的实体部分使用的首部。补充了资源内容更新时间等与实体有关的信息。
HTTP首部字段详细介绍
网友评论