一图学完!计算机网络(http相关)含面试题


图在最后)

1.HTTP(超文本传输协议)

1.1.HTTP的特征

HTTP的特征: 支持客户/服务器模式,简单快速,灵活,无连接,无状态。
相应解释:
1.简单快速: 客户向服务器请求服务时,只需传送请求方法和路径。请求方法常用的有GET、HEAD、POST。每种方法规定了客户与服务器联系的类型不同。由于HTTP协议简单,使得HTTP服务器的程序规模小,因而通信速度很快。

2.灵活: HTTP允许传输任意类型的数据对象。正在传输的类型由Content-Type(Content-Type是HTTP包中用来表示内容类型的标识)加以标记。

3.无连接: 应答后,即断开连接。采用这种方式可以节省传输时间。(相应技术:Keep-Alive)

4.无状态: HTTP协议是无状态协议。无状态是指协议对于事务处理没有记忆能力。缺少状态意味着如果后续处理需要前面的信息,则它必须重传,这样可能导致每次连接传送的数据量增大。另一方面,在服务器不需要先前信息时它的应答就较快。(相应技术:Cookie,Session)
PS:无连接,无状态详细解释参考连接.

1.2.HTTP方法(8种)

1.GET方法(获取资源): 请求制定的页面信息,并返回实体主体。

2.POST方法(传输实体主体): 向指定资源提交数据进行处理请求。数据包含在请求体中。后一个请求不会把第一个请求覆盖掉。(所以Post用来增资源)

3.PUT方法(传输文件): 从客户端向服务器传送的数据取代指定的文档的内容。如果两个请求相同,后一个请求会把第一个请求覆盖掉。(所以PUT用来改资源)

4.HEAD方法(获取报文首部): 类似于GET请求,只不过返回的响应中没有具体的内容,用于获取报头。

5.DELETE方法(删除文件): 请求服务器删除指定的页面。

6.OPTIONS方法(询问支持的方法): 允许客户端查看服务器的性能。

7.CONNECT方法(要求用隧道协议连接代理): HPPT/1.1协议中预留给将连接改为管道方式的代理服务器。

8.TRACE方法(追踪路径): 回显服务器收到的请求,主要用于测试或判断。

1.3.HTTP状态码(常见)

1XX 信息提示:
100 Continue:告诉客户端,应该继续发送请求。

2XX 成功:
200 OK:请求成功。(其后是对GET和POST请求的应答文档)
202 Accepted:供处理的请求已被接受,但是处理未完成。
204 No Content:服务器成功处理了请求,但没有返回任何实体内容,可能返回新的头部信息。

3XX重定向:
301 Moved Permanently:客户端请求的网页已经永久的移动到新的位置。

4XX客户端错误:
404 Not Found:服务器无法找到被请求的页面。

5XX服务器错误:
500 Internal Server Error:请求未完成。服务器遇到不可预知的情况。
503 Service Unavailable:请求未完成。服务器临时过载或维护。

1.4.HTTP报文格式

请求报文: 由请求行,请求头,空行和请求内容组成

请求行:请求行中包含,请求方法字段、URL字段、协议版本字段三部分组成,之间由空格分隔开。

请求头:由不定数量的键值对组成,每行为一个键值对,key和value之间通过冒号分隔。作用:用于通知服务器有关客户端的请求信息。

空行:用来告诉服务器,接下来就是请求的内容了。

请求内容:涵盖请求。

响应报文: 状态行,消息报头,空行和响应正文。

2.重要知识点(面试题)

2.1.HTTP1.0和HTTP1.1的区别

1.长连接: HTTP 1.1支持长连接(PersistentConnection)和请求的流水线(Pipelining)处理,在一个TCP连接上可以传送多个HTTP请求和响应,减少了建立和关闭连接的消耗和延迟,在HTTP1.1中默认开启Connection: keep-alive。在HTTP1.0中默认是使用短连接的,也就是说每一次请求都要建立起一次连接。

2.缓存处理: 在HTTP1.0中主要使用了If-Modified-Since 和 Expires,而在http1.1中出现了跟多的缓存控制策略,例如Entity-tag、If-Unmodified-Since、If-Match、If-None-Match。

3.带宽优化以及网络连接的使用: 在1.0中,存在着一些带宽浪费,譬如,一些用户只想请求某个对象的一部分内容,而服务器却将整个内容都发送了过来,并且不支持断点续传功能,而1.1在请求头部引入了range头,它允许请求资源的某个部分,返回码为206(Partial Content),此种做法方便了开发者调试以及合理的利用带宽资源。

4.错误状态响应码: 在HTTP1.1中新增了24个错误状态响应码,如409(Conflict)表示请求的资源与资源的当前状态发生冲突;410(Gone)表示服务器上的某个资源被永久性的删除。

2.2.Cookie和Session的的区别

Cookie 一般用来保存用户信息 比如:
①我们在 Cookie 中保存已经登录过得用户信息,下次访问网站的时候页面可以自动帮你登录的一些基本信息给填了;
②一般的网站都会有保持登录也就是说下次你再访问网站的时候就不需要重新登录了,这是因为用户登录的时候我们可以存放了一个 Token 在 Cookie 中,下次登录的时候只需要根据 Token 值来查找用户即可(为了安全考虑,重新登录一般要将 Token 重写);
③登录一次网站后访问网站其他页面不需要重新登录。

Session 的主要作用就是通过服务端记录用户的状态:
典型的场景是购物车,当你要添加商品到购物车的时候,系统不知道是哪个用户操作的,因为 HTTP 协议是无状态的。服务端给特定的用户创建特定的 Session 之后就可以标识这个用户并且跟踪这个用户了。

区别: Cookie 数据保存在客户端(浏览器端),Session 数据保存在服务器端,相对来说 Session 安全性更高。如果使用 Cookie 的一些敏感信息不要写入 Cookie 中,最好能将 Cookie 信息加密然后使用到的时候再去服务器端解密。

2.3.在浏览器输入url地址到显示的全过程(打开一个网页使用的协议)

1.浏览器查找域名的ip地址,并建立连接。
查找过程: 浏览器首先会看自己缓存中有没有对应的ip地址,如果有的话就直接去访问;如果没有,浏览器会去查看本地的hosts文件,看看有没有和这个URL对应的ip地址,如果有的话就直接用, 如果本地的hosts 文件没有能够找到对应的 ip 地址,浏览器会发出一个 DNS请求到本地DNS服务器 ,本地DNS服务器会首先查询它的缓存记录,如果缓存中有此条记录,就可以直接返回结果。如果没有,本地DNS服务器还要向DNS根服务器进行查询。根DNS服务器没有记录具体的域名和IP地址的对应关系,而是告诉本地DNS服务器,你可以到域服务器上去继续查询,并给出域服务器的地址 域服务器最终会返回给本地的DNS服务器一个具体的ip地址;然后本地的DNS服务器把这个具体的ip地址返回给浏览器,并且他自己也会把这个url请求对应的ip保存在自己本地

2.浏览器向web服务器发送一个HTTP请求(含cookies)。

3.服务器处理请求(生成一个HTML响应)。

4.释放TCP连接(四次挥手)(短连接下)。

5.浏览器开始显示HTML。

相关协议(部分):
TCP: 与服务器建立TCP连接。
IP: 建立TCP协议时,需要发送数据,使用IP协议。
OPSF: 路由器使用。
ARP: 路由器在与服务器通信时,需要将ip转换为MAC地址。使用ARP协议。
HTTP: 在TCP建立完成后,使用HTTP协议访问网页。

2.4.DNS域名系统工作原理

1.查询浏览器,操作系统,缓存。
2.请求本地域名服务器(递归查询)。
3.本地域名服务器未命中缓存,请求根域名服务器(迭代查询)。
4.根域名服务器返回所查询与的主域名服务器。
5.本地域名服务器请求主域名服务器,获取该域名的名称服务器。
6.本地域名服务器向名称服务器请求域名IP映射。
7.缓存解析结果。

2.5.HTTP 和 HTTPS 的区别

1.端口 : HTTP的URL由“http://”起始且默认使用端口80,而HTTPS的URL由“https://”起始且默认使用端口443。

2.安全性和资源消耗: HTTP协议运行在TCP之上,所有传输的内容都是明文,客户端和服务器端都无法验证对方的身份。HTTPS是运行在SSL/TLS之上的HTTP协议,SSL/TLS 运行在TCP之上。所有传输的内容都经过加密,加密采用对称加密,但对称加密的密钥用服务器方的证书进行了非对称加密。所以说,HTTP 安全性没有 HTTPS高,但是 HTTPS 比HTTP耗费更多服务器资源。

2.6.SSL提供服务

1.认证用户和服务器,确保数据发送到正确的客户机和服务器;
2.加密数据以防止数据中途被窃取;
3.维护数据的完整性,确保数据在传输过程中不被改变。

加密过程: 信息+密钥+算法=密文

对称加密: 实质是加密和解密都使用同一个密钥,对称加密只有一个密钥,加密解密为同一个密码。这就好比现实生活中的钥匙和锁,我将想要传达的信息通过对称加密算法用私钥进行加密,形成密文,然后将这密文传送给同样拥有这把锁的“钥匙”的人,对方就用同样的算法和私钥将密文解密出来。加解密速度快, 典型的对称加密算法有DES、AES等;

非对称加密: 是指加密和解密用的是不同密钥,并且是成对存在的(且根据公钥无法推知私钥,根据私钥也无法推知公钥)。一把称为公钥,能够放心的交给别人,一把是私钥,只能自己保存。其中用公钥加密的信息只能用私钥解密,用私钥加密的信息只能用公钥解密。相对对称加密速度较慢, 典型的非对称加密算法有RSA、DSA等。

欢迎指错
**计算机网络(http相关)**

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章