面试必问的http-1.2:问题整理
TCP-UDP区别:
TCP,提供面向连接的服务,在传送数据之前必须先建立连接,数据传送完成后要释放连接。因此TCP是一种可靠的的运输服务,但是正因为这样,不可避免的增加了许多的开销,比如确认,流量控制等。对应的应用层的协议主要有 SMTP,TELNET,HTTP,FTP 等。
UDP,在传送数据前不需要先建立连接,远地的主机在收到UDP报文后也不需要给出任何确认。虽然UDP不提供可靠交付,但是正是因为这样,省去和很多的开销,使得它的速度比较快,比如一些对实时性要求较高的服务,就常常使用的是UDP。对应的应用层的协议主要有 DNS,TFTP,DHCP,SNMP,NFS 等。
什么是Http协议无状态协议?怎么解决Http协议无状态协议?
无状态协议对于事务处理没有记忆能力。缺少状态意味着如果后续处理需要前面的信息
也就是说,当客户端一次HTTP请求完成以后,客户端再发送一次HTTP请求,HTTP并不知道当前客户端是一个”老用户“。
可以使用Cookie来解决无状态的问题,Cookie就相当于一个通行证,第一次访问的时候给客户端发送一个Cookie,当客户端再次来的时候,拿着Cookie(通行证),那么服务器就知道这个是”老用户“。
URL-URI
URL:
统一资源定位符(Uniform Resource Locator, URL),又叫做网页地址,是互联网上标准的资源的地址(Address),用于描述一个网络上的资源。
统一资源定位符的开始,一般会标志着一个计算机网络所使用的网络协议。
URI:
URI(Uniform Resource Identifier,统一资源标识符)用于标识某一资源。
基本格式为:
schema://host[:port]/path/[;url-params][?query-string][#anchor]
格式说明
scheme:指定底层使用的协议(例如:http, https, ftp, mailto,file,telnet)
host: HTTP服务器的IP地址或者域名
port: HTTP服务器的默认端口是80,这种情况下端口号可以省略。如果使用了别的端口,必须指明。例如http://www.cnblogs.com:8080/
path: 由零或多个“/”符号隔开的字符串,一般用来表示主机上的一个目录或文件地址
url-params:用于指定特殊参数的可选项
query-string:可选,用于给动态网页(如使用CGI、ISAPI、PHP、JSP、ASP、ASP.NET等技术制作的网页)传递参数,多个参数用“&”符号隔开,每个参数的名和值用“=”符号隔开。
anchor(锚用):于指定网络资源中的片断。例如一个网页中有多个名词解释,可使用fragment直接定位到某一名词解释