自学内容网 自学内容网

【计算机网络】详解HTTP请求和响应格式&常见请求方法&Header报头&响应报文状态码&URL

一、HTTP协议的定义

        在互联网世界中,HTTP HyperText Transfer Protocol,超文本传输协议)是一个至关重要的协议。它定义了客户端(如浏览器)与服务器之间如何通信,以交换或传输超文本(如 HTML 文档)。HTTP 协议是客户端与服务器之间通信的基础。客户端通过 HTTP 协议向服务器发送请求,服务器收到请求后处理并返回响应。 HTTP 协议是一个无连接、无状态的协议,即每次请求都需要建立新的连接,且服务器不会保存客户端的状态信息

二、认识URL

        平时我们俗称的 " 网址" 其实就是说的 URL。在互联网中,要找到一份资源,要知道资源所在主机的IP地址以及在该主机中的文件路径。域名会被解释成IP和端口。//,/,?等都是特殊字符,域名(服务器地址)是禁止出现特殊字符的。?后面都是kv参数,如果我们的搜索内容中本来就包含了特殊字符,那特殊字符在请求时浏览器会对其进行编码转换成对应的十六进制,我们的汉字也会被编码转换成对应的十六进制。
上面的/dir就是网站注册的搜索服务

2.1、urlencode 和urldecode

        像/?:等这样的字符,已经被url当做特殊意义理解。因此这些字符不能随意出现。比如,某个参数中需要带有这些特殊字符,就必须先对特殊字符进行转义。转义的规则如下:将需要转码的字符转为16进制,然后从右到左,取4位(不足4位直接处理),每2位 做一位,前面加上%,编码成%XY格式。

三、HTTP请求和响应格式

        URI指的是指定服务器下的一串路径,指定服务器下的什么资源。 这里HTTP版本指的是客户端的版本由上图可知,空行可以保证我们把报头全部读完,请求正文可以不携带。如果我们没有指明我们要请求什么资源,URI默认就是/,http协议可以支持默认首页。我们在一个网站中访问网页,进行页面跳转,每一次访问,都是一次http请求进一步的我们也可以理解什么是网站,网站本质上就是一对特定目录和文件构成的目录结构一张网页里可以包含很多资源,比如说图片。获取一张完整的网页,要先获取html,渲染解析html,浏览器会发起二次或多次请求,获取完成完整网页的所有元素,然后构成一个完整的网页结果。http内部要根据目标要访问的资源的文件后缀,区分清楚文件类型,通过Content-Type告诉浏览器我的响应正文的类型。

        注意点:设置端口号复用,当服务器已经停止使用时还有客户端连着,此时服务器端的端口号还会被一直占用着,导致无法立即重启,设置端口号复用可以实现立即重启。

        注意点:http的请求本质上是一个大字符串。httpserver尽量不依赖任何第三方库。我们可以把功能、服务当成资源,http本身不能进行数据处理

 

         这里HTTP版本指的是服务端的版本。我们可以看到请求报头和响应报头有的格式是一样的。 请求报头和响应报头中的版本字段可以保证客户端和服务端在通信时版本的匹配,不至于产生通信问题。

四、HTTP常见请求方法

4.1、GET 方法

        GET方法会以url的方式来向服务器提交参数,可以用于请求URL 指定的资源,指定资源经服务器端解析后返回响应内容。

4.2、POST方法

        POST方法会以正文形式进行参数的上传。POST方法上传参数要比GET方法更加私密,另外,POST方法可以传递更多、更大的数据。

五、HTTP常见Header报头

  • Content-Type: 数据类型(text/html 等)
  • Content-Length: Body 的长度
  • Host: 客户端告知服务器, 所请求的资源是在哪个主机的哪个端口上;
  • User-Agent: 声明用户的操作系统和浏览器版本信息;
  • referer: 当前页面是从哪个页面跳转过来的;
  • Location: 搭配 3xx 状态码使用, 告诉客户端接下来要去哪里访问;
  • Cookie: 用于在客户端存储少量信息. 通常用于实现会话(session)的功能;
  • Accept:客户端能接收的数据格式。
  • Connection:Connection 字段可用于管理持久连接(也称为长连接)。持久连接允许客户端和服务器在请求/响应完成后不立即关闭 TCP 连接,以便在同一个连接上发送多个请求和接收多个响应。在 HTTP/1.1 协议中,默认使用持久连接。当客户端和服务器都不明确指定关闭连接时,连接将保持打开状态,以便后续的请求和响应可以复用同一个连接。在 HTTP/1.0 协议中,默认连接是非持久的。如果希望在 HTTP/1.0上实现持久连接,需要在请求头中显式设置 Connection: keep-alive。keep-alive:表示希望保持连接以复用 TCP 连接。close:表示请求/响应完成后,应该关闭 TCP 连接。

 六、HTTP响应报文状态码

        最常见的状态码, 比如 200(OK), 404(Not Found), 403(Forbidden), 302(Redirect, 重定向), 504(Bad Gateway)。


原文地址:https://blog.csdn.net/m0_74265792/article/details/142603530

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