网络是怎样连接的(阅读笔记)

Q:www是什么意思?

A:www(world wide web)并非一个协议的名字,而是Web的提出者最早开发的浏览器兼HTML编辑器的名字。

Q:http://www.lab.glasscom.com/

A:这个URL也是以“/”结尾的,也就是说它表示访问一个名叫“/”的目录。而且,由于省略了文件名,所以结果就是访问/index.html或者/default.htm这样的文件了。

Q:http://www.lab.glasscom.com

A:这次连结尾的“/”都省略了。像这样连目录名都省略时,真不知道到底在请求哪个文件了,实在有些过分。不过,这种写法也是允许的。当没有路径名时,就代表访问根目录下事先设置的默认文件,也就是/index.html或者/default.html这些文件,这样就不会发生混乱了。

Q:什么是表单?

A:网页中的文本框、复选框等能够输入数据的部分。

Q:什么是GET?

A:获取URI指定的信息。如果URI指定的是文件,则返回文件的内容;如果URI指定的是CGI程序,则返回该程序的输出数据。

Q:什么是POST?

A:从客户端向服务器发送数据。一般用于发送表单中填写的数据等情况下。

Q:什么是HEAD?

A:和GET基本相同。不过它只返回HTTP的消息头(message header),而并不返回数据的内容。用于获取文件最后更新时间等属性信息。

Q:什么是PUT?

A:替换URI指定的服务器上的文件。如果URI指定的文件不存在,则创建该文件。

Q:HTML文档中的哪些部分是超级链接?

A:在HTML文档中国年写上标签,其中"......"部分为URL,这就是一个超级链接。

Q:请求消息是什么样子的?

A:第一行是请求行,通过这一行可以大致了解请求的内容。

<方法><空格><空格>

第二行是消息头,每行包含一个字段头,用于表示请求的附加信息。消息头的行数根据具体情况可变,一直延伸到空行为止。

<字段名>:<字段值>

...

...

...

<空行>

第三部分是消息踢(message body)包含客户端向服务器发送的数据,例如用POST方法向Web服务器发送的网页表单数据

Q:如果需要展示的网页中有四个图片,需要发送几条请求?

A:由于每条请求消息中只能写一个URI,所以每次只能获取1个文件,如果需要获取多个文件,必须对每个文件单独发送1条请求。比如1个网页中国年包含3张图片,那么获取网页加上获取图片,一共需要向Web服务器发送4条请求。

Q:IP地址由哪两部分组成?

A:分为网络号和主机号,

IP地址的主机号

全0:表示整个子网

全1:表示向子网上所有设备发送包,即“广播”

Q:我们计算机上相应的DNS客户端在哪里?(DNS:Domain Name System)

A:通过DNS查询IP地址的操作称为域名解析,因此负责执行解析(resolution)这一操作的就叫做解析器(resolver)。解析器实际上是一段程序,它包含在操作系统的Socket库中,在介绍解析器之前,我们先来简单了解一下Socket库。


Socket库是在加州大学伯克利分校开发的UNIX系操作系统BSD中开发的C语言库,互联网中所使用的大多数功能都是基于Socket库来开发的。因此,BSD之外的其他操作系统以及C语言之外的其他编程语言也参照Socket库开发了相应的网络库。

Q:根域DNS服务器在运营上使用多台服务器来对应一个IP地址,因此尽管IP地址只有13个,但其实服务器的数量是很多的。

Q:IP地址具体分配给谁的?

A:IP地址不是分配给每一台设备的,而是分配给设备中安装的网络硬件的。因此,如果一台设备中安装了多个网络硬件,那么就会有多个IP地址。

Q:类似于IP地址和端口号,我们能不能用前面创建套接字时提到的那个描述符来识别套接字呢?

A:这种方法其实是行不通的,因为描述符是和委托创建套接字的应用程序交互时使用的,并不是用来告诉网络连接的另一方的,因此另一方并不知道这个描述符。同样地,客户端也无法知道服务器上的描述符。因此,客户端也无法通过服务器端的描述符去确定位于服务器上的某一个套接字。

如果说描述符是用来在一台计算机内部识别套接字的机制,那么端口号就是用来让通信的另一方能够识别出套接字的机制。

Q:既然确定连接对象的套接字需要使用端口号,那么服务器也得知道客户端的套接字号码才行吧,这个问题是怎么解决的呢?

A:事情是这样的,首先,客户端在创建套接字时,协议栈会为这个套接字随便分配一个端口号。接下来,当协议栈执行连接操作时,会将这个随便分配的端口号通知给服务器。

Q:什么是描述符?什么是IP地址和端口号?

A:描述符,是应用程序用来识别套接字的机制;IP地址和端口号:客户端和服务器之间用来识别对方套接字的机制。

Q:如何传递消息?

A:当套接字连接起来之后,剩下的事情就简单了。只要将数据送入套接字,数据就会被发送到对方的套接字中。当然,应用程序无法直接控制套接字,因此还是要通过Socket库委托协议栈来完成这个操作。这个操作需要使用write这个程序组组件。

Q:什么是协议栈?

A:协议栈是操作系统中的网络库公职软件。

Q:如何理解套接字?为什么在已经有IP和端口来确定进程的时候,还需要套接字呢?

A:套接字创建完成后,协议栈会返回一个描述符,应用程序会将收到的描述符存放在内存中。描述符是用来识别不同的套接字的。我们现在只关注了浏览器访问Web服务器的过程,但实际上计算机中会同时进行多个数据的通信操作,比如可以打开两个浏览器窗口,同时访问两台Web服务器。这时,有两个数据收发操作在同时进行,也就需要创建两个不同的套接字。这个例子说明,在同一台计算机上可能同时存在多个套接字,在这样的情况下。我们就需要一种方法来识别出某个特定的套接字。

Q:网络包的发展历程是怎样的?

A:在网络包出现之前,通信都是像电话一样把线路连接起来进行的。但是,连接线路的通信方式只能和固定的对象进行通信,无法发挥计算机可以处理多种工作的特点。为了解决这个问题,人们设计出了实用网络包来进行通信的方式。


网络是怎样连接的(阅读笔记)_第2张图片

Q:浏览器、邮件、DNS使用的服务器一般是什么?

A:浏览器、邮件等一般应用程序首发数据时用TCP,DNS查询等收发较短的控制数据用UDP。

你可能感兴趣的:(网络是怎样连接的(阅读笔记))