Web开发,浏览器通讯原理及流程那点事,你应该听说下

题外话:


最近园子里,关于.net门槛的文章风风火火,不过这类事情每过段时间就会出来一次,所以酱油都懒的打了。

当然个人也是有想法的,特别是这两天碰巧和一个三四年经验的java开发者呆在一起,对方说.net就是拉拉控件时,我还是很严厉的批评了对方,用自己比对方更年长的知识,重新引导对方对.net的看法。

不知道是谁在传播这种.net只是XX论,传播的这个“谁",一定是个新手:所以建议新手,就不要整天跑外面乱吹了,好好学知识去吧。

对于老手,在对新手进行知识传播时,特别是刚教授新学拉控件的时候:一定要讲下.net的精深,告诉他们学的是皮毛,没事不要乱吹自己有多厉害,做人要谦虚。

当下的情况:

现在很多开发的书,它们只讲.net的原理的开发手法,所以很多人只局域在.net的书上讲的开发,一开始经验值会刷的很快,但很快就刷不上去了,更别说达100级转职了。

同样的新手,试问其它语言(java) 和.net有啥不同?

同样是初级,人家比你多懂点form标签属性的method属性有Get、Post等;action的属性可以指定数据传输到哪个页面,而.net的新手从控件入门的不懂。

其实,新手只要顺带多了下解html,简单了解下基础Http协议,基本也和同级java够吹了(最好还是谦虚少吹)。

所以教人控件的导师们,教的时候,除了引导学生对比查看前后生成的html和aspx之外,form属性,和网络通讯基础,也要特别的花精力说一下。

如果你再了解一下下面的知识,就可以秒杀同级java选手了,至少不会乱吹啥.net只是xxx。

 

现在回头来看看浏览器通讯那点事:

 

当你在浏览器输入:http://www.cyqdata.com之后发生什么事?发生的事有很多,有人说了1小部分,今天我也说一小部分,剩下的YI大部分,有待探索。。。

 

1:首先浏览器不是吃素的,它给你一条输入框,用于输入网址:

剩下的事就给它了,接下来浏览器要干什么,那是它的事,比如它可以不给你处理,还可以给你弹你妹的,不过通常都会走标准化流程,毕竟还是给大伙使用的。

知识点:Winform基础:你也可以弄个TextBox,让用户输入网址。 

 

2:浏览器拿你的输入后:

首先它要看一下是不是网址,如果不是,给你显示你哥的,或导航到自己搜索去。

如果它是域名网址,得把它变成IP,怎么换成IP?

知识点:注册表里,有IE浏览器默认错误请求时的定位地址,自己喜欢可以去改下。

 

3:域名换IP的内部流程:

1:查找浏览器自身的DNS缓存表:(缓存是通用逻辑,有就直接拿出来,没有就找系统要,要回来再缓存)。

知识点:涉及注册表操作(禁用IE浏览器缓存或开启)、其它浏览器的API(下面图为 chrome的dns缓存清除设置)

 

2:查找系统缓存(如果没有就找Hosts看看有没有)

知识点:操作系统(算了,忽略) 

3:查找系统Hosts文件(如果没有就问问DNS)

知识点:Hosts的基础操作,涉及IO、系统权限、文件属性等操作。 

4:请求本机DNS指向的服务器要(一般都会有,如果没有,基本这次请求就挂菜了)。

知识点:本机DNS配置(默认路由器自动分配),网络基本知识(IP、子网掩码、网关、DNS)。


3:拿到IP,要发送http请求了:

这个http请求数据怎么出去?

首先要开劈端口监听,没端口肯定出不去,到时候还要等待回来的数据也是从这端口进来。

这端口也不会是80,因为80系统自己占了,所以随便来个10000号以上的。

知识点:Socket通讯、TCP协议。 

 

4:有了端口,数据也发了,这数据都怎么流通的?

1:先查路由表(找到数据要发送到哪个IP,通常是网关192.168.1.1)。

知识点:winapi,路由表操作、路由表执行原理,规则、静态和动静区别。 

 

2:再查arp表(因为数据是要走网卡的,要把IP换成MAC地址)。

知识点:winapi,操作arp,如何发送api,让你局域网同事朋友同学断网。 

3:物理硬件把数据传到网关(这中间就涉及到很多TCP协议和驱动和物理链接之类的知识了)

知识点:底层驱动开发,这个领域不在行。 

4:到了网关。。。再根据路由表,找下一级网关传输数据。

知识点:路由器的路由表维护。。。 

 

 

好,之后浏览器接收回来做了些什么事的小部分故事,有人讲了,就不重复了。

 

总结:

上面的原理,每一步都涉及到很多知识,特别是要用代码去操控或拦截它们的时候,你就知道,原来这么给力,原来还有我不会的。。。。

 

题内话:

每当我写完一个软件,刚发布的时候,总有一群源码虫跑来要源码,我的原则都是,先分享思想,原理,最后才是源码,学习思想很重要。

没事别看源码,除非你要做的事和源码相关的。

需要开发相关的功能时:不要先看,先F5运行,再局部调试去看码源。

其实你好好看看我的博客,提供的源码不计其数,每一个作品,几乎都会搭配源码,认真学习过的,消费为已用的,估计都月收入过万了!!!

正如我写秋式广告杀手,如果不懂这些原理,不懂的分析在合适的地方的拦截处理,怎么能折腾的出来呢? 

上面说的,如果你觉的有点收获。。。 。请点点点点。。。。右边那个。。推荐。。。。

版权声明:本文原创发表于博客园,作者为路过秋天,原文链接:

http://www.cnblogs.com/cyq1162/archive/2012/12/01/2797346.html

时间: 2024-09-24 15:47:46

Web开发,浏览器通讯原理及流程那点事,你应该听说下的相关文章

【技术干货】浏览器工作原理和常见WEB攻击 (下)

本文作者:上海驻云开发总监 陈昂 上篇给大家带来的是关于浏览器基本工作原理的总结和介绍,这篇文章重点给大家说明有哪些常见WEB攻击. 常见WEB攻击 互联网是个面向全世界的开放平台,越是开放的东西漏洞就越是多.有人曾维护了一个列表,上面有上百种的WEB攻击方式.我们常见的有:脚本注入.SQL注入.DDoS.DNS劫持.端口漏洞扫描.密码暴力破解.XSS.CSRF等.这里只挑一些常见的攻击做个介绍: SQL注入 现在的网站很多都不再是纯粹的静态网站,例如一些CMS网站.交易网站.p2p/p2c网站

web标准下的web开发流程思考

web|web标准 web开发需要考虑三面人的人员:设计师,程序员,客户,项目经理. A.设计师负责平面效果设计 B.程序员负责系统开发 C.客户提出需求验收系统 D.项目经理负责统筹全局 这里就不谈需求分析细节,和与客户谈判的细节了,假定需求已经确定. web标准是结构和表现相分离的,所以设计师和程序员在项目经理需求确定之后,可以并行开发,打破了以往的,平面效果确定系统才能开发的低效率开发流程.什么样的系统都可以拥有MVC式系统的开发效率. 下面是一个流程图 需求确定,系统规划完成之后: 程序

Web开发流程规范的五个要点

web|规范 开发流程及规范:Web 开发的分散性和交互性,决定了 Web 开发必须遵从一定的开发规范和技术约定. 只有每个开发人员都按照一个共同的规范去设计.沟通.开发.测试.部署,才能保证整个开发团队协调一致的工作,从而提高开发工作效率,提升工程项目质量. 一. 项目的角色划分 如果不包括前.后期的市场推广和产品销售人员,开发团队一般可以划分为项目负责人.程序员.美工三个角色. 项目负责人在我们中国习惯称为"项目经理",负责项目的人事协调.时间进度等安排,以及处理一些与项目相关的其

3大主流浏览器Web开发工具

一个快速加载网页在很大程度上节约用户的浏览页面时间成本,作为一名站长,我们要寻求一些解决办法,传统的在浏览器中 "右键-查看源代码"已经过时了,它不能做良好的代码检查,作为一名优秀的web开发人员,应该不断学习和尝试新事物.下面我就介绍下三大主流浏览器的 web人员开发工具介绍及其使用方法. 火狐(Firefox)的Firebug和YSlow Firebug是一个非常成熟和完善的工具(点此下载),各种浏览器下都能使用(IE,Firefox,Opera, Safari),通常我在火狐浏览

【技术干货】浏览器工作原理和常见WEB攻击 (上)

本文作者:上海驻云开发总监 陈昂 浏览器工作原理 当你打开一个个设计漂亮.简洁大方的网页,有没有想过浏览器是如何展现这么一个网页的呢.当你在这些网页上输入你的淘宝账号登录购买东西的时候,有没有想过,你的账号密码.身份证号.手机号.真实姓名,这些信息会不会泄露,被黑客利用呢?在了解网络安全方面的知识之前我们先简单了解下浏览器的工作原理,以辅助我们更好的理解网络安全知识. 浏览器分类 现代浏览器从内核上来说,主要分为以下6大类: Trident内核,代表是IE EDGE内核,代表是微软的Edge浏览

web开发在调试js时 google 浏览器中一直使用缓存文件

问题描述 web开发在调试js时 google 浏览器中一直使用缓存文件 web开发在调试js时 google 浏览器中 一直使用的是缓存文件,一定要清一下缓存更新最新的文件.但是如果开发及时更改js文件,及时刷新界面的话,google浏览器又可以去重新加载最新的文件.如果js在google浏览器中停留时间长,那么会刷新界面时一直使用缓存js ,而不是去后台重新加载最新的js.这是什么机制,什么原理.网上搜一直都搜不到.大神门回答一下吧 解决方案 缓存js不是很正常,,每次重新加载,,浪费时间和

web开发人员谈IE8浏览器新特性

微软在去年可谓是动作比较大的一年,在去年3月份推出了最新版的IE8浏览器,而在年底又发布全新的操作系统Windows 7,自此新产品的市场占有率出现了一个增长的小高潮."微软的IE8面对不仅仅是普通的浏览器用户,从IE8浏览器里自带的"开发人员工具"我们就可以看 出它更是一个面对网页开发人员的平台."尽管微软早已建议低版本的IE用户把浏览器升级最新一代的浏览器IE8,但是有很多用户还在犹豫该不该把浏览器升级到IE8,这次我们就从网页开发人员的角度来谈谈升级IE浏览器

Web开发模式原理:ModeI与ModeII(MVC)

WEB开发模式 在实际的Web开发中,有两种主要的开发结构,成为模式一(Mode I)和模式二(ModeII) 两种开发模式为整个WEB的核心操作,其中以模式二最为重要,可以这么说,如果可以将模式二彻底掌握了,那么我们之前所学习的java 和 数据库等等的内容就全部通晓了. 现在有好多的学生在之后学习了框架开发之后就会把所有的精力都放在了框架的研究中,而忽略了基本的原理,导致了一些学生除了框架之外,其他的一些都不会. 其中Mode 11绝对是我们学习的核心基础,不会有任何人去反对它的价值,只要是

html5 Web开发:防止浏览器假死的方法

在Web开发的时候经常会遇到浏览器不响应事件进入假死状态,甚至弹出"脚本运行时间过长"的提示框,如果出现这种情况说明你的脚本已经失控了. 一个浏览器至少存在三个线程:js引擎线程(处理js).GUI渲染线程(渲染页面).浏览器事件触发线程(控制交互). JavaScript引擎是基于事件驱动单线程执行的,JS引擎一直等待着任务队列中任务的到来然后加以处理,浏览器无论再什么时候都只有一个JS线程在运行JS程序. GUI 渲染线程负责渲染浏览器界面,当界面需要重绘(Repaint)或由于某