Open anjia opened 5 years ago
Web 应用程序是如何使用 HTTP 进行通信的
text/html
HTML 格式的文本文档text/plain
普通的 ASCII 文本文档image/jpeg
JPEG 格式的图片image/gif
GIF 格式的图片video/quicktime
Apple 的 QuickTime 电影application/vnd.ms-powerpoint
PowerPoint 演示文件GET
获取资源POST
提交PUT
存储DELETE
删除HEAD
仅发送 HTTP 头200
OK。文档正确返回302
重定向。去其它地方获取资源404
没找到:
分隔起始行+首部字段,均是:文本形式&结构化
6. 连接
只要建立了 TCP 连接,报文交换就可不丢失、不破坏、也不会错序
Web 应用程序,除了 Web 浏览器和 Web 服务器之外,还有一些比较重要的。比如:
Web cache
proxy cache
gateway
tunnel
HTTP,HyperText Transfer Protocol,超文本传输协议 TCP,Transmission Control Protocol,传输控制协议 IP,Internet Protocol,网际协议
DNS,Domain Name Service,域名服务
HTTP 网络协议栈 |
---|
HTTP 应用层 |
TCP 传输层 |
IP 网络层 |
数据链路层 |
物理层 |
http://test.com:8888/jkzx/zx?kw=anjia&src=github#hello
window.location = {
protocol: "http:",
hostname: "test.com", // 主机名,DNS -> IP
port: "8888",
host: "test.com:8888", // 主机
origin: "http://test.com:8888", // 源 -> 同源策略/跨域
pathname: "/jkzx/zx",
search: "?kw=anjia&src=github",
hash: "#hello",
href: "http://test.com:8888/jkzx/zx?kw=anjia&src=github#hello" // ~完整~
}
步骤:
使用 Telnet
telnet test.com 80 <!--1. 建立 TCP 连接-->
Trying 111.222.333.444...
Connected to test.ss-lb.com.
Escape character is '^]'.
GET /index.html HTTP/1.1 <!--2. 输入 HTTP 请求 -->
Host: www.test.com
<!--请求结束,即空行的含义 -->
HTTP/1.1 404 Not Found <!--3. 服务器的 HTTP 响应 -->
Server: openresty
Date: Fri, 25 Jan 2019 13:01:29 GMT
Content-Type: text/html
Content-Length: 162
Connection: close
<html>
<head><title>404 Not Found</title></head>
<body bgcolor="white">
<center><h1>404 Not Found</h1></center>
<hr><center>nginx</center>
</body>
</html>
Connection closed by foreign host. <!--内容返回后,服务器会关闭连接 -->
说明:
telnet test.com 80
,Telnet 会查找 hostname 的 IP,并打开一条到那台机器 80 端口的 TCP 连接
GET /index.html HTTP/1.1
HTTP 网络协议栈 为啥要分五层 好多
概述 HTTP 协议:Web 的基础构件、HTTP 的核心技术