HTTP 的工作原理是什么?
- 客户端与服务器需要建立连接。只要单击某个超级链接,HTTP的工作开始。
- 建立连接后,客户机发送一个请求给服务器,请求方式的格式为:统一资源标识符(URL)、协议版本号,后边是MIME信息包括请求修饰符、客户机信息和可能的内容。
- 服务器接到请求后,给予相应的响应信息,其格式为一个状态行,包括信息的协议版本号、一个成功或错误的代码,后边是MIME信息包括服务器信息、实体信息和可能的内容。
- 客户端接收服务器所返回的信息通过浏览器显示在用户的显示屏上,然后客户机与服务器断开连接。
如果在以上过程中的某一步出现错误,那么产生错误的信息将返回到客户端,有显示屏输出。对于用户来说,这些过程是由HTTP自己完成的,用户只要用鼠标点击,等待信息显示就可以了。
URI 的格式是什么?常见的协议有哪些
URI:统一资源标识符
- 网络层协议:IP协议、ICMP协议、ARP协议、RARP协议。
- 传输层协议:TCP协议、UDP协议。
- 应用层协议:FTP、Telnet、SMTP、HTTP、RIP、NFS、DNS。
HTTP 协议有几种和服务器交互的方法
方法名称 | 含义 |
---|---|
GET | GET是最常用的方法,通常用于请求服务器发送某个资源,我们平时在浏览器输入网页地址,就是给服务器发送了一个get请求,希望得到这个网页 |
HEAD | HEAD方法和GET类似,但是在服务器的响应中没有资源的内容,只有资源的一些基本信息,主要用于在不获取资源的情况下获取资源信息(类型、大小等),通过状态码产看资源是否存在,通过查看首部,测试资源是否被修改了 |
PUT | 和GET从服务器获取资源相反,PUT用于想服务器写入资源。PUT的语义就是让服务器用请求的主体部分创建一个请求URL命名的文档,如果存在就替换当然处于安全原因,并不是所有的服务器都实现 |
POST | POST用于想服务器发送数据,通常用来支持HTML的表单(input、select、textarea),表单中的数据会被发送到服务器 |
DELETE | DELETE方法用于要求服务器删除请求的URL,和PUT一样,服务器可能会不支持 |
状态码200,301,304,403,404,500,503分别代表什么意思
状态代码 | 状态信息 | 含义 |
---|---|---|
200 | OK | 服务器成功处理了请求 |
301 | Moved Permanently | 客户请求的文档在其他地方,新的URL在Location头中给出,浏览器应该自动地访问新的URL |
304 | Not Modified | 客户端有缓冲的文档并发出了一个条件性的请求(一般是提供If-Modified-Since头表示客户只想比指定日期更新的文档),服务器告诉客户,原来缓冲的文档还可以继续使用 |
403 | Forbidden | 资源不可用。服务器理解客户的请求,但拒绝处理它。通常由于服务器上文件或目录的权限设置导致 |
404 | Not Found | 无法找到指定位置的资源 |
500 | Internal Server Error | 服务器遇到了意料不到的情况,不能完成客户的请求 |
503 | Service Unavailable | 服务器由于维护或者负载过重未能应答。例如,Servlet可能在数据库连接池已满的情况下返回503。服务器返回503时可以提供一个 Retry-After头 |
报文有哪几部分组成?
HTTP报文是简单的格式化数据块,没个报文都包含一条来自客户端的请求或者一条来自服务器的响应,由3个部分组成
- 对报文进行描述的起始行 —— start line
- 包含属性的首部块 —— header
- 可选的包含数据的主体部分 —— body
请求头的格式和作用是什么?
格式:键值对
作用:为请求添加额外的信息,来告诉服务器客户端的信息和能力,服务器可以据此为客户端提供更好的响应
请求头 | 描述 |
---|---|
Accept | 告诉服务器能够发送那些媒体类型 |
Accept-Encoding | 告诉服务器能够发送那些编码 |
Accept-Language | 告诉服务器能够发送那些语言 |
Cache-Control | 随报文传送缓存指示 |
Connection | 客户端和服务器是否保持连接 |
Cookie | 客户端字符串 |
Host | 接收请求的服务器的主机名和端口号 |
Pragma | 早期的随报文传送指示方式 |
Referer | 提供了包含当前请求URI的文档的URL,告诉服务器自己来源 |
User—Agent | 发起请求的客户端应用程序 |
首部的格式
格式:键值对;
首部包括:通用首部字段(General),请求首部字段(Request),响应首部字段(Response),实体首部字段(Entity)
通用首部: 请求报文和响应报文两方都会使用的首部。
请求首部: 从客户端向服务器端发送请求报文时使用的首部。补充了请求的附加内容、客户端信息、响应内容相关优先级等信息。
响应首部: 从服务器端向客户端返回响应报文时使用的首部。补充了响应的附加内容,也会要求客户端附加额外的内容信息。
实体首部字段: 针对请求报文和响应报文的实体部分使用的首部。补充了资源内容更新时间等与实体有关的信息。
首部的格式和作用是什么?给个范例截图说明
格式:键值对;
首部包括:通用首部字段(General),请求首部字段(Request),响应首部字段(Response),实体首部字段(Entity)
通用首部: 请求报文和响应报文两方都会使用的首部。
请求首部: 从客户端向服务器端发送请求报文时使用的首部。补充了请求的附加内容、客户端信息、响应内容相关优先级等信息。
响应首部: 从服务器端向客户端返回响应报文时使用的首部。补充了响应的附加内容,也会要求客户端附加额外的内容信息。
实体首部字段: 针对请求报文和响应报文的实体部分使用的首部。补充了资源内容更新时间等与实体有关的信息。
主体的作用是什么?
主体.png主体部分就是HTTP要传输的内容了,一般是图片、视频、HTML文档等。已页面为例,响应主体也就是HTML文档了。
网友评论