Linux网络——HTTP协议详解(1)

671 words

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等抓包工具拿到

请求报文

这里我们写了一个简单的程序,获得了请求的报文,是长这个样子的

img

虽然看起来很乱,但是可以分为三个部分,请求行,报头,空行,正文

第一行就是请求行,主要有三个内容,第一个是请求方法,这里我们看到是GET,其实还有别的方法,第二个是url,第三个是版本,有1.0短连接,1.1长连接和2.0

第二部分就是各种属性值了,用键值对表示

前两部分其实才是真正的全部报头,用空行来跟正文进行分割

正文部分是可有可无的

响应报文

image.png

我们可以看到这个响应报文也是类似的结构

首行是版本号+状态码+状态码解释

状态码就是我们熟悉的类似404

Header就是属性值,后面就是报文的主体

Comments