设为首页 加入收藏

TOP

网络协议基础(一)
2019-09-02 23:33:22 】 浏览:38
Tags:网络 协议 基础

HTTP: 

HTTP 是属于应用层的面向对象的 ,  由于其简捷,快速的方式,适用于分布式超媒体系统 。  
协议主要 特点 : 
基于请求与响应模式的, 无状态的,应用层的协议,常基于TCP的连接方式。
1, 支持客户端服务器模式。
2 ,  简单快速,客户向服务器请求服务时,请求方法常用的有GET,POST。 每种方法规定了客户和服务器联系的类型不同。HTTP 协议简单,所以HTTP服务器的程序规模小,因而通信速度很快。
3, 灵活 :HTTP 允许传输任意类型的数据对象。正在传输的类型由Content-Type 加以标记
4,  无连接: HTTP  状态协议是无状态协议,是指协议对于事物处理没有记忆能力,缺少状态意味着如果后续处理需要前面的信息,则它必须重传,这样可能导致每次连接传送的数据量增大,另一方面,在服务器不需要先前信息时,他的应答就比较快。
5 ,明文传输
协议 请求
http请求由三部分组成,分别是:请求行、消息报头、请求正文
请求行以一个方法符号开头,以空格分开,后面跟着请求的URI和协议的版本,格式如下:Method Request-URI HTTP-Version CRLF  
请求方法 所有的
GET     请求获取Request-URI所标识的资源
POST    在Request-URI所标识的资源后附加新的数据
HEAD    请求获取由Request-URI所标识的资源的响应消息报头
PUT     请求服务器存储一个资源,并用Request-URI作为其标识
DELETE  请求服务器删除Request-URI所标识的资源
TRACE   请求服务器回送收到的请求信息,主要用于测试或诊断
CONNECT 保留将来使用
OPTIONS 请求查询服务器的性能,或者查询与资源相关的选项和需求
 
 协议响应 
在接收和解释请求消息后,服务器返回一个HTTP响应消息。
HTTP响应也是由三个部分组成,分别是:状态行、消息报头、响应正文
HTTP-Version Status-Code Reason-Phrase CRLF
其中,HTTP-Version表示服务器HTTP协议的版本;Status-Code表示服务器发回的响应状态代码;Reason-Phrase表示状态代码的文本描述。
状态代码有三位数字组成,第一个数字定义了响j应的类别,且有五种可能取值:
1xx:指示信息--表示请求已接收,继续处理
2xx:成功--表示请求已被成功接收、理解、接受
3xx:重定向--要完成请求必须进行更进一步的操作
4xx:客户端错误--请求有语法错误或请求无法实现
5xx:服务器端错误--服务器未能实现合法的请求
常见状态代码、状态描述、说明:
200 OK      //客户端请求成功
400 Bad Request  //客户端请求有语法错误,不能被服务器所理解
401 Unauthorized //请求未经授权,这个状态代码必须和WWW-Authenticate报头域一起使用 
403 Forbidden  //服务器收到请求,但是拒绝提供服务
404 Not Found  //请求资源不存在,eg:输入了错误的URL
500 Internal Server Error //服务器发生不可预期的错误
503 Server Unavailable  //服务器当前不能处理客户端的请求,一段时间后可能恢复正常。
 
HTTP  Cookie 和 Session
Cookie: 
如我们在网上购物的时候, 开始的时候先登录,然后选中商品加入到自己的购物车-其在客户单与服务器端的动作如下: 
客户端—–(request:包含登录信息)——->服务器端 
客户端<—(response:登录成功与否)——-服务器端 
客户端—–(request:购物车里的信息)—–>服务器端 
客户端<—(response:添加成功与否)—— -服务器端 
这里关键是在第二次请求加入购物车的时候,因为客户端请求服务端是一种无状态的连接,那么服务器端怎么知道是谁,以及加入到谁的购物车。 
解决的方式就是request到达服务器端的时候,服务器给在response中加一个“小饼干”,这个“小饼干”中就包含用户登录时候的一些基本的信息。当第二次客户端发起请求的时候,服务端检查到这个“小饼干”,据此识别出客户端,并进行相应的操作。而这个所谓的“小饼干”就是Cookie,持有这个小饼干的是客户端-即客户端保存中数据。
 
Session: 
Cookie方法的是把数据保存在客户端,而Session是把数据保存在服务器,而客户端具有一个唯一的ID. 
小例子与上述一样,只是在两个类的处理方法的时候用到的是Session.
二者比较:
相同点:
cookie与session都是用来跟踪浏览器用户身份的会话方式。
不同点:
总的来说,cookie是采取的客户端保状态的会话方式,而session采取的是服务器保持状态的会话方式。
采用session的会话方式,用户量大时,因为数据保存在服务器,其服务器压力毫无疑问会比较大。还有其他的一些不同,如二者的存取方式等。
 
浏览器与服务器的数据交互过程:

 

Java 程序模拟
1 ,模拟GET 请求
 1 public static void main(String[] args) {
 2 //目标URL
 3 String urlPath = "http://192.168.11.44/Agileone_1.2/index.php";
 4 //创建URL对象,对URL信息进行封装
 5 try {
 6 URL url = new URL(urlPath);
 7 //通过URL对象获取HttpUrlConnection对象
 8 HttpURLConnection httpURL = (HttpURLConnection)url.openConnection();
 9 //设置连接参数,可省
10 //建立连接,tcp连接建立
11 httpURL.connect();
12 //获取输入流
13 InputStream is = httpURL.getInputStream();
14 BufferedInputStream bi = new BufferedIn
首页 上一页 1 2 3 下一页 尾页 1/3/3
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇告别复杂的流关闭 下一篇Java基础学习-一切皆为对象

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目