1.TCP/IP是什么?
TCP/IP是一组协议的代名词,该协议簇分为四层:应用层 、 传输层 、 互联网络层 、 网络接口层。
每层的网络协议内容:
应用层:电子邮件传输(smtp)文件传输协议(FTP)网络远程访问协议(Telnet)
传输层:传输控制协议(TCP)用户数据报协议(udp)
互联网络层:网际协议(IP)
网络接口层:
(TCP位于协议簇的第3层,OSI的第4层,IP位于协议簇的第2层,OSI的第3层)
2.OSI是什么?
开放式系统互联参考模型,为了解决异种网络互联时所遇到的兼容性问题。
7层内容:应用层 、 表示层 、 会话层 、 传输层 、 网络层 、 数据链路层 、 物理层
3.url完成加载经历了什么?
●DNS Lookup 先获得URL对应的IP地址(DNS服务器就像一个电话号码薄,根据你说的人名找到对应的号码)
●Socket Connect 浏览器和服务器建立TCP链接建立(socket链接是ip和端口的建立)
●Send Request 发送HTTP请求
●Content Download 服务器发送响应
经过DNS域名解析后获得url对应的IP地址,然后通过获取的的ip和端口建立一个socket链接,此时开始向服务器发送一个get和post请求
在tcp协议提供可靠的链接,,tcp经过三次握手建立一个链接
第一次握手:客户端发送一个syn包到服务器,并进入syn_send状态,等待服务器的确认。
第二次握手:服务器收到syn包,必须确认客户的syn包,同时给自己发送一个syn包,此时服务器进入syn_recv状态
第三次握手:客户端与服务器开始传送数据
web服务器传送一些http头信息,然后传送具体信息。4.如何将数据库的数据显示在网页上?又如何将前台的数据(加以验证后) 存储到数据库中?
通过js获取DOM(文档对象模型)获取页面控件上的内容:例如getElementById,getElementByName...
通过ajax选择请求的方式,回掉函数判断传输的内容是否正确,通过json对象的形式传送给后台。
同理 后台获取的json数据,进行解析,通过截取字符串显示在前台的控件上。
5.url的请求方式(向服务器发送请求的方式get/set)
url请求过程中,经过DNS域名解析后,获得域名对应的ip地址,在建立ip和端口之间的socket链接,经过tcp的三次握手,建立了浏览器和服务器之间的链接,链接建立后,开始向web服务器发送请求,请求一般get或post方式。(http定义了与服务器交互的不同方式:get,post,put,delete)
HTTP GET
发送
GET /DEMOWebServices2.8/Service.asmx/CancelOrder?UserID=string&PWD=string&OrderConfirmation=string HTTP/1.1
Host: api.efxnow.com
回复
HTTP/1.1 200 OK
Content-Type: text/xml; charset=utf-8
Content-Length: length
<?xml version="1.0" encoding="utf-8"?>
<objPlaceOrderResponse xmlns="https://api.efxnow.com/webservices2.3">
<Success>boolean</Success>
<ErrorDescription>string</ErrorDescription>
<ErrorNumber>int</ErrorNumber>
<CustomerOrderReference>long</CustomerOrderReference>
<OrderConfirmation>string</OrderConfirmation>
<CustomerDealRef>string</CustomerDealRef>
</objPlaceOrderResponse>
HTTP POST 发送
POST /DEMOWebServices2.8/Service.asmx/CancelOrder HTTP/1.1
Host: api.efxnow.com
Content-Type: application/x-www-form-urlencoded
Content-Length: length
UserID=string&PWD=string&OrderConfirmation=string
回复
HTTP/1.1 200 OK
Content-Type: text/xml; charset=utf-8
Content-Length: length
<?xml version="1.0" encoding="utf-8"?>
<objPlaceOrderResponse xmlns="https://api.efxnow.com/webservices2.3">
<Success>boolean</Success>
<ErrorDescription>string</ErrorDescription>
<ErrorNumber>int</ErrorNumber>
<CustomerOrderReference>long</CustomerOrderReference>
<OrderConfirmation>string</OrderConfirmation>
<CustomerDealRef>string</CustomerDealRef>
</objPlaceOrderResponse>
通过上面的例子,我们可以看出
1.数据包含的方式:get请求将数据 作为一个key/value对的序列附在url之后,post提交的数据放在http的包体中
2.传输数据的大小:get请求url有限(2083字节),post不通过url传值,所以理论上不受限制。
3.安全性:post请求方式比get请求方式更安全。
6.请求后常出现的状态码
200 (ok)找到资源,一切正常。
304(not modified)该资源在上次请求后没有任何修改,这通常用于浏览器得 缓存机制。
401(unauthorized)客户端无权访问该资源,这通常会使得浏览器要求用户输入用户名和密码,以登录到服务器。
403(forbidden)客户端未能获得授权,这通常在401之后输入了不正确的用户名和密码
404(not found)在制定的位置不存在所申请的资源