[计算机网络]http协议学习

版权声明:https://blog.csdn.net/qq_36659627 https://blog.csdn.net/qq_36659627/article/details/85251854

今天学了下http协议,总结了以下几个问题。

1. 什么是http协议

  • http协议是基于TCP/IP通信协议来传递数据。
  • http协议又叫超文本传输协议,是万维网服务器传输超文本到本地浏览器的协议。

2. URI,URL和URN的理解。

首先我们来看下面这张图:
关系图.png从这张图中很容易看出它们的关系。

1.URI包括了URN和URL。
2.URL和URN都是URI的一种,但URI却不一定是它们。

看到一个很贴切的比喻,我们把URI比作人,URN就是人的名字,URL就是人的地址。

  • 也就是说URN确定了人的身份。有了名字,就算地址换了我们也能找到这个人。
  • URN提供了找到人的地址。但一旦地址换了我们可能就找不到这个人了。
  • 换句话说:URN和URL的区别就是,URN与资源的位置无关,当某个URN标识的资源在位置发生变化时,其URI可以保持不变。

URI,URL,URN的定义:

URI:

Uniform Resource Identifier,即统一资源标志符,用来唯一的标识一个资源。

URL:

Uniform Resource Locator,统一资源定位符。即URL可以用来标识一个资源,而且还指明了如何locate这个资源。(能知道这个资源的位置)

URN:

Uniform Resource Name,统一资源命名。即通过名字来表示资源的。
参考文章:

3.http中的request和response

request包和response包

http中resquest和response是对应的。

request中有请求行,请求头部,空行,和主体
response中有状态行,消息报头,空行,响应正文

用burpsuite抓的包

1.GET /osjson.aspx?query=%E9%AB%98%E6%9C%A8%E5%90%8C%E5%AD%A6&form=OSDJAS&language=zh-CN HTTP/1.1
2.Host: www.bing.com
3.User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:63.0) Gecko/20100101 Firefox/63.0
4.Accept: */*
5.Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
6.Accept-Encoding: gzip, deflate
7.Connection: close
8.
  • 1是请求行,请求类型为GET,使用的是HTTP/1.1版本
  • 2~7是请求头部
  • 8是空行
  • 这个request包没有主体
1.HTTP/1.1 302 
2.Cache-Control: private
3.Content-Length: 208
4.Content-Type: text/html; charset=utf-8
5.Location: https://cn.bing.com/osjson.aspx?query=%E9%AB%98%E6%9C%A8&form=OSDJAS&language=zh-CN
Vary: Accept-Encoding
6.Set-Cookie: SNRHOP=TS=636798042541327291&I=1; domain=.bing.com; path=/
X-MSEdge-Ref: Ref A: 195BE0810738433CA3E8475AD27BBC3C Ref B: BJ1EDGE0214 Ref C: 2018-12-07T18:30:49Z
Date: Fri, 07 Dec 2018 18:30:48 GMT
7.Connection: close
8.
9.<html><head><title>Object moved</title></head><body>
10.<h2>Object moved to <a href="https://cn.bing.com/osjson.aspx?query=%E9%AB%98%E6%9C%A8&amp;form=OSDJAS&amp;language=zh-CN">here</a>.</h2>
12.</body></html>
  • 1.是状态行,状态码为302,协议版本是HTTP/1.1
  • 2~7是消息报头
  • 8是空行
  • 9~11是响应正文

HTTP中的一些请求方式

  • GET 请求指定的页面信息,并返回实体主体。
  • HEAD 类似于get请求,只不过返回的响应中没有具体的内容,用于获取报头
  • POST 向指定资源提交数据进行处理请求(例如提交表单或者上传文件)。
  • PUT 从客户端向服务器传送的数据取代指定的文档的内容。
  • DELETE 请求服务器删除指定的页面。
  • CONNECT HTTP/1.1协议中预留给能够将连接改为管道方式的代理服务器。
  • OPTIONS 允许客户端查看服务器的性能。
  • TRACE 回显服务器收到的请求,主要用于测试或诊断。

4.HTTP中的状态码

状态码是当浏览器发送请求时,网页所在服务器返回的一个信息头。

状态代码有三位数字组成,第一个数字定义了响应的类别,共分五种类:

  • 1xx:指示信息–表示请求已接收,继续处理
  • 2xx:成功–表示请求已被成功接收、理解、接受
  • 3xx:重定向–要完成请求必须进行更进一步的操作
  • 4xx:客户端错误–请求有语法错误或请求无法实现
  • 5xx:服务器端错误–服务器未能实现合法的请求
常见的HTTP状态码
  • 200 OK //请求成功。一般用于GET与POST请求
  • 400 Bad Request //客户端请求的语法错误,服务器无法理解
  • 401 Unauthorized //请求要求用户的身份认证
  • 403 Forbidden //服务器收到请求,但是拒绝提供服务
  • 404 Not Found //请求资源不存在,eg:输入了错误的URL
  • 500 Internal Server Error //服务器发生不可预期的错误
  • 503 Server Unavailable //服务器当前不能处理客户端的请求,一段时间后可能恢复正常
    参考文章:
    http://www.cnblogs.com/ranyonsue/p/5984001.html
    https://www.cnblogs.com/wuyun-blog/p/5706703.html

猜你喜欢

转载自blog.csdn.net/qq_36659627/article/details/85251854