HTTP 协议

75次阅读

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

网络协议
网络协议是计算机用来通信的规则
网址组成
https://www.zhihu.com:443/question/31838184 协议:https 域名:zhihu.com 端口:443(https 协议的默认端口,可省略路径: /question/31838184
DNS(Domain Name System)
计算机靠 ip 地址通信,ip 地址记不住就发明了域名计算机可以向 DNS(域名服务器)查询域名对应的 ip 地址下面的命令可得到域名对应的 ip 地址
ping g.cn

端口
把域名比作地址,那么端口就相当于收件人
HTTP 协议
HTTP 协议主要用于网站的访问,浏览器和服务器之间通过 HTTP 协议通信
通信过程:1,浏览器按照规定的格式发送文本数据到服务器 2,服务器解析请求,按照规定的格式返回文本数据到浏览器 3,浏览器解析得到的数据,并做相应处理
数据格式:请求和返回是一样的数据格式:1,请求行或者响应行 2,HTTP-Header(其中 Host 字段是必须的,其他可选)3,/r/n/r/n(连续两个换行回车符,用来分隔 HTTP-Header 和 HTTP-Body)4,HTTP-Body(可选)
例如:浏览器访问这个网址的时候 http://www.google.cn/
发送的请求:GET http://www.google.cn/ HTTP/1.1Host: www.google.cn 其中 1,GET 是请求方法 2,http://www.google.cn/ 是请求的路径 3,HTTP/1.1 是 HTTP 版本号

服务器的响应:HTTP/1.1 304 Not Modified 其中 1,HTTP/1.1 是 HTTP 版本号 2,304 是状态码 3,Not Modified 是状态码的描述

正文完
 0

HTTP协议

76次阅读

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

WEB 访问的过程
1. 客户端用户在浏览器输入 url,形如 http://www.baidu.com

2. 客户端操作系统做 dns 解析,获得目标服务器的 ip 地址
3. 客户端操作系统打开一个自由端口,向服务器发起连接请求
4. 经过 3 次握手,服务端确认与该客户端的连接,也开发一个自由端口
5. 客户端开始发送请求数据,以 4KB 为一个请求数据包,发送 http request 请求
6. 服务器开始接受请求数据包,接收完成后处理数据,request handling
7. 服务器开始向客户端发送响应数据,4KB,发送 http response
8. 响应结束后,服务器会经过 4 次握手断开连接,关闭各自的自由端口
服务器向客户端发送响应数据会,连接还在吗?HTTP1.0 版,连接不在,已经断开,下次发送数据时,需要再次进行握手连接 HTTP1.1 Connection:Keep-Alive 请求响应后,不会立即断开,会有一小段时间的保活状态,如果这段时间内没有请求了,即断开连接。
1.1 相较与 1.0 有哪些好处?

持久连接
虚拟主机
代理连接

HTTP 协议是什么?
Hyper Text Transfer Protocol:超文本传输协议是 TCP/IP 协议族(栈)中“应用层”的一个协议,用于在服务端和客户端传递超文本内容。MIME:multipurpose Internet Mail Extension(多用途的互联网邮件扩展)
URL 的组成

URI:Unified Resource Identifier 统一资源识别,包含 URL 和 URN
URL:Unified Resource Locator 统一资源定位,即常见的浏览器地址
URN:Unified Resource Naming 统一资源命名,mailto:admin@163.com

URL 的完整格式
<scheme>://<user>:<pwd>@<host>:<port>;<params>?<query>#<frag>

scheme:方案,指定以哪种协议从服务器获取指定资源,方案名不区分大小写,常见 HTTP HTTPS FTP MAILTO RTSP FILE NEWS TELNET 等
user:用户名,某些方案访问资源时需要指定用户名,默认值是 anonymouse
pwd:密码,默认值为 e-mail 地址,例:ftp://admin:123456@172.168.1.16/adm/secret.xls
host:资源所在服务器的 ip 地址或域名,如是域名需要 dns 解析成 ip
params:参数,某些方案会使用参数来指定输入参数,每个参数都用名值对的形式,一个 url 可以有多个参数,用;分开,例:https://www.ccb.com/login.jsp;jsessionid=gy65edfgt6
query:查询参数,以? 开始 & 分隔,可以多个
frag:网页中的位置,对应元素的 id
注:js 中的 encodeURI 不会对“; / ? : @ & = + $ , # ‘”进行编码,而 encodeURIComponent 会

HTTP 通信
请求响应原理
1.message:消息 / 报文,在 http 客户端与服务器之间传递的数据块 2.http 协议规定,消息必须符合特定的格式才能被彼此理解,分两种:

request message:客户端向服务器发送的请求消息
response message:服务器返回给客户端的消息

3.message 消息的结构

StartLine:起始行,必须,基本的描述信息
Header:消息头部 / 报文。可选
Body:消息正文 / 主体。可选
起始行和消息头是纯 ASCII 字符,每行以 CRLF(回车换行)结束
消息主体是一个可选的数据块,可以为空或者是字符数据或者二进制数据

4. 详细描述

起始行格式:请求方法空格请求 URL 空格所用协议 / 版本 CRLF

请求方法
含义
是否有请求体

GET
从服务器获取资源

POST
向服务器发送资源

PUT
让服务器保存资源

DELETE
让服务器删除资源

HEAD
获取资源的响应头信息

OPTIONS
询问服务器可以提交哪些请求方法

TRACE
追踪传输路径

消息头部:描述请求本身、客户端、请求主体的特征,可分 4 种

通用头部:请求消息响应消息都可用。Connection Date Cache-Control Pragma
请求专用头部:只在请求消息中 Host Referer User-Agent Client-IP Accept If-Modified-Since Cookie
实体头部:描述消息主体特征 Location Content-Length Expires Last-Modified Content-Type
扩展头部:自定义

请求主体:文件传输 multipart/form-data

正文完
 0