当前位置: 首页 > Web前端 > HTML

TCP-IP基础知识总结学习(二)

时间:2023-04-03 00:06:11 HTML

简单的HTTP协议1.HTTP协议用于客户端和服务器之间的通信客户端和服务器的定义:请求访问文本或图片等资源的一端称为客户端端,提供资源响应的一端称为服务器端。两台计算机之间使用HTTP协议进行通信时,通信线路的一端必须是客户端,另一端必须是服务器。2、通过请求和响应的交换来实现:HTTP协议规定请求从客户端发出,最后服务器响应请求并返回。换句话说,必须首先从客户端建立通信,服务器在收到请求后才会发送响应。通信请求和响应示例:1、请求消息中的内容(意思是:请求访问某HTTP服务器上的/index.htm页面资源):GET/index.htmHTTP/1.1Host:hackr.jp。(from行首的GET表示访问服务器的请求类型,称为方法;字符串/index.htm表示请求访问的资源对象,也称为请求URI(request-URI);版本号用于提示客户端使用HTTP协议功能,请求报文由请求方法、请求URI、协议版本、可选的请求头字段和内容实体组成。)2、响应报文中的内容:(HTTPstart行开头的/1.1表示服务器对应的HTTP版本,接下来的200OK表示请求处理结果的状态码(statuscode)和原因短语(reason-phrase),下一行显示创建响应头域的日期和时间是头域中的一个属性,然后用空行分隔,后面的内容称为资源实体的实体体,响应消息基本由协议版本,状态码(代表请求成功或失败的数字代码),一个解释状态码的原因短语,一个可选的响应头域,一个实体主体。)3.HTTP是一个不保存状态的协议:HTTP是一种不保存状态的状态,即无状态(stateless)协议。HTTP协议本身并不保存请求和响应之间的通信状态。作用:为了更快地处理大量事务,保证协议的可扩展性,HTTP协议特意设计得如此简单。局限性:随着Web的不断发展,由于无状态导致业务处理变得棘手的情况越来越多。例如,如果用户登录了一个购物网站,他需要在跳转到该网站的其他页面后仍能保持登录状态。解决方案:虽然HTTP/1.1是无状态协议,但是为了达到想要的状态保持功能,引入了Cookie技术(后面的文章会详细讨论)。有了cookie,再用HTTP协议进行通信,就可以管理状态了。4、请求URI来定位资源:HTTP协议使用URI来定位Internet上的资源。正是由于URI的特定功能,才可以访问Internet上任何地方的资源。图:以http://hackr.jp/index.htm为例请求另外,如果不是访问特定资源而是向服务器本身发出请求,可以使用*代替请求URI.以下示例是查询HTTP服务器支持的HTTP方法类型。五、HTTP方法通知服务器意图1.GET:获取资源GET方法用于请求访问由URI标识的资源。服务器解析指定资源并返回响应内容。也就是说,如果请求的资源是文本,则原样返回;如果是CGI(CommonGatewayInterface,通用网关接口)之类的程序,会返回执行后的输出结果。使用GET方法的请求-响应示例:2.POST:传输实体主体虽然GET方法也可以用于传输实体主体,但一般不用于使用GET方法传输,而是使用POST方法。虽然POST的功能和GET很相似,但是POST的主要目的不是获取响应的主要内容,而是通知响应结果。示例3.使用POST方法的请求和响应的PUT:传输文件就像在FTP协议中上传文件,需要将文件的内容包含在请求消息的主体中,然后保存到由请求URI指定的位置。但是由于HTTP/1.1的PUT方式没有认证机制,任何人都可以上传文件,存在安全问题,所以一般的网站都不会使用这种方式。如果配合Web应用的认证机制,或者类似的架构设计采用REST(REpresentationalStateTransfer)标准的网站,PUT方法可能会开放使用。使用PUT方法的请求和响应示例://Response1其实就是请求执行成功,但是没有返回数据。4.HEAD:获取消息的标题。HEAD方法和GET方法一样,只是不返回消息体。用于确认URI的有效性和资源更新的日期和时间等。使用HEAD方法的请求和响应示例:5.DELETE:删除文件DELETE方法用于删除文件,与此相反放。DELETE方法通过请求URI删除指定的资源。但是HTTP/1.1的DELETE方法本身并没有像PUT方法那样的认证机制,所以一般的网站不会使用DELETE方法。当与Web应用程序的身份验证机制结合使用时,或者当符合REST标准时,它可能仍然可以使用。使用DELETE方法的请求和响应示例:6.OPTIONS:查询支持的方法OPTIONS方法用于查询请求URI指定的资源支持的方法。使用OPTIONS方法的请求和响应示例:7.TRACE:跟踪路径TRACE方法是Web服务器将之前的请求通信环回给客户端的一种方法。发送请求时,在Max-Forwards头域中填入值,每通过一个服务器该数字减1。当值刚好减为0时,停止传输,最后收到请求的服务器返回状态码200OK响应。通过TRACE方法,客户端可以查询发送的请求是如何被修改/篡改的。这是因为连接到源服务器和目标服务器的请求可能会通过代理进行中继,TRACE方法用于确认连接过程中发生的一系列操作。但是TRACE方式不是很常用,容易引起XST(Cross-SiteTracing,跨站跟踪)攻击,所以通常不使用。使用TRACE方法的请求和响应示例:8.CONNECT:需要隧道协议连接到代理。CONNECT方法在与代理服务器通信时需要建立隧道,使用隧道协议实现TCP通信。它主要使用SSL(SecureSocketsLayer,安全套接字层)和TLS(TransportLayerSecurity,传输层安全)协议对通信内容进行加密,通过网络隧道传输。CONNECT方法的格式如下。使用CONNECT方法的请求和响应示例:总结:5.持久连接节省流量1.短连接:在HTTP协议的初始版本中,每次HTTP通信都必须断开一个TCP连接。2、持久连接的特点是:只要任一端没有明确提出断开连接,就会保持TCP连接状态。持久连接的好处:减少TCP连接重复建立和断开带来的开销,减轻服务器端的负载。另外,减少花在开销上的时间可以使HTTP请求和响应更早结束,从而相应地提高网页的显示速度。3.流水线:持久连接使得大多数请求以流水线方式发送成为可能。之前发送过一个请求后,需要等待收到响应后才能发送下一个请求。随着管道技术的出现,可以直接发送下一个请求,无需等待响应。另一方面,流水线比持久连接更快。请求次数越多,时间差异越明显。六、Cookie技术1、引入原因:HTTP协议保留了无状态协议的特点,同时又解决了类似的矛盾,因此引入了Cookie技术。2、工作原理:Cookie技术通过在请求和响应消息中写入cookie信息来控制客户端的状态。cookie会根据slave发送的响应报文中一个名为Set-Cookie的头域信息通知客户端保存cookie。客户端下次向服务器发送请求时,客户端会自动在请求报文中添加Cookie值并发送出去。服务器找到客户端发送的cookie后,会查看是哪个客户端发送的连接请求,然后比对服务器上的记录,最后得到之前的状态信息。3、图例:Cookie交互的场景:HTTP请求报文和响应报文内容如下: