Linux进阶 SSH;HTTP状态码,常用的状态码有哪些;HTTP请求报文和响应报文;HTTP是如何保持连接状态的

一、实现免密登录:

  • 通过执行命令 ssh-keygen -t rsa 来生成我们需要的密钥

authorized_keys: 存放远程免密登录的公钥,主要通过这个文件记录多台机器的公钥。
id_rsa: 生成的私钥文件
id_rsa.pub: 生成的公钥文件
known_hosts: 已知的主机公钥清单

[root@localhost]# ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): 
/root/.ssh/id_rsa already exists.
Overwrite (y/n)? y
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:mbdlCBnPSGSPzIhAsQ1zDxSWL4epa62Qhe4CfoEsshI root@rhcsa
The key's randomart image is:
  • 远程密钥登录
    在这里插入图片描述

二、设置只允许student1, student2用户登录:

  • 在/etc/ssh/sshd_config配置文件中设置AllowUsers选项,(配置完成需要重启 SSHD 服务)

打开/etc/ssh/sshd_config配置文件:
在这里插入图片描述
进行配置:
在这里插入图片描述


三、get和post的区别:

  • 功能不同:
  1. get是从服务器上获取数据。
  2. post是向服务器传送数据。
  • 过程不zhi同:
  1. get是把参数数据队列加到提交表单的ACTION属性所指的URL中,值和表单内各个字段一一对应,在URL中可以看到。
  2. post是通过HTTP post机制,将表单内各个字段与其内容放置在HTML HEADER内一起传送到ACTION属性所指的URL地址。用户看不到这个过程。
  • 获取值不同:
  1. 对于get方式,服务器端用Request.QueryString获取变量的值。
  2. 对于post方式,服务器端用Request.Form获取提交的数据。
  • 传送数据量不同:
  1. get传送的数据量较小,不能大于2KB。
  2. post传送的数据量较大,一般被默认为不受限制。但理论上,IIS4中最大量为80KB,IIS5中为100KB。
  • 安全性不同
  1. get安全性非常低。
  2. post安全性较高。

四、HTTP状态码,常用的状态码有哪些?

  • 1xx:指定客户端相应的某些动作,代表请求已被接受,需要继续处理。由于 HTTP/1.0 协议中没有定义任何 1xx 状态码,所以除非在某些试验条件下,服务器禁止向此类客户端发送 1xx 响应。
  • 2xx:代表请求已成功被服务器接收、理解、并接受。这系列中最常见的有200、201状态码。
    200(成功):服务器已成功处理了请求。 通常,这表示服务器提供了请求的网页。
    201(已创建):请求成功并且服务器创建了新的资源。
    202(已接受):服务器已接受请求,但尚未处理。
    203(非授权信息):服务器已成功处理了请求,但返回的信息可能来自另一来源。
    204(无内容):服务器成功处理了请求,但没有返回任何内容。
    205(重置内容):服务器成功处理了请求,但没有返回任何内容。
    206(部分内容):服务器成功处理了部分 GET 请求。
  • 3xx:代表需要客户端采取进一步的操作才能完成请求,这些状态码用来重定向,后续的请求地址(重定向目标)在响应头Location字段中指明。这系列中最常见的有301、302状态码。
    300(多种选择):针对请求,服务器可执行多种操作。 服务器可根据请求者 (user agent) 选择一项操作,或提供操作列表供请求者选择。
    ​ 301(永久移动):请求的网页已永久移动到新位置。 服务器返回此响应(对 GET 或 HEAD 请求的响应)时,会自动将请求者转到新位置。
    ​ 302(临时移动):服务器目前从不同位置的网页响应请求,但请求者应继续使用原有位置来进行以后的请求。
    ​ 303(查看其他位置):请求者应当对不同的位置使用单独的 GET 请求来检索响应时,服务器返回此代码。
    ​ 304(未修改):自从上次请求后,请求的网页未修改过。 服务器返回此响应时,不会返回网页内容。
    ​ 305(使用代理):请求者只能使用代理访问请求的网页。 如果服务器返回此响应,还表示请求者应使用代理。
    ​ 307(临时重定向):服务器目前从不同位置的网页响应请求,但请求者应继续使用原有位置来进行以后的请求。
  • ​4xx:表示请求错误。代表了客户端看起来可能发生了错误,妨碍了服务器的处理。常见有:401、404状态码。
    400(错误请求):服务器不理解请求的语法。
    401(未授权):请求要求身份验证。 对于需要登录的网页,服务器可能返回此响应。
    403(禁止):服务器拒绝请求。
    404(未找到):服务器找不到请求的网页。
    ​405(方法禁用):禁用请求中指定的方法。
    406(不接受):无法使用请求的内容特性响应请求的网页。
    407(需要代理授权):此状态代码与 401(未授权)类似,但指定请求者应当授权使用代理。
    408(请求超时):服务器等候请求时发生超时。
    409(冲突):服务器在完成请求时发生冲突。 服务器必须在响应中包含有关冲突的信息。
    410(已删除):如果请求的资源已永久删除,服务器就会返回此响应。
    411(需要有效长度):服务器不接受不含有效内容长度标头字段的请求。
    412(未满足前提条件):服务器未满足请求者在请求中设置的其中一个前提条件。
    413(请求实体过大):服务器无法处理请求,因为请求实体过大,超出服务器的处理能力。
    414(请求的 URI 过长):请求的 URI(通常为网址)过长,服务器无法处理。
    415(不支持的媒体类型):请求的格式不受请求页面的支持。
    416(请求范围不符合要求):如果页面无法提供请求的范围,则服务器会返回此状态代码。
    417 (未满足期望值):服务器未满足"期望"请求标头字段的要求。

  • 5xx:代表了服务器在处理请求的过程中有错误或者异常状态发生,也有可能是服务器意识到以当前的软硬件资源无法完成对请求的处理。常见有500、503状态码。
    500(服务器内部错误):服务器遇到错误,无法完成请求。
    501(尚未实施):服务器不具备完成请求的功能。 例如,服务器无法识别请求方法时可能会返回此代码。
    502(错误网关):服务器作为网关或代理,从上游服务器收到无效响应。
    503(服务不可用):服务器目前无法使用(由于超载或停机维护)。 通常,这只是暂时状态。
    504(网关超时):服务器作为网关或代理,但是没有及时从上游服务器收到请求。
    505(HTTP 版本不受支持):服务器不支持请求中所用的 HTTP 协议版本。

常见的HTTP状态码:

200 - 请求成功
301 - 资源(网页等)被永久转移到其它URL
404 - 请求的资源(网页等)不存在
500 - 内部服务器错误

五、HTTP请求报文和响应报文:

请求报文:

请求报文的格式由请求行+请求头+空行+请求体构成。

请求行: 请求方法 + 请求URL+ Http协议版本

  • 请求方法: 常见的HTTP请求方法有GET和POST方法,还有DELETE、HEAD、OPTIONS、PUT、TRACE请求方法

请求头:
常见的请求头:

  1. User-Agent:浏览器类型
  2. Accept:客户端可识别的响应内容类型列表。
  3. Accept-Language:客户端可接收的自然语言。
  4. Accept-Encoding:客户端可接收的编码压缩格式。
  5. Accept-Charset:可接收的应答的字符集。
  6. Host:请求的主机名,允许多个域名同处一个IP 地址,即虚拟主机。
  7. onnection:连接方式(close 或keepalive)。
  8. Cookie:存储于客户端扩展字段,向同一域名的服务器端发送属于该域的cookie
  9. content-type:响应类型

空行: 空行必须有

请求体:

  1. get方式的请求体为空
  2. post方式的请求体可以不为空

响应报文:

响应报文的格式也是由响应行+响应头+空行+响应体构成。
响应行: 报文协议及版本 + 状态码以及状态描述


六、HTTP是如何保持连接状态的:

HTTP协议为了简单灵活,本身就是无状态的,因此并不想将其设置为有状态,否定了方法一。因此,要想维护状态就只有方法二和方法三,也就是说:客户端保持状态和在服务器端保持状态两种,这正好对应了Cookie和Session这两种解决方案。同时,由于采用服务器端保持状态的方案在客户端也需要保存一个标识,所以session机制可能需要借助于cookie机制来达到保存标识的目的,但实际上并不是只有这一种方式。

1.Cookie机制:

首先,Cookie是在客户端保持状态的方法。当某个客户端首次请求服务端时,服务端会生成一些状态信息,然后再给客户端的响应报文中添加一个首部字段:“Set-cookie”,名字是“Set-cookie”,值为Cookie的内容,因此这些状态信息就随着响应报文回到客户端,当客户端收到这样的响应时,就在它管理的Cookie文件中添加一行,将这一个Cookie值记录下来。随后,当这个客户端下一次浏览这个网站时,每发送一个HTTP请求报文,就在Cookie文件中取出对应的那一行内容,放到首部行中,一起发送给服务端,进而服务端就知道了该客户端之前的一些状态信息。
在这里插入图片描述
具体的,cookie的内容主要包括:名字,值,过期时间,路径和域。 路径与域一起构成了cookie的范围。如果未设置到期时间,则表示此cookie的生命周期是在浏览器会话期间,浏览器窗口关闭,并且cookie消失。生命周期为浏览器会话的cookie称为会话cookie。会话cookie通常不存储在硬盘上,而是存储在内存中。存储在硬盘上的Cookie可以在不同的浏览器进程之间共享。

当然,这个Cookie实际上是记录了用户在万维网上的一些行为,这属于个人隐私,为了让用户有拒绝接受Cookie的自由,在浏览器中可以进行相应的设置来关闭Cookie。

2.Session机制:

对于Session会话机制,其实有了前面的例子也不难理解了,它是一种服务器端维护状态的机制,使用类似哈希表这样的结构来保存信息。

当程序需要为客户端的请求创建会话时,服务器首先检查客户端的请求是否包含会话标识符(称为会话ID)。如果包含它,它先前已为此客户端创建了一个会话。服务器根据会话ID检索会话(无法检索,将创建新会话),如果客户端请求不包含会话ID,则为客户端创建会话并生成与会话关联的会话ID。 session id应该是一个既不重复也不容易被复制的字符串。会话ID将返回给客户端以保存此响应。

在这里插入图片描述
标识符(称为会话ID)。如果包含它,它先前已为此客户端创建了一个会话。服务器根据会话ID检索会话(无法检索,将创建新会话),如果客户端请求不包含会话ID,则为客户端创建会话并生成与会话关联的会话ID。 session id应该是一个既不重复也不容易被复制的字符串。会话ID将返回给客户端以保存此响应。

那么这个Session Id如何返回到客户端呢,这可以使用cookie的方式,将其放到首部行中返回给客户端进行保存,如果禁用了Cookie,可以适应URL重写的方法,将ID附加到URL中返回去。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Murphy_Biao

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值