关于http:简述http协议

10次阅读

共计 1943 个字符,预计需要花费 5 分钟才能阅读完成。

HTTP 协定

HTTP 能够在任何互联网协议上,或者其余网络上实现。HTTP 假设其上层协定提供牢靠的传输,因而任何能提供这种保障协定都能够被其应用。因而,也就是其在 TCP/IP 协定簇中应用 TCP 作为传输层。

通常,由 HTTP 客户端发动一个申请,创立一个到服务器指定端口的 TCP 连贯。HTTP 服务器则在那个端口监听客户端的申请。一旦收到申请,服务器就会向客户端返回一个状态,比方 ”HTTP/1.1 200 OK”,以及返回的内容,如申请的文件,谬误的音讯或者其它信息。

HTTP 工作原理

HTTP 协定定义 Web 客户端如何从 Web 服务器申请 Web 页面,以及服务器如何把 Web 页面传送给客户端。HTTP 协定采纳了申请 / 响应模型。客户端向服务器发送一个申请报文,申请报文蕴含申请的办法、URL、协定版本、申请头部和申请数据。服务器以一个状态行作为响应,响应的内容包含协定的版本,胜利或者错误代码、服务器信息、响应头部和响应数据。
以下是 HTTP 申请 / 响应的步骤:
1、客户端连贯到 Web 服务器
一个 HTTP 客户端,通常是浏览器与 Web 服务器的 HTTP 端口建设一个 TCP 套接字连贯。
2、发送 HTTP 申请
通过 TCP 套接字,客户端向 Web 服务器发送一个文本的申请报文,一个申请报文由申请行、申请头部、空行和申请数据 4 局部组成。

3、服务器接管申请并返回 HTTP 响应
Web 服务器解析申请、定位申请资源。服务器将资源复写到 TCP 套接字,由客户端读取。一个响应由状态行、响应头部、空行和响应数据 4 局部组成。

4、开释 TCP 连贯
若 connection 模式为 close,则服务器被动敞开 TCP 连贯,客户端被动敞开连贯,开释 TCP 连贯,若 connection 模式为 keepalive,则该连贯会放弃一段时间,在该工夫能够持续承受申请。
5、客户端浏览器解析 HTML 内容
客户端浏览器首先解析状态行,查看表明申请是否胜利的状态代码。而后解析每一个响应头,响应头告知以下若干字节的 HTML 文档和文档字符集。客户端浏览器读取响应数据 HTML,依据 HTML 的语法对其进行格式化,并在浏览器窗口中显示。

在浏览器的地址栏上输出一个地址会产生什么?
在游览器上的地址栏上输出一个地址,产生了这些事件(不残缺)
1、浏览器向 DNS 服务器申请解析该 URL 中的域名所对应的 ip 地址。
2、解析出 IP 地址后,依据该 IP 地址和默认端口 80,和服务器建设 TCP 连贯。
3、浏览器收回读取文件(URL 域名前面局部对应的文件)的 http 申请,该申请报文作为 TCP 三次握手的第三个报文的数据发送给服务器。
4、服务器对浏览器做出响应,并把对应的 html 文本发送给浏览器。
5、开释 TCP 连贯。
6、浏览器将该 html 文本解析并显示内容。

HTTP 协定是基于 TCP/IP 协定之上的应用层协定

1、基于申请 / 响应的模式
客户端——> 服务端——> 客户端
2、无状态保留
HTTP 是一种不保留状态,及无状态协定。HTTP 协定本身不对申请和响应之间的通信状态进行保留。也就是说在 HTTP 这个级别,协定对于发送过的申请或响应都不做长久化解决(引入 Cookie 技术来保留)
3、无连贯
每次连贯只解决一个申请,服务端解决完客户端的申请,并收到客户应答后,断开连接,当初的 HTTP/1.1 是期待几秒后断开(如果客户端还有申请,就持续用这个连贯,创立连贯也是须要资源工夫的)。

HTTP 申请办法(定义了 8 种)
1、GET
2、HEAD
3、POST
4、PUT
5、DELETE
6、TRACE
7、OPTIONS
8、CONNECT
其中最罕用的是 GET 和 POST 申请办法。
1、GET 提交的数据放在 URL(协定、地址、端口、门路? 查问、信息化片段)中的查问局部,以? 来宰割(http://localhost:8080/happyfa…),参数之间以 & 相连。POST 办法是把提交的数据放在 HTTP 的 body 当中。
2、GET 提交的数据大小有限度(不是 GET 自身的限度),POST 办法没有限度。
3、GET 与 POST 申请在服务端获取申请数据的形式不同。

状态码

1、200 OK 示意拜访胜利
2、404 NOT Found 示意没有找到资源
3、403 Forbidden 示意拜访被回绝
4、405 Method Not Allowed 示意拜访的服务器不能反对申请核心的办法
5、500 Internal Server Error 示意服务器外部呈现问题
6、504 Gateway Timeout 示意以后服务器负载比拟大,服务器解决单条申请的时耗很长,呈现超时
7、302 Move temporarily 示意长期重定向
8、301 Moved Permanently 示意永恒重定向,当浏览器收到这种响应后,后续的申请都会被主动的改成新地址。


接下来咱们手写一个 http 服务器并且实现一个需要。

正文完
 0