HTTP协议
HTTP可以说是当今应用最广泛的应用层协议之一,主要面向的是浏览器(客户端)和服务器之间通信的规定
HTTP协议的底层是TCP协议,我们先大概认识一下这个协议是如何使用的
URL
URL也称为统一资源定位器,但其实我们可以感性的将其看作网址
例如https://www.google.com
,但这个其实是省略过后的,完整的长这样
- http就是标识用的http协议,https可以先认为他是一个安全加密版本的http
- 登录信息一般都不太带了,因为有了数据库等线上的注册登录系统
- 服务器地址也就是我们常说的域名,他的本质就是用来表示IP地址
- 因为这个点分十进制四个大数字太难记住,但是像
baidu
这样的拼音就好记很多 - DNS是域名服务器,他的工作就是将域名解析成IP地址
- 因为这个点分十进制四个大数字太难记住,但是像
- 服务器端口号就是对应着Socket编程的端口号,HTTP的默认端口号一般固定为80,不允许更改
- 带层次的文件路径,
/
与系统并不同,他表示的是网络根目录,下一篇我们会讲 - 在
?
之后的是传递的参数
HTTP报文
无论是客户端服务器(CS)还是浏览器服务器(BS)
都是通过报文传递信息的,我们将其分为请求报文和响应报文
请求报文可以在服务器端完整收到,而响应报文可以通过telnet或者wireshark等抓包工具拿到
请求报文
这里我们写了一个简单的程序,获得了请求的报文,是长这个样子的
虽然看起来很乱,但是可以分为三个部分,请求行,报头,空行,正文
第一行就是请求行,主要有三个内容,第一个是请求方法,这里我们看到是GET,其实还有别的方法,第二个是url,第三个是版本,有1.0短连接,1.1长连接和2.0
第二部分就是各种属性值了,用键值对表示
前两部分其实才是真正的全部报头,用空行来跟正文进行分割
正文部分是可有可无的
响应报文
我们可以看到这个响应报文也是类似的结构
首行是版本号+状态码+状态码解释
状态码就是我们熟悉的类似404
Header就是属性值,后面就是报文的主体