学习笔记之开发相关概念(10)--网络相关

一、HTTP协议

Http协议(Hyper Text Transfer Protocol)严格规定了Http请求和Http响应的数据格式,是用于客户端和服务器端通信的无状态通信协议。

HTTP报文格式:

HTTP请求
HTTP请求的格式:请求行+请求首部(+空行+请求体)

下面是一个典型的使用GET方法的HTTP请求
GET /test/a/demo.jsp?name_1=value_1& name_2= value_2 HTTP/1.1
Host: www.baidu.com
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US;rv:1.7.6)
Gecko/20050225 Firefox/1.0.1
Connection: Keep-Alive

下面是一个典型的使用POST方法的HTTP请求
POST /test/a/demo.jsp  HTTP/1.1
Host: www.baidu.com
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US;rv:1.7.6)
Gecko/20050225 Firefox/1.0.1
Connection: Keep-Alive
Accept:xxx

name_1=value_1& name_2= value

HTTP响应
HTTP请求的格式:状态行+响应首部+空行+响应体

下面是一个典型的HTTP响应
HTTP/1.1  200 OK
Date: Sat, 31 Dec 2005 23:59:59 GMT
Content-Type: text/html;charset=ISO-8859-1
Content-Length: 122

<html>
<head>
<title>title</title>
</head>
<body>
<!-- body goes here -->
</body>
</html>

二、WebSocket协议

Websocket是基于HTTP协议的(借助一次HTTP请求响应建立连接),也是一种用于客户端和服务器端通信的通信协议。主要特点就是支持全双工通信!主要作用就是实现实时消息传递,优于轮询与长轮询。

轮询就是每隔一段时间发一次ajax请求,如:
客户端:来了吗?
服务器端:没有!
客户端:来了吗?
服务器端:没有!!

长轮询和轮询差不多,区别就是阻塞式的,如
客户端:来了吗?
服务器端:(一直查找,直到有了才响应)。。。。。有了
客户端处理完响应继续发请求(注意和轮询不一样,轮询是定时发)

面试题:

1.url和uri的区别?

答:uri--uniform resource identifier--统一资源标识符,就是能在某规则下把资源独一无二地标识出来,比如我们能通过身份证号确定到某个人,那身份证号就是一种uri。url--uniform resource locator--统一资源定位符,比如动物住址协议://地球/中国/浙江省/杭州市/西湖区/某大学/14号宿舍楼/525号寝/张三.人,也能确定到某个人。可以说url是以定位方式实现的uri,url是uri的子集。

2.代理、网关和隧道的区别?

答:代理服务器的基本行为就是接收客户端请求转发给其他服务器,每次转发会追加写入Via首部中。网关和代理作用十分相似,经过网关也会追加写入Via首部中,但网关能使通信线路上的服务器提供非HTTP服务。隧道是一条与其他服务器的通信线路,可使用SSL等加密手段进行通信(通过80端口在HTTP报文中传输ssl流量),其目的是确保客户端能与服务器进行安全通信。

3.常用的首部?

答:通用:Cache-Control、Connection、Via、DATE、Content-Type(实体)、Content-Length(实体)

      请求:Accept、Authorization、HOST、User-Agent、Cookie

      响应:Location(配合302重定向使用)、Server、Set-Cookie

4.常见状态码?

答:200 OK--成功

       204 No-Content--成功,但无内容可返回

       3xx--重定向

       400 bad request--请求中存在语法错误

       401 unauthorized--认证失败

       403 forbidden--请求某资源被拒绝

       404 not found--未找到资源

       500 internal server error--服务端代码报错

       503 service unavailable--服务器超负载或维护中

5.http和https区别?

答:http报文是明文的,不安全,8-0端口。HTTPS就是在HTTP的基础上加入了SSL协议,SSL依靠证书来验证服务器的身份,并为浏览器和服务器之间的通信加密,443端口。HTTPS通信过程:

(1)客户使用https的URL访问Web服务器,要求与Web服务器建立SSL连接。

  (2)Web服务器收到客户端请求后,会将网站的证书信息(证书中包含公钥)传送一份给客户端。

  (3)客户端的浏览器与Web服务器开始协商SSL连接的安全等级,也就是信息加密的等级。

  (4)客户端的浏览器根据双方同意的安全等级,建立会话密钥,然后利用网站的公钥将会话密钥加密,并传送给网站。

  (5)Web服务器利用自己的私钥解密出会话密钥。

  (6)Web服务器利用会话密钥加密与客户端之间的通信。

HTTPS优点:安全。缺点:费时且缓存没有HTTP高效。

6.三次握手四次挥手是什么?

答:三次握手是建立TCP连接的过程:

首先Client端发送连接请求报文,Server段接受连接后回复ACK报文,并为这次连接分配资源。Client端接收到ACK报文后也向

Server段发生ACK报文,并分配资源,这样TCP连接就建立了。


四次挥手是断开TCP连接的过程

【注意】中断连接端可以是Client端,也可以是Server端。

假设Client端发起中断连接请求,也就是发送FIN报文。Server端接到FIN报文后,意思是说"我Client端没有数据要发给你了",但是如果你还有数据没有发送完成,则不必急着关闭Socket,可以继续发送数据。所以你先发送ACK,"告诉Client端,你的请求我收到了,但是我还没准备好,请继续你等我的消息"。这个时候Client端就进入FIN_WAIT状态,继续等待Server端的FIN报文。当Server端确定数据已发送完成,则向Client端发送FIN报文,"告诉Client端,好了,我这边数据发完了,准备好关闭连接了"。Client端收到FIN报文后,"就知道可以关闭连接了,但是他还是不相信网络,怕Server端不知道要关闭,所以发送ACK后进入TIME_WAIT状态,如果Server端没有收到ACK则可以重传。“,Server端收到ACK后,"就知道可以断开连接了"。Client端等待了2MSL后依然没有收到回复,则证明Server端已正常关闭,那好,我Client端也可以关闭连接了。Ok,TCP连接就这样关闭了!



7.post get区别

答:1.用途  获取信息和传输数据

2.提交数据长度限制 1-2K和2M

3.携带参数方式 url后和请求体

4.能否缓存 能和不能

5.参数会被保存在浏览器历史中(不安全) 会和不会

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值