码迷,mamicode.com
首页 > 其他好文 > 详细

网络基础学习

时间:2018-04-11 23:07:51      阅读:273      评论:0      收藏:0      [点我收藏+]

标签:-o   文件传输   输入   control   响应报文   .com   无法   学习   方便   

1、url(资源定位器)的构成

协议://域名(端口号、参数、查询等)

http://zhidao.baidu.com

协议:http / https (有加密的协议https)

域名: zhidao.baidu.com(百度知道)

端口: 80/ 90 / 3000等。

https默认的端口443;http默认端口80

例:https://www.baidu.com:443(默认端口443,可以不写)

2、同源策略:为了安全考虑的一种约定

浏览器有一个很重要的概念——同源策略(Same-Origin Policy)。所谓同源是指,域名,协议,端口相同。不同源的客户端脚本(javascript、ActionScript)在没明确授权的情况下,不能读写对方的资源。必须满足协议、域名、端口都相同的情况下浏览器才同意拿数据。

简单的来说,浏览器不允许包含在腾讯页面的脚本访问阿里巴巴页面的数据资源,会受到同源策略的限制。

例如:

Index请求getNews.php的数据,浏览器会判断:协议相同(http)、域名相同(localhost),端口号(80)相同

http://localhost/lesson1/index.html

http://localhost/lesson1/getNews.php?

3DNS域名解析:域名是通过DNS服务器倒着解析的

.com 顶级域名

baidu.com (一级,按国际分类)二级域名 (按国家分类)

zhidao.baidu.com  (二)三级域名

www 二级域名前缀,表示万维网维护的

www.baidu.com,属于特殊的三级域名

zhidao.baidu.com ,属于 百度自己维护的网络地址

3.1 www拓展

最开始,Internet提供的主要服务有万维网(WWW)、文件传输(FTP)、电子邮件(E-mail)、远程登录(Telnet)等。也就是说,那个时候的www(World Wide Web)是标识这是一个需要你用浏览器来访问的网页服务,而不是需要你用telnet访问的bbs,或者ftp工具访问的文件传输服务。所以那个时候,网站主页的域名前面要用www。

baidu有多个服务区为他服务。不同的子域名对应处理不同服务的服务器。现在,把任务分配到多台服务器,不需要通过子域名来区分了。http://www.goole.com一个地址背后有多台服务器支持运作。还用www只是尊重用户习惯,方便用户看。国外其实已经不用写www了。

3.2顶级域名:分两类

按照国家分:.cn 中国,.gp日本, .hk香港

按照国际分:

.com (商业机构)

.net(从事互联网服务的机构)

.org (非赢利性组织)

.edu (教育机构)

.com.cn (国内商业机构)

.net.cn (国内互联网机构)

.org.cn (国内非赢利性组织)

4、端口:每个端口对应不同的服务

如果把IP地址比作一间房子 ,端口就是出入这间房子的门。真正的房子只有几个门,但是一个IP地址的端口可以有多个。浏览网页服务默认的端口号都是80,因此只需输入网址即可,不用输入“:80

5url请求详解

5.1 url请求简图

 技术分享图片

5.2 url请求流程

①浏览器通过DNS域名解析到服务IP(ping www.baidu.com)

②客户端(浏览器)通过TCP协议建立到服务器的TCP连接  (三次握手)

③客户端(浏览器)向web服务器端(HTTP服务器)发送HTTP协议包,请求服务器里的资源文档 (telnet 模拟)

④服务器向客户端发送HTTP协议应答包

⑤客户端和服务器断开(四次挥手),客户端开始解释处理HTML文档

5.2.1 三次握手,报文交换,TCP链接

①先Client端发送连接、请求报文。

②Server端接受连接后回复ACK报文,并为这次连接分配资源。

③Client端接收到ACK报文后也向Server端发送ACK报文,并分配资源,这样TCP连接就建立了。

技术分享图片

 

5.2.2 四次挥手,关闭TCP链接

①Client端发起中断连接请求,也就是发送FIN报文。Server端接到FIN报文后,意思是说"我Client端没有数据要发给你了",但是如果你还有数据没有发送完成,则不必急着关闭(Socket),可以继续发送数据。

②server发送ACK,"告诉Client端,你的请求我收到了,但是我还没准备好,请继续等我的消息"。

wait:这个时候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连接就这样关闭了!

技术分享图片

5.2.3  TCP/UDP协议

①面向连接的TCP:微信,先加好友,再聊天

TCP(Transmission Control Protocol,传输控制协议)是基于连接的协议,也就是说,在正式收发数据前,必须和对方建立可靠的连接。一个TCP连接必须要经过三次“对话”才能建立起来,其中的过程非常复杂,我们这里只做简单、形象的介绍,你只要做到能够理解这个过程即可。

②面向非连接的UDP协议:短信,知道号码就可以,实时语音

“面向非连接”就是在正式通信前不必与对方先建立连接,不管对方状态就直接发送。与手机短信非常相似:你在发短信的时候,只需要输入对方手机号就OK了。

UDP(User Data Protocol,用户数据报协议)是与TCP相对应的协议。它是面向非连接的协议,它不与对方建立连接,而是直接就把数据包发送过去!

6、应用层协议: http https

超文本传输协议(HTTP,HyperText Transfer Protocol)是互联网上应用最为广泛的一种网络协议。

HTTPS(全称:Hyper Text Transfer Protocol over Secure Socket Layer),是以安全为目标的HTTP通道,简单讲是HTTP的安全版。

上面的协议建立客户端与服务器端的连接,方便两者进行沟通。

为什么要有此协议呢,让计算机之间按照规矩说话,你问我答,你怎么问我怎么答,否则计算机各说各话,没办法沟通。

如何沟通呢?  让我们来了解一下http报文吧

7http (请求报文,响应报文)通过报文进行沟通

7.1 请求报文:请求头、请求行、请求主体

请求行: 请求方法(GET POST DELETE HEAD TRACE OPTION);请求资源 (URL) ;请求协议版本(HTTP/1.1)

请求头: http://tools.jb51.net/table/http_header

请求主体: 表单提交数据如:name=aimee&age=18;

 技术分享图片

7.2  响应报文:响应头、响应行 、响应主体

响应行:响应协议版本号(HTTP/1.1);响应状态码  (200);响应状态文(0K)http://tool.oschina.net/commons?type=5(响应状态码)

响应头:http://tools.jb51.net/table/http_header

响应主体:‘sign success’ (注册成功)

技术分享图片

7.2.1 状态码

状态码

定义

说明

1xx

信息

接到请求继续处理

2xx

成功

成功的收到,理解,接受

3xx

重定向

为了完成请求需要进行另一部措施(如直接重浏览器缓存获取资源,或跳转到其他页面)

4xx

客户端错误

请求语法有错误,不能完全符合要求

5xx

服务器错误

服务器无法完成明显有效的请求

常见的http状态码

成功状态码:

200 服务器成功返回内容

301/2 临时/永久重定向

304 资源未被修改过

失败状态码:

404 请求内容不存在

500 服务器暂时不可用

503 服务器内部错误

8、请求方法  GETPOST 的区别?

在http协议里实际上没有区别!

①请求方式不一样,get,请求数据;post,推数据

②GET 使用URL 或Cookie 传参,而POST将数据,放在BODY中。 ? NAME = ‘CST’&AGE=18

③都有长度限制,post可以传输的数据比get多。get将数据拼接在url中,早期浏览器会对URL长度进行限制(浏览器URL输入框);post通过Content-Length限制了长度。

④POST比GET安全。GET在url中,直接就能看到,POST放在相应体里,通过控制台也可以看到,只能说相对安全。对于小白很安全,对于黑客,都不安全。

9、浏览器缓存机制

工作原理:是在HTTP Response中添加ETags信息。当客户端再次请求该资源时,将在HTTP Request中加入If-None-Match信息(ETags的值)。如果服务器验证资源的ETags没有改变(该资源没有改变),将返回一个304状态;否则,服务器将返回200状态,并返回该资源和新的ETags。

304:重定向

 

请求头中:

 

 if-None-Match: (匹配etag  如果它修改了 不取缓存)

 

If-Modified-Since:将先前服务器端发过来的最后修改时间戳发送回去

 

响应头中:

Etag;last-Modified (服务器最后修改的时间)和 etag 配合使用

技术分享图片

Date: 服务器响应内容日期

Cache-control:内容缓存时间

no-cache   不被缓存的,只不过每次在向客户端(浏览器)提供响应数据时,缓存都要向服务器评估缓存响应的有效性。 

no-store 用于防止重要的信息被无意的发布。在请求消息中发送将使得请求和响应消息都不使用缓存。 根据缓存超时

max-age 指示客户机可以接收生存期不大于指定时间(以秒为单位)的响应。

min-fresh 指示客户机可以接收响应时间小于当前时间加上指定时间的响应。

max-stale 指示客户机可以接收超出超时期间的响应消息。如果指定max-stale消息的值,那么客户机可以 接收超出超时期指定值之内的响应消息。

Expires:内容保质期,表示存在时间,允许客户端在这个时间之前不去检查(发请求),等同max-age的效果。但是如果同时存在,则被cache-control的max-age覆盖。

网站如何统计用户从何点击而来

Referer中会记录当前网页从哪个网页跳转过来(比如百度搜索,搜狗搜索)

referer:如果从浏览器地址栏里直接输入地址请求头没有referer

技术分享图片

 

网络基础学习

标签:-o   文件传输   输入   control   响应报文   .com   无法   学习   方便   

原文地址:https://www.cnblogs.com/wangzhenling/p/8799040.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!