关于HTTP协议及SOCKET通信
Posted 吴号虎
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于HTTP协议及SOCKET通信相关的知识,希望对你有一定的参考价值。
一.HTTP
1.报文结构
HTTP:超文本传输协议,报文分为请求报文和响应报文。
2.端口(tomcat端口)
http在熟知的80端口使用TCP的服务;tomcat的默认端口是8080
3.状态码含义
5.get和post方法
get是最简单的一种请求,其主要功能是从服务器端获取用户所需资源,并将其作为响应返回给客户端,这些资源可以是html页面,图片,文档等内容中的任何一种,但需要注意的是,get方法主要用来获取服务器端资源信息,就如同数据库中查询操作一样,不会影响到自身的状态,删除,修改,新增资源都是不允许的。但post不仅能够从服务器端获取资源,还可以想服务器端上传资源。采用get方法上传文件,数据量非常小,而且URL跟数据之间是采用“?”连接的,不安全。POST方法向服务器提交的内容在URL中并没有明文显示,对用户是不可见的。所以安全性高。
6.http head的各个特点和区别
7.http request的几种类型
8.http1.1和http1.0的区别
HTTP 1.0规定浏览器与服务器只保持短暂的连接,浏览器的每次请求都需要与服务器建立一个TCP连接,服务器完成请求处理后立即断开TCP连接,服务器不跟踪每个客户也不记录过去的请求。HTTP 1.1支持持久连接,在一个TCP连接上可以传送多个HTTP请求和响应,减少了建立和关闭连接的消耗和延迟。HTTP 1.1还允许客户端不用等待上一次请求结果返回,就可以发出下一次请求,但服务器端必须按照接收到客户端请求的先后顺序依次回送响应结果,以保证客户端能够区分出每次请求的响应内容,这样也显著地减少了整个下载过程所需要的时间。HTTP 1.0不支持Host请求头字段,HTTP 1.1中增加Host请求头字段后,WEB浏览器可以使用主机头名来明确表示要访问服务器上的哪个WEB站点,这才实现了在一台WEB服务器上可以在同一个IP地址和端口号上使用不同的主机名来创建多个虚拟WEB站点。HTTP 1.1还提供了与身份认证、状态管理和Cache缓存等机制相关的请求头和响应头。
9. 页面请求的工作流程
*1用户通过浏览器输入链接的地址来请求所需的资源,浏览器接受用户的请求,并把该请求组装成指定的格式发送给服务器端,客户端与服务器端之间通过HTTP来完成具体的交互。其中请求的数据流中主要包含HTTP请求方法(get和post),请求的网址(URL,统一资源定位符)以及请求的一些参数。
*2服务器收到客户端发来的请求,并查找用户所需要的资源。
*3服务器查找到用户请求的资源后,把该资源返回给客户端
*4服务器通过把响应消息组装成特定的消息格式后返回给客户端,这个过程通过HTTP来完成。响应的数据流主要包含状态编码(代表请求成功或者失败),content-type(text,picture、html),响应消息的内容(图片或者html格式的内容)
*5浏览器对html进行解析,并把响应结果展现给客户
10.http怎么处理长连接(轮询)
http 长轮询:
http 长轮询是服务器收到请求后如果有数据, 立刻响应请求; 如果没有数据就会 hold 一段时间, 这段时间内如果有数据立刻响应请求; 如果时间到了还没有数据, 则响应 http 请求;浏览器受到 http 响应后立在发送一个同样 http 请求查询是否有数据;
http 长轮询的局限:
- 浏览器端对统一服务器同时 http 连接有最大限制, 最好同一用户只存在一个长轮询;
- 服务器端没有数据 hold 住连接时会造成浪费, 容易产生服务器瓶颈;
http 短轮询:
http端轮询是服务器收到请求不管是否有数据都直接响应 http 请求; 浏览器受到 http 响应隔一段时间在发送同样的 http 请求查询是否有数据;
http 短轮询的局限是实时性低;
两者相同点:
可以看出 http 长轮询和 http 短轮询的都会 hold 一段时间;
两者不同点
间隔发生在服务端还是浏览器端: http 长轮询在服务端会 hold 一段时间, http 短轮询在浏览器端 “hold” 一段时间;
11.主流的web服务器有哪些
apache,IBM websephertomcat,tomcat,微软的IIS
二.HTTPS(443端口)
http+ssl(secure socket layout)
更多https的加密解密:http://www.cnblogs.com/chyingp/p/https-introduction.html
不能单独用公私钥加密,还得用CA签名
三.cookie和session
cookie是客户端保持状态的一种方案,而session机制采用的是服务器端保持状态的方案。cookie分发是通过扩展http协议来实现的,服务器通过在http的响应头中加上一行特殊的指示以提示浏览器按照指示生成相应的cookie。 session机制的话,服务器使用一种类似于散列表的结构(可能就是散列表)来保存信息。当程序需要为某个客户端的请求创建一个session时,服务器首先检查这个客户端的请求里是否已经包含了session的标识(session ID),如果已包含则说明以前已经为此客户端创建过session,服务器就按照这个session ID检索这个session,检索不到,就会创建一个。
总结:1.cookie数据存在在客户的浏览器上,session的数据放在服务器上。2.cookie不是很安全,别人可以分析存放在本地的cookie并进行cookie欺骗,考虑到安全应当使用session。3.session会在一定时间内保存在服务器上。当访问增多时,会比较占用你的服务器的性能,考虑到减轻服务器性能方面,应当使用cookie。4.单个cookie保存的数据不能超过4K,很多浏览器都限制一个站点最多保存200个cookie。5.综上,登录信息保存在session,其他的如需保留,放cookie里。
四.socket通信
1.socket通信的几个关键函数
socket(创建一个用于通信的套接字)
closesocket(关闭套接字,套接字描述符是参数)
bind(当创建一个SOCKET以后,套接字数据数据中有一个默认的IP地址和默认的端口)。一个服务程序必须调用bind函数来给其绑定一个IP地址和一个特定的端口号。
listen(服务程序可以调用Listen函数使其套接字处于监听状态)
accept(调用accept函数从处于监听状态的流套接字的客户连接请求队列中取出排在最前的一个客户请求,并且创建一个新的套接字创建连接通道)
connect(客户程序调用connect函数来使客户套接字描述符与name所指定的计算机的特定端口上的服务socket进行连接)
send(客户端用来发送请求, 服务器端用来发送应答)
recv(客户端服务器用来接收数据)
2.http与socket的区别
http:简单对象访问,对用于应用层,http协议是基于TCP连接的,http连接是短连接
socket是对TCP/IP协议的封装,本身并不是一个协议,而是一个调用接口,通过socket,才能使用TCP/IP协议;socket是长连接,理论上一旦连接建立起连接就不主动断掉。
五.DNS
1.DNS劫持,怎么预防?
DNS劫持又称域名劫持,是指在劫持的网络范围内拦截域名解析的请求,分析请求的域名,把审查范围以外的请求放行,否则返回假的IP地址或者什么都不做使请求失去响应,其效果就是对特定的网络不能反应或访问的是假网址。
对付DNS劫持,只需要把系统的DNS设置手动切换为国外的DNS服务器的IP地址即可解决。
2.DNS污染,怎么预防?
DNS污染是指一些刻意制造或无意中制造出来的域名服务器分组,把域名指往不正确的IP地址。
对于DNS污染,一般除了使用代理服务器和VPN之类的软件之外,并没有什么其它办法。但是利用我们对DNS污染的了解,还是可以做到不用代理服务器和VPN之类的软件就能解决DNS污染的问题,从而在不使用代理服务器或VPN的情况下访问原本访问不了的一些网站。当然这无法解决所有问题,当一些无法访问的网站本身并不是由DNS污染问题导致的时候,还是需要使用代理服务器或VPN才能访问的。
以上是关于关于HTTP协议及SOCKET通信的主要内容,如果未能解决你的问题,请参考以下文章