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

本文涉及的产品
全局流量管理 GTM,标准版 1个月
云解析 DNS,旗舰版 1个月
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
简介:

题外话:

复制代码
最近园子里,关于.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

相关文章
|
3月前
|
JavaScript 前端开发 开发工具
TypeScript的介绍,let age:number = xxx,可以直接看出数据类型,Type由微软开发,可以在任何浏览器和系统中运行,比较适合大型项目,TypeScript的安装
TypeScript的介绍,let age:number = xxx,可以直接看出数据类型,Type由微软开发,可以在任何浏览器和系统中运行,比较适合大型项目,TypeScript的安装
|
5月前
|
存储 搜索推荐 安全
Cookie 探秘:了解 Web 浏览器中的小甜饼
Cookie 探秘:了解 Web 浏览器中的小甜饼
|
2月前
|
Web App开发 JSON 安全
【跨域难题终结者】:一键解锁Chrome浏览器神秘设置,彻底告别开发阶段的跨域烦恼!
【8月更文挑战第20天】跨域是前端开发常遇难题,尤其在前后端分离项目中。浏览器因安全考量会阻止不同源间的请求。本文对比CORS、JSONP、代理服务器等解法,并介绍开发阶段通过调整Chrome设置来临时禁用跨域限制的方法,提供启动Chrome及使用`fetch`API示例,适合快速测试。但请注意这不适用于生产环境,存在一定安全风险。
296 1
|
2月前
|
Web App开发 前端开发 JavaScript
手摸手教你,从0到1开发一个Chrome浏览器插件
开发 Chrome 插件既有趣又具成就感。本教程将引导你从零开始,逐步创建一个简单的 Chrome 插件。首先了解 Chrome 插件是可增强浏览器功能的小程序。以一个基础示例开始,你将学习如何设置开发环境,包括安装 Chrome 和准备文本编辑器,并掌握 HTML、CSS 和 JavaScript 的基础知识。接着,我们将构建插件的基本结构,涉及 `manifest.json` 配置文件、`background.js` 后台脚本、`popup.html` 用户界面以及 `style.css` 样式表。
222 8
|
2月前
|
缓存 网络协议 Linux
在Linux中,当用户在浏览器当中输入⼀个网站,计算机对dns解释经过那些流程?
在Linux中,当用户在浏览器当中输入⼀个网站,计算机对dns解释经过那些流程?
|
3月前
|
安全 iOS开发 MacOS
Dolphin指纹浏览器+IPXProxy代理IP:配置与使用全流程
通过代理IP,用户可以轻松绕过地域限制,访问全球范围内的网站和服务。不过想要同时使用多个代理IP的话,就需要借助指纹浏览器。Dolphin指纹浏览器和IPXProxy代理IP是大家常用的组合,这个组合为用户打造了一个既安全又高效的在线环境。下面是Dolphin指纹浏览器配置IPXProxy代理IP使用步骤,帮助大家更好了解这个组合。
|
2月前
|
网络安全 数据安全/隐私保护 iOS开发
【Mac os】如何在服务器上启动Jupyter notebook并在本地浏览器Web端环境编辑程序
本文介绍了如何在服务器上启动Jupyter Notebook并通过SSH隧道在本地浏览器中访问和编辑程序的详细步骤,包括服务器端Jupyter的启动命令、本地终端的SSH隧道建立方法以及在浏览器中访问Jupyter Notebook的流程。
68 0
|
3月前
|
域名解析 Web App开发 缓存
在浏览器上输入一个网址后,发生了什么?/HTTP的工作流程/DNS域名解析过程
在浏览器上输入一个网址后,发生了什么?/HTTP的工作流程/DNS域名解析过程
|
4月前
|
域名解析 存储 缓存
HTTP请求流程概览:浏览器构建请求行含方法、URL和版本;检查缓存;解析IP与端口
【6月更文挑战第23天】 HTTP请求流程概览:浏览器构建请求行含方法、URL和版本;检查缓存;解析IP与端口;TCP连接(HTTP/1.1可能需排队);三次握手;发送请求头与体;服务器处理并返回响应;TCP连接可能关闭或保持;浏览器接收并显示响应,更新缓存。HTTP版本间有差异。
73 5
|
4月前
|
数据采集 Web App开发 前端开发
Selenium:自动化Web浏览器操作的强大工具
**Selenium** 是一款用于自动化Web应用测试和模拟用户行为的工具,支持多种浏览器和编程语言。安装包括安装Selenium库和对应浏览器的WebDriver。基本用法包括导入库、启动浏览器、查找与操作页面元素、等待元素加载及关闭浏览器。在实际项目中,Selenium常用于Web测试、爬虫、自动化表单填写等,优点是跨平台、模拟真实用户行为,但性能较低且依赖浏览器。
109 9

热门文章

最新文章