Chapter one 浏览器生成消息——探索浏览器内部

来源:互联网 发布:lua保存数据 编辑:程序博客网 时间:2024/06/18 18:51

大三了,这两年多试着去接触了各种东西,也摸索过一些学习方法,最后还是想回归到书本,想多看看书。

以上。

Begin

其实在看《网络是怎样连接的》这本书之前,也把编程珠玑过了一遍,才发现,耐心一点兴趣或许就被培养出来了呢,所以出于对网络的兴趣,再加上想把网络方面的知识理一理,就开看了这本书,讲的通俗易懂,条理清晰。

好吧,开始讲讲看完Chapter one之后学到了什么吧。

Chapter one的title是浏览器生成消息——探索浏览器内部,但其实最主要讲的就是浏览器如何向服务器发出请求,同时服务器对浏览器的回应。当然,在这里,浏览器只是一个栗子,其实就是各种应用程序对服务器的请求及服务器的回应。在这里,主要是讲应用层之间的数据传输(可以理解为虚传输,自己创的词,也不知道有没有,表面上看是两个对等层之间的传输,其实不是这样),主要涉及到的协议就是http协议和DNS了。

首先试着了解几个网络方面的词:

URL:Uniform Resource Locator,统一资源定位符;

ftp:File Transfer Protocal,文件传送协议;

mailto:电子邮件协议;

URI:Uniform Resource Identifer,统一资源标识符;

CGI:对Web服务器程序调用其他程序的规则所做的定义;


先来解释一下url的组成:

用http协议访问Web服务器时,有http://user:password@www.glasscom.com:80/dir/file1.htm

这里的http表示使用的是http协议,user和password是密码,都可以省略,www.glasscom.com是Web服务器域名,80是http的端口号,dir/file1.htm是文件的路径名。

浏览器如何解析url呢?其实就是根据上面url的组成部分一点一点的进行分析,但是我们要注意一些省略文件名的情况,比如以/结尾,代表省略了后面的某个文件名,通常情况下是index.html或者default.html等


解析了url,我们就知道我们想要访问的东西在哪儿了,这时候我们希望服务器能把我们想要的东西送过来。那么首先客户端和服务器得达成一个协议,以http协议为例。

先看看http协议基本思路:其实就是客户端(浏览器)向服务器发送请求消息,这个请求消息包括方法(接下来“进行怎样的操作”)和URI(通过方法和URI来判断“对什么”“进行怎样的操作”),然后服务器响应客户端。(响应消息的开头有一个状态码

http的两种常用方法:get/post


知道了http协议,还是要回到浏览器中来看问题。在确定了服务器和文件名之后,就要生成http请求消息了。

看看请求消息和响应消息的格式

请求消息:

<方法><空格><URI><空格><HTTP版本>//请求行

<字段名>:<字段值>/*消息头

...

...

...*/

<空行>//消息体

<消息体>

响应消息:

<http版本><空格><状态码><空格><响应短语>

<字段名>:<字段值>

...

...

...

<空行>

<消息体>

响应消息的状态码表示响应的状态,1××表示告知请求的处理进度和情况,2××表示成功…

有个很重要的点:一条请求消息中只能写1个URI,如果要获取多个文件,必须对每个文件单独发送1条请求。

比如:一个页面,里面除了文字还有三张照骗,那么就得向服务器请求4次。


生成http请求消息之后,我们要拜托操作系统将请求消息发送给Web服务器,操作系统找服务器的时候,不能直接通过域名访问,而要转化为IP地址,所以这时候就要用DNS寻找服务器对应的IP地址了,这个过程还是比较好理解的,简单来说,域名是存在分级的,先在根域名中寻找一级域名,像这种.cn,.com,.jp等等都是一级域名,我们一级一级的找,最终就可以找到,而且一级域名的数量比较少。(关于DNS怎样通过域名寻找IP可以自行百度,很好理解的~


找到对方服务器的IP之后,就可以委托操作系统内部的协议栈向这个目标IP地址发送消息。

发送消息的过程大概可以分为四个:

1.创建套接字(socket组件

2.将管道连接到服务器端的套接字上(connect组件

3.收发数据(write组件,read组件

4.断开管道并删除套接字(close组件


END


网络真的不是一个简单的东西,只能说学到的这些都只是皮毛而已了,还没有找到很好的方法去学习这些,只能通过看书了,很多东西也很难记住,目前只好列一个提纲,有时间就来看看。另外,前两天学校布置的一些作业和其他的东西都要写文档。。。也没办法耽误了三天才把这个写完。

有些内容是个人见解,如果有误,请指出。

原创粉丝点击