HTTP协议格式
平时我们俗称的 "网址" 其实就是说的 URL
- 首行: [方法] + [url] + [版本]
- Header: 请求的属性, 冒号分割的键值对;每组属性之间使用\n分隔;遇到空行表示Header部分结束
-
Body: 空行后面的内容都是 Body. Body 允许为空字符串 . 如果 Body 存在 , 则在 Header 中会有一个 Content-Length属性来标识 Body 的长度
HTTP
响应
- 首行: [版本号] + [状态码] + [状态码解释]
- Header: 请求的属性, 冒号分割的键值对;每组属性之间使用\n分隔;遇到空行表示Header部分结束
-
Body: 空行后面的内容都是 Body. Body 允许为空字符串 . 如果 Body 存在 , 则在 Header 中会有一个Content-Length属性来标识 Body 的长度 ; 如果服务器返回了一个 html 页面 , 那么 html 页面内容就是在 body中
HTTP的方法
其中最常用的就是GET方法和POST方法,下面我们详细谈论一下这俩种请求
GET——从指定的服务器中获取数据
使用GET方法时,查询字符串以键值对的形式被附加在URL地址后面,一起发送到服务器
分割URL和传输数据,参数之间以&相连。 数据如果是英文字母/数字,原样发送, 如果是空格,转换为+, 如果是中文/其他字符,则直接把字符串用BASE64加密,及“%”加上“字符串的16进制ASCII码”。
https://cn.bing.com/search?q=http+get%E5%92%8Cpost%E7%9A%84%E5%8C%BA%E5%88%AB&qs=CT&pq=
特点:
- GET请求能够被缓存
- GET请求会保存在浏览器的浏览记录中
- 以GET请求的URL能够保存为浏览器书签
- GET请求有长度限制
- GET请主要用于获取数据
POST——提交数据给指定的服务器处理
使用POST方法时,查询字符串在POST信息中单独存在,和HTTP请求一起发送到服务器
- POST请求不能被缓存下来
- POST请求不会保存在浏览器的浏览记录中
- 以Post请求的URL无法保存为浏览器书签
- POST请求没有长度限制
HTTP的状态码
HTTP常见Header
- Content-Type: 数据类型(text/html等)
-
Content-Length: Body 的长度
-
Cookie: 用于在客户端存储少量信息 . 通常用于实现会话 (session) 的功能
-
location: 搭配 3xx 状态码使用 , 告诉客户端接下来要去哪里访问
-
referer: 当前页面是从哪个页面跳转过来的
-
User-Agent: 声明用户的操作系统和浏览器版本信息
-
Host: 客户端告知服务器 , 所请求的资源是在哪个主机的哪个端口上
端口号范围划分
- 0 - 1023: 知名端口号, HTTP, FTP, SSH等这些广为使用的应用层协议, 他们的端口号都是固定的
- 1024 - 65535: 操作系统动态分配的端口号. 客户端程序的端口号, 就是由操作系统从这个范围分配的.
-
ssh 服务器 , 使用 22 端口
-
https 服务器 , 使用 443
-
http 服务器 , 使用 80 端口
-
telnet 服务器 , 使用 23 端口
-
ftp 服务器 , 使用 21 端口