BS通信

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了BS通信相关的知识,希望对你有一定的参考价值。

解析HTTP协议

基本的Web应用程序的组成部分:

  • web服务器:接收客户端请求,然后向客户端返回一些结果
  • web客户端浏览器:允许用户请求服务器上的某个资源,并且向用户显示请求的结果
  • HTTP协议:web客户端和服务器之间通信所用的协议
  • 静态html文件:用于告诉浏览器怎样想用户显示内容

HTTP协议是一种超文本传输协议(HyperText Transfer Protocol),是一套计算机在网络中通信的规则。

浏览Web时,浏览器通过HTTP协议与WEB服务器交换信息,Web服务器向web浏览器返回的文件都有与之相关的类型,这些信息类型的格式有MIME(Multipurpose Internet Mail Extensions)定义

MIME类型就是设定某种扩展名的文件用一种应用程序来打开的方式类型,当该扩展名文件被访问的时候,浏览器会自动使用指定应用程序来打开

发送请求信息

一旦建立了TCP连接,Web浏览器就会想Web服务器发送请求命令。HTTP协议将来自客户端的请求信息封装成HTTP请求,它包括请求行、请求头、消息体、以及分隔请求头和消息体的一个空行

1) 请求行

请求行是一个ACALL文本行,由三个标记组成:请求的HTTP方法、请求的URLHTTP版本,中间用空格分开。例如:GET /lovobook/index.html HTTP/1.0

在HTTP版本1.1中定义了有八种可能的HTTP请求方法

  • GET:用于向服务器检索资源
  • POST:用于向服务器发送数据,并要求指定的URI处理
  • HEAD:与GET方法相同,服务器值返回状态行和头标,并不返回请求文档
  • PUT:请求服务器保存请求数据作为指定URI新内容
  • DELETE:请求服务器删除URI中命名的资源
  • OPTIONS:请求关于服务器支持的请求方法信息
  • TRACE:请求Web服务器反馈HTTP请求和其头标
  • CONNECT:已文档化当当前未实现的一个方法,预留做隧道处理

在这些方法中我们最常用的是GET和POST方法,其它几种方法对于Web开发者来说不是很有用。GET方法用于向服务器检索信息,它可以以查询字符串的形式提供有限长度的数据。但是,GET方法却不能发送大量的信息。很多WEB服务器会限制完整URL的长度为255个字符,超过这个长度的信息通常被忽略了。因此,GET方法适合发送我们不介意在URL中可见的少量信息。此外,GET方法只能用在一个Web应用程序中执行查询,而不能用于执行更新。

以下方式的HTTP请求为GET方法

  • 在浏览器地址栏输入URL
  • 在当前网页点击HTML链接
  • HTML表单中设置表单的method=’get’,并提交表单:
  • HTML表单中没有设置表单的method属性,提交表单(不设置method属性,默认为get方法)

POST方法用于向服务器发送数据,并要求制定的URI处理。与GET方法类似,POST方法也可以有查询字符串,但是POST方法用完全不同的机制传递信息。POST方法可以将无限制数量的数据作为HTTP请求的一部分,通过套接字连接发送。数据不会作为URL的一部分出现,而且只发送一次。因此,POST方法通常被用于发送敏感信息或者上传文件。如果一个应用程序需要修改数据或添加数据,并且通过HTTP发送请求,那么就应该使用POS

2)请求头

HTTP协议使用HTTP头来传递请求的元信息。HTTP头是一个用冒号分隔的名称/值对,冒号前面是HTTP头的名称,后面是HTTP头的值。常见的请求头有用户代理资料、可以接受的格式、语言以及内容编码,这些信息用于告诉服务器客户端是什么,客户端想要得到什么格式的回馈信息等

3)空行

发送回车符合退行,通知服务器不在有请求头

4)消息体

HTTP请求中带有查询字符串时,如果是GET方法,查询字符串或表单数据附在请求行中,那么消息体中就没有内容;如果是POST方法,查询字符串或表单数据就添加在消息体中

 

回应响应消息

 

Web服务器解析请求,定位并读取指定的资源,将文件以及其他信息组成HTTP响应返回到客户端。HTTP响应包括:状态行、响应头、消息体以及分隔消息头个响应头的一个空行。

 

1) 状态行

 

每个HTTP响应以一个状态行开头。状态行由HTTP协议版本,响应状态码和响应描述组成,三者之间用空格隔开

 

响应状态码是一个三位的数字,它分为如下几个组:

 

  • 1xx:信息,请求收到,继续处理。
  • 2xx:成功,行为被成功地接受、理解和采纳。
  • 3xx:重定向,为了完成请求,必须进一步执行的动作
  • 4xx:客户端错误,请求包含的语法错误或者请求无法实现
  • 5xx:服务器错误,服务器不能实现一种明显无效的请求

 

每一个响应状态码都有相关联的字符串响应描述。我们经常看到的响应状态码是200,它 表明成功执行,我们得到了一个有效的响应。

 

2)响应头

 

响应头与请求头一样,也是一个用冒号分开的名称/值对,冒号前面是HTTP头的名称,后面是HTTP头的值。典型的响应头包括内容类型描述,内容长度,时间邮戳,服务器信息,内容最后一次响应时间。这些新兴县帮助客户端得到发送过来的的内容是什么,内容的大小、数据是否比前一次响应更新。

 

在响应头中,最重要的HTTP头是Content-type,它指定MIME类型。MIME类型告诉浏览器要接收的数据是什么类型,这样浏览器才知道如何显示这些数据。这个值通常与HTTP请求头中的Accpt相关

 

3)空白行

 

最后一个响应头之后是一个空行,发送回车符合退行,表明以下不再有响应头

 

4)消息体

 

要发送会客户端的HTML文档或其他要显示的内容等。Web服务器把要发送给客户端的文档信息放在消息体中

 

以上是关于BS通信的主要内容,如果未能解决你的问题,请参考以下文章

网络通信协议-基础中的基础

jsp简介以及BS/CS架构

34-网络编程

03.网络编程入门

网络通信名词总结

linux网络编程