自学内容网 自学内容网

Linux网络——应用层HTTP协议

一.概念

HTTP(超文本传输协议)是客户端与服务器之间通信的基础,它定义了客户端(如浏览器)与服务器之间如何通信,以交换或传输超文本(如 HTML 文档)。

所谓超文本,即网页、图片、视频、音频等资源。         

客户端通过 HTTP 协议向服务器发送请求,服务器收到请求后处理并返回响应。HTTP 协议是一个无连接、无状态的协议,即每次请求都需要建立新的连接,且服务器不会保存客户端的状态信息。


二.URL

平时我们俗称的 "网址" 其实就是说的 URL 。

这是一个较为完整的网址,下面我们来解析一下其中的各个部分:

  • http:即协议,现如今网络中几乎所有的网址,使用的都是http协议。
  • user:pass@:登录信息,因为有用户登录界面的设计,现在已经无需在网址上使用了。
  • www.example.jp:域名,也就是服务器的地址,会通过DNS自动转换为IP地址。
  • 80:端口号,有时会被默认忽略,因为像http这种知名协议,都有其强关联的固定端口号,只能通过此端口号进行通信。
  • 后续部分就类似于文件路径,在一个网址中,所有的资源都在服务器端,即Linux操作系统中,而Linux中一切皆文件,所以我们要找到对应的资源,就需要通过文件路径。

该路径的根目录称为web根目录,可以自行设置。


三.HTTP协议请求和响应格式

1.请求

我们在自定义协议中,在为协议添加报头时,包含了报文的长度len,主要目的是为了得到报文数据的长度,从而方便获取数据。

在HTTP协议中,我们依然要沿用这一点,添加key为Content-Length的报头,来表示数据长度。 


2.响应

这样的格式,也是反序列化之后的结果。 


四.HTTP常见报头

Content-Type: 数据类型(text/html 等)

Content-Length: Body 的长度

Host: 客户端告知服务器, 所请求的资源是在哪个主机的哪个端口上;

User-Agent: 声明用户的操作系统和浏览器版本信息;

referer: 当前页面是从哪个页面跳转过来的;

Location: 搭配 3xx 状态码使用, 告诉客户端接下来要去哪里访问;

Cookie: 用于在客户端存储少量信息. 通常用于实现会话(session)的功能;

Connection:要用于控制和管理客户端与服务器之间的连接状态。

管理持久连接Connection 字段还用于管理持久连接(也称为长连接)。持久连接允许客户端和服务器在请求/响应完成后不立即关闭 TCP 连接,以便在同一个连接上发送多个请求和接收多个响应。

  • Connection: keep-alive:表示希望保持连接以复用 TCP 连接。
  • Connection: close:表示请求/响应完成后,应该关闭 TCP 连接。

五.HTTP状态码

状态码类型:

常见状态码如下: 

100:Continue :上传大文件时,服务器告诉客户端可以继续上传

200:OK:访问网站首页,服务器返回网页内容

201:Created:发布新文章,服务器返回文章创建成功的信息

204:No Content:删除文章后,服务器返回“无内容表示操作成功

301:Moved Permanently:网站换域名后,自动跳转到新域名;搜索引擎更新网站链接时使

302:Found 或 See Other:用户登录成功后,重定向到用户首页

304:Not Modified:浏览器缓存机制,对未修改的资源返回304 状态码

400:Bad Request:填写表单时,格式不正确导致提交失败

401:Unauthorized:访问需要登录的页面时,未登录或认证失败

403:Forbidden:尝试访问你没有权限查看的页面

404:Not Found:访问不存在的网页链接

500:Internal Server Error:服务器崩溃或数据库错误导致页面无法加载

502:Bad Gateway:使用代理服务器时,代理服务器无法从上游服务器获取有效响应

503:Service Unavailable:服务器维护或过载,暂时无法处理请求


六.HTTP方法

最常用的为GET方法和POST方法。

GET一般用于获取静态资源,也可以通过URL向服务器传递参数。

POST可以通过http request的正文来进行参数传递。



原文地址:https://blog.csdn.net/2303_78442132/article/details/143757190

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!