计算机网络基础知识(http/https)

HTTP协议基于客户端/服务端架构,通过TCP/IP通信。客户端发送HTTP请求,如GET或POST,包含在请求行、首部和可能的数据中。服务器响应包括状态码、首部和响应体。HTTP使用URI定位资源,MIME定义内容类型。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

HTTP工作原理

HTTP协议工作于客户端-服务端架构上。
浏览器作为HTTP客户端通过URL向HTTP服务端即WEB服务器发送所有请求。
Web服务器有:Apache服务器,IIS服务器(Internet Information Service)等。
Web服务器根据接收到的请求后,向客户端发送响应信息。
HTTP默认端口号为80,但是也可以改为8080或者其他端口。

HTTP消息结构

HTTP是基于客户端/服务端(C/S)的架构模型,通过一个可靠的链接来交换信息,是一个无状态的请求/相应协议。
一个HTTP“客户端”是一个应用程序(Web浏览器或其他任何客户端),通过连接到服务器达到向服务器发送一个或多个HTTP的请求的目的。
一个HTTP“服务器”同样也是一个应用程序(通常是一个Web服务,如Apache Web服务器或IIS服务器等),通过接收客户端的请求并向客户端发送HTTP响应数据。
HTTP使用统一资源标识符来传输数据和建立连接。
一旦建立连接后,数据消息就通过类似Internet邮件所使用的格式[RFC53222]和多用途Intenet邮件扩展(MIME)[RFC2045]来传送。

TCP/IP通信传输流

在这里插入图片描述
利用TCP/IP协议族进行网络通信时,会通过分层顺序与对方进行通信。发送端从应用层往下走,接收端则从应用层往上走。
以HTTP举例,首先作为发送端的客户端在应用层(HTTP协议)发出一个想看某个Web页面的HTTP请求。为了传输方便,在传输层(TCP协议)把从应用层收到的数据(HTTP请求报文)进行分割,并在各个报文上打上标记序号及端口号后转发给网络层。在网络层(IP协议),增加作为通信目的地的MAC地址后转发给链路层。接收端的服务器在链路层接收到数据,按序往上层发送,一直到应用层,当传输到应用层,才能算真正接收到由客户端发送过来的HTTP请求。
发送端在层与层之间传输数据时,每经过一层时必定会被打上一个该层所属的首部信息。反之,接收端在层与层传输数据时,每经过一层时会把对应的首部消去。这种把数据信息包装起来的做法称为封装(encapsulate)。

简单的HTTP协议

HTTP协议和TCP/IP协议族内的其他众多的协议相同,用于客户端和服务器之间的通信。
请求访问文本或图像等资源的一端称为客户端,而提供资源响应的一端称为服务器端。
在这里插入图片描述
在两台计算机之间使用HTTP协议通信时,在一条通信线路上必定有一端是客户端,另一端则是服务器端。
请求必定由客户端发出,而服务器端回复响应。具体示例如下:
1.发送请求

GET / HTTP/1.1
Host: hackr.jp

2.发送响应

HTTP/1.1 200 OK
Date: Tue, 10 Jul 2012 06:50:15 GMT
Content-Length: 362
Content-Type: text/html
<html>
...

从客户端发送给某个HTTP服务器端的请求报文中的内容

GET /index.htm HTTP/1.1
Host: hackr.jp

请求报文是由请求方法、请求URI、协议版本、可选的请求首部字段和内容实体构成的。

POST (方法)  /form/entry (URI)    HTTP/1.1 (协议版本)      

请求首部字段

Host: hacker.jp
Connection: keep-alive
Content-Type: application/x-www-form-urlencoded
Content-Length: 16
name = ueno&age = 37    //内容实体

响应报文基本上由协议版本、状态码(表示请求成功或失败的数字代码)、用以解释状态码的原因短语、可选的响应首部字段以及实体主体构成。

HTTP/1.1 (协议版本)  200(状态码) OK(状态码的原因短语)
//响应首部字段
Date: Tue, 10 Jul 2012 06:50:15 GMT
Content-Length: 362
Content-Type: text/html
//主体
<html>
...

请求URI定位资源

HTTP协议使用URI定位互联网上的资源。当客户端请求访问资源而发送请求时,URI需要将作为请求报文中的请求URI包含在内。指定请求URI的方式有很多。

  1. URI为完整的请求URI
GET http://hacker.jp/index.htm HTTP/1.1

2.在首部字段Host中写明网络域名或IP地址

GET /index.htm HTTP/1.1
Host: hacker.jp

3.如果不是访问特定资源而是对服务器本身发起请求,可以用一个*来代替请求URI。

OPTIONS * HTTP/1.1

客户端请求信息

客户端发送一个HTTP请求消息包括以下格式:请求行(request)、请求头部(header)、空行和请求数据四个部分组成。

服务器响应消息

HTTP响应也由四个部分组成,分别是:状态行、消息报头、空行和响应正文。

HTTP请求方法

根据HTTP标准,HTTP请求可以使用多种请求方法。
HTTP1.1新增了六种请求方法:OPTIONS、PUT、PATCH、DELETE、TRACE和CONNECT方法。

HTTP content-type

内容类型一般是指网页中存在的Content-Type,用于定义网络文件的类型和网页的编码,决定浏览器将以什么形式、什么编码读取这个文件,这就是经常看到一些PHP网页点击的结果却是下载一个文件或一张图片的原因。
语法格式:

Content-Type: text/html;charset=utf-8
Content-Type: multipart/form-data; boundary=something

MIME类型

MIME(Multipurpose Internet Mail Extensions)是描述消息内容类型的标准,用来表示文档、文件或字节流的性质和格式。
MIME消息能包含文本、图像、音频、视频以及其他应用程序专用的数据。
浏览器通常使用MIME类型(而不是文件扩展名)来确定如何处理URL。
MIME类型通用结构

type/subtype

告知服务器意图的HTTP方法

GET : 获取资源。用来请求访问已被URI识别的资源。指定的资源经服务器端解析后返回响应内容。如果请求的资源是文本,那就保持原样返回;如果是像CGI(Common Gateway Interface,通用网关接口)那样的程序,则返回经过执行后的输出结果。
POST :传输实体主体。一般使用POST方法传输实体的主体。
PUT:传输文件。
HEAD:获得报文首部。与GET方法一样,只是不返回报文主体部分。用于确认URI的有效性及资源更新的日期时间等。
DELETE:删除文件 。按请求URI删除指定的资源。
OPTIONS:询问支持的方法。OPTIONS用来查询针对请求URI指定的资源支持的方法。
TRACE: 追踪路径
CONNECT:要求用隧道协议连接代理,实现用隧道协议进行TCP通信。主要使用SSL(Secure Sockets Layer,安全套接层)和TLS(Transport Layer Security, 传输层安全)协议把通信内容加密后经网络隧道传输。
CONNECT方法的格式:

CONNECT 代理服务器名:端口号 HTTP版本

HTTP报文

用于HTTP协议交互的信息被称为HTTP报文。请求端(客户端)的HTTP报文叫做请求报文,响应端(服务器端)的叫做响应报文。HTTP报文本身是由多行数据构成的字符串文本。HTTP报文大致可分为报文首部(服务器端或客户端需处理的请求或响应的内容及属性)和报文主体(应被发送的数据)两块。

网关

利用网关可以由HTTP请求转化为其他协议通信
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值