简单的网站怎样做,游戏怎么做充值网站,建设工程项目管理中心,手机建立网站application像我们电脑和手机使用的应用软件就是在应用层写的#xff0c;当我们的数据需要传输的时候换将数据传递到传输层。 应用层专门给用户提供应用功能#xff0c;比如HTTP,FTP…
我们程序员写的一个个解决我们实际的问题都在应用层#xff0c;我们今天来聊一聊HTTP。
协议
协议…像我们电脑和手机使用的应用软件就是在应用层写的当我们的数据需要传输的时候换将数据传递到传输层。 应用层专门给用户提供应用功能比如HTTP,FTP…
我们程序员写的一个个解决我们实际的问题都在应用层我们今天来聊一聊HTTP。
协议
协议是双方约定好的东西在我们的客户端将数据结构化的数据传送给服务端的时候要先将数据进行序列化即将结构化的数据变成字节流服务端得到字节流的数据然后将字节流的数据反序列化变成结构化的数据进行处理。 这里我们传送过去的数据格式就是协议。 这是双方约定好的
我们先来看一看HTTP请求报文的图片 我们先来认识一下URL
URLENCODE和URLDECODE
像/ ? : 等这样的字符已经被url当做特殊的字符特殊处理了。
转移的规则如下
将需要转码的字符转为16进制然后从有到左取4位每2位做一位前面加上%编码成为%XY的格式 这是我得到的HTTP请求的格式。 首行: [方法] [url] [版本]
Header: 请求的属性, 冒号分割的键值对;每组属性之间使用\n分隔;遇到空行表示Header部分结束
Body: 空行后面的内容都是Body. Body允许为空字符串. 如果Body存在, 则在Header中会有一个 Content-Length属性来标识Body的长度;
可以注意到请求行中出现了 / 其实这就是我们搜索的时候我们向要从服务端那里拿到什么样的资源。
我先来聊一聊请求的方法 GET是从服务器获取指定的资源。如图片、音频、视频等等 POST是根据请求报文对指定的资源做出处理。
其中GET、POST方法是最常见的我们要知道HTTP是以明文传输的所以GET和POST方法的就在于POST比GET更加私密。注意私密 安全其实GET和POST都是不安全的当我们在一个网页输入信息的时候我们输入的信息会出现在URL中而POST不会出现所以POST更加私密。
但是通过FIddler抓包我们发现可以我们输入的信息出现在了正文中其实也是可以被中间截获的。
协议版本 我们现实中都在使用手机即使使用的同一个手机我们手机的版本也可能是不一样的当我们需要去获取资源的时候服务端会根据你版本的高低来判断你是否可以获取到这个资源。 如果出现了一个新的功能你想使用但是你版本不满足他们更新后才有的功能这时你需要更新版本。
HTTP常见的Header
Content-Type: 数据类型(text/html等)Content-Length: Body的长度Host: 客户端告知服务器, 所请求的资源是在哪个主机的哪个端口上;User-Agent: 声明用户的操作系统和浏览器版本信息;referer: 当前页面是从哪个页面跳转过来的;location: 搭配3xx状态码使用, 告诉客户端接下来要去哪里访问;一般用于重定向的时候Cookie: 用于在客户端存储少量信息. 通常用于实现会话(session)的功能;
HTTP的响应报头 可以看到是一一对应的 以下是我的解析
首行: [版本号] [状态码] [状态码解释]Header: 请求的属性,冒号分割的键值对;每组属性之间使用\n分隔;遇到空行表示Header部分结束Body: 空行后面的内容都是Body. Body允许为空字符串. 如果Body存在, 则在Header中会有一个Content-Length属性来标识Body的长度; 如果服务器返回了一个html页面, 那么html页面内容就是在body中.
HTTP的状态码
「200 OK」是最常见的成功状态码表示一切正常。「302 Found」表示临时重定向说明请求的资源还在但暂时需要用另一个 URL 来访问。「404 Not Found」表示请求的资源在服务器上不存在或未找到所以无法提供给客户端。「304 Not Modified」不具有跳转的含义表示资源未修改重定向已存在的缓冲文件也称缓存重定向也就是告诉客户端可以继续使用缓存资源用于缓存控制。…
如果想了解具体的状态码可以去看看下面的这篇文章。 HTTP状态码和原因短语详情