网络原理—HTTP

本文详细解读了HTTP协议的工作原理,包括客户端与服务器交互过程,无状态性和持久连接特性,以及请求方法、响应状态和常用头信息。涵盖了GET、POST请求的区别,常见HTTP状态码的含义,以及HTTP请求/响应报头属性的应用。深入浅出地介绍了HTTP选择题和端口号的相关知识点。
摘要由CSDN通过智能技术生成

HTTP 协议相关知识

HTTP是一个客户端终端(用户)和服务器端(网站)请求和应答的标准(TCP)。

HTTP工作原理

  • 客户端连接到Web服务器
    一个HTTP客户端,通常是浏览器,与Web服务器的HTTP端口(默认为80)建立一个TCP套接字连接。例如,http://www.baidu.com。
  • 发送HTTP请求
    通过TCP套接字,客户端向Web服务器发送一个文本的请求报文,一个请求报文由请求行、请求头部、空行和请求数据4部分组成。
  • 服务器接受请求并返回HTTP响应
    Web服务器解析请求,定位请求资源。服务器将资源复本写到TCP套接字,由客户端读取。一个响应由状态行、响应头部、空行和响应数据4部分组成。
  • 释放连接TCP连接 若connection
    模式为close,则服务器主动关闭TCP连接,客户端被动关闭连接,释放TCP连接;若connection
    模式为keepalive,则该连接会保持一段时间,在该时间内可以继续接收请求;
  • 客户端浏览器解析HTML内容
    客户端浏览器首先解析状态行,查看表明请求是否成功的状态代码。然后解析每一个响应头,响应头告知以下为若干字节的HTML文档和文档的字符集。客户端浏览器读取响应数据HTML,根据HTML的语法对其进行格式化,并在浏览器窗口中显示。

HTTP特性

HTTP 无状态性

  • HTTP协议是无状态的(stateless)。也就是说,同一个客户端第二次访问同一个服务器上的页面时,服务器无法知道这个客户端曾经访问过,服务器也无法分辨不同的客户端。HTTP的无状态特性简化了服务器的设计,使服务器更容易支持大量并发的HTTP 请求。

HTTP 持久连接

  • HTTP1.0 使用的是非持久连接,主要缺点是客户端必须为每一个待请求的对象建立并维护一个新的连接,即每请求一个文档就要有两倍RTT
    的开销。因为同一个页面可能存在多个对象,所以非持久连接可能使一个页面的下载变得十分缓慢,而且这种短连接增加了传输的负担。HTTP1.1
    使用持久连接keepalive,所谓持久连接,就是服务器在发送响应后仍然在一段时间内保持这条连接,允许在同一个连接中存在多次数据请求和响应,即在持久连接情况下,服务器在发送完响应后并不关闭TCP
    连接,而客户端可以通过这个连接继续请求其他对象。

HTTP协议格式

在这里插入图片描述

请求格式

HTTP 请求报文由请求行、请求头部、空行 和 请求包体 4 个部分组成
在这里插入图片描述
请求行:请求行由方法字段、URL 字段 和HTTP 协议版本字段 3 个部分组成,他们之间使用空格隔开。常用的 HTTP 请求方法有 GET、POST、HEAD、PUT、DELETE、OPTIONS、TRACE、CONNECT;
请求头部:请求头部由关键字/值对组成,每行一对,关键字和值用英文冒号“:”分隔。请求头部通知服务器有关于客户端请求的信息。

空行:最后一个请求头之后是一个空行,发送回车符和换行符,通知服务器以下不再有请求头;

请求包体:请求包体不在 GET 方法中使用,而是在POST 方法中使用。POST 方法适用于需要客户填写表单的场合。与请求包体相关的最常使用的是包体类型 Content-Type 和包体长度 Content-Length;

响应格式

HTTP 响应报文由状态行、响应头部、空行 和 响应包体 4 个部分组成

状态行:状态行由 HTTP 协议版本字段、状态码和状态码的描述文本 3 个部分组成,他们之间使用空格隔开;

响应头部
Location:Location响应报头域用于重定向接受者到一个新的位置。例如:客户端所请求的页面已不存在原先的位置,为了让客户端重定向到这个页面新的位置,服务器端可以发回Location响应报头后使用重定向语句,让客户端去访问新的域名所对应的服务器上的资源;

Server:Server 响应报头域包含了服务器用来处理请求的软件信息及其版本。它和 User-Agent 请求报头域是相对应的,前者发送服务器端软件的信息,后者发送客户端软件(浏览器)和操作系统的信息。

Vary:指示不可缓存的请求头列表;

Connection:连接方式;对于请求来说:close(告诉 WEB 服务器或者代理服务器,在完成本次请求的响应后,断开连接,不等待本次连接的后续请求了)。keepalive(告诉WEB服务器或者代理服务器,在完成本次请求的响应后,保持连接,等待本次连接的后续请求);

空行:最后一个响应头部之后是一个空行,发送回车符和换行符,通知服务器以下不再有响应头部。

响应包体:服务器返回给客户端的文本信息;

常见请求方法及含义

在这里插入图片描述

  • GET:当客户端要从服务器中读取某个资源时,使用GET 方法。GET 方法要求服务器将URL
    定位的资源放在响应报文的部分,回送给客户端,即向服务器请求某个资源。使用GET 方法时,请求参数和对应的值附加在 URL
    后面,利用一个问号(“?”)代表URL
    的结尾与请求参数的开始,传递参数长度受限制。例如,/index.jsp?id=100&op=bind。

  • POST:当客户端给服务器提供信息较多时可以使用POST 方法,POST
    方法向服务器提交数据,比如完成表单数据的提交,将数据提交给服务器处理。GET 一般用于获取/查询资源信息,POST
    会附带用户数据,一般用于更新资源信息。POST 方法将请求参数封装在HTTP 请求数据中,以名称/值的形式出现,可以传输大量数据;

常见响应状态及含义

● 状态码由三位数字组成,第一位数字表示响应的类型,常用的状态码有五大类如下所示:

1xx:表示服务器已接收了客户端请求,客户端可继续发送请求;

2xx:表示服务器已成功接收到请求并进行处理;

3xx:表示服务器要求客户端重定向;

4xx:表示客户端的请求有非法内容;

5xx:表示服务器未能正常处理客户端的请求而出现意外错误;

● 状态码描述文本有如下取值:

200 OK:表示客户端请求成功;

400 Bad Request:表示客户端请求有语法错误,不能被服务器所理解;

401 Unauthonzed:表示请求未经授权,该状态代码必须与 WWW-Authenticate 报头域一起使用;

403 Forbidden:表示服务器收到请求,但是拒绝提供服务,通常会在响应正文中给出不提供服务的原因;

404 Not Found:请求的资源不存在,例如,输入了错误的URL;

500 Internal Server Error:表示服务器发生不可预期的错误,导致无法完成客户端的请求;

503 Service Unavailable:表示服务器当前不能够处理客户端的请求,在一段时间之后,服务器可能会恢复正常;

常见HTTP头

  • User-Agent:产生请求的浏览器类型;
  • Accept:客户端可识别的响应内容类型列表;星号 “ * ” 用于按范围将类型分组,用 “ / ” 指示可接受全部类型,用“type/* ”指示可接受 type 类型的所有子类型;
  • Accept-Language:客户端可接受的自然语言;
  • Accept-Encoding:客户端可接受的编码压缩格式;
  • Accept-Charset:可接受的应答的字符集;
  • Host:请求的主机名,允许多个域名同处一个IP 地址,即虚拟主机;
  • connection:连接方式(close 或 keepalive);
  • Cookie:存储于客户端扩展字段,向同一域名的服务端发送属于该域的cookie;

HTTP选择题专题

版权声明:选择题整理为CSDN博主「cmdch2017」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_43914278/article/details/104437004

端口号TCP端口号

端口:21
服务:FTP
说明:FTP服务器所开放的端口,用于上传、下载。最常见的攻击者用于寻找打开anonymous的FTP服务器的
方法。这些服务器带有可读写的目录。木马Doly Trojan、Fore、Invisible FTP、WebEx、WinCrash和
Blade Runner所开放的端口。
端口:22
服务:Ssh
说明:PcAnywhere建立的TCP和这一端口的连接可能是为了寻找ssh。这一服务有许多弱点,如果配置成特定的
模式,许多使用RSAREF库的版本就会有不少的漏洞存在。
端口:23
tcp端口 TCP常用网络端口
服务:Telnet
说明:远程登录,入侵者在搜索远程登录UNIX的服务。(]大多数情况下扫描这一端口是为了找到机器运行的操作系统。还有使用其他技术,入侵者也会找到密码。木马Tiny Telnet Server就开放这个端口。
端口:80
tcp端口 TCP常用网络端口
服务:HTTP
说明:用于网页浏览。(]木马Executor开放此端口。
端口:443
服务:Https
说明:网页浏览端口,能提供加密和通过安全端口传输的另一种HTTP。

HTTP协议请求方法

1.HTTP1.1的请求方法不包括?(C)
A.PUT      B.DELETE
C.POLL     D.TRACE
2.以下不是合法HTTP请求方法的是( B)
A. GET     B. SET
C. HEAD    D. PUT
HTTP1.0定义了三种请求方法: GET, POST 和 HEAD方法。
HTTP1.1新增了五种请求方法:OPTIONS, PUT, DELETE, TRACE 和 CONNECT 方法
3.【多选题】以下关于HTTP说法正确是的:(AC)

A. HTTP POST方式比GET更私密 GET主要是方便用户输入,可以缓存

B. HTTP GET请求提交参数没有长度限制

C. HTTP POST请求提交参数没有长度限制

D. HTTP GET和POST请求提交参数都没有长度限制

4.以下对http请求方法描述错误的是(A)

A. GET请求是安全的,长度是有限制的

B.HEAD请求是没有响应体的,仅传输状态行和标题部分

C.DELETE方法用来删除指定的资源,它会删除URI给出的目标资源的所有当前内容

D.PUT方法用于将数据发送到服务器以创建或更新资源,它可以用上传的内容替换目标资源中的所有当前内容
5【多选题】以下对http请求方法描述正确的是(ABC)

A.POST请求永远不会被缓存,且对数据长度没有限制

B.我们可以从浏览器历史记录中查找到GET请求

C.我们无法从浏览器历史记录中查找到POST请求

D.PUT方法会将包含的元素放在所提供的URI下,如果URI指示的是当前资源,则会被改变。

HTTP协议响应码及其描述

1.HTTP CODE中403代表什么含义?(C)

A.服务器当前无法处理请求

B.服务器不能或者不会处理该请求

C.服务器收到该请求但是拒绝提供服务

D.服务器无法回应且不知原因
2.http状态码中,( )表示访问成功,( )表示坏请求,( )表示服务不可用。(A)

A. 2xx, 4xx, 5xx     B. 1xx, 4xx, 3xx

C. 2xx, 4xx, 3xx     D. 3xx, 1xx, 4xx
3.以下http状态码中哪一个是永久重定向?(A)

A. 301     B. 302

C. 303     D. 307
4.【不定项选择题】关于HTTP状态码说法正确的是 (CD)

A. 404 表示正常返回信息(200)

B. 302 表示永久性重定向(301)

C. 503 表示服务器端暂时无法处理请求

D. 403 表示禁止访问
5.HTTP 应答中的 500 错误是:(A)

A. 服务器内部出错

B. 文件未找到

C. 客户端网络不通

D. 没有访问权限

HTTP请求/响应报头属性

1.以下 HTTP 请求里,不带有 HTTP Body 的请求有?(B)

A. HTTP DELETE

B. HTTP GET

C. HTTP POST

D. HTTP HEAD
2.【多选题】以下选项中不属于标准 HTTP 响应头属性的是(AD)

A. Cookie

B. ETag

C. Location

D. Referer
3.标准的http响应报文中,以下哪个说法是错误的(B)

A.可以从响应的头部首行中查看状态码以及状态码的解释

B.响应报文中是不存在Header的,只有请求的时候才会有(请求(request)和响应(response)两种)

C.如果存在Body则可以查看Content-Length来去确定Body的长度

D.响应报文中的Body中可以返回任意长度的内容
4.【多选题】标准的http请求报文头中,以下哪个说法是正确的(ABCD)

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

B.Content-Type: 数据类型.

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

D.location: 搭配3xx状态码使用, 告诉客户端接下来要去哪里访问
5.【多选题】如何在响应报文头部去设置字符编码(AC)

A.Content-Type:charset=utf-8

B.Content-language:charset=utf-8

C.Content-Type:charset=UTF-8

D.Content-language:charset=UTF-8
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值