Fork me on GitHub

Note for Computer Network 1

副标题:阅读《网络是怎么连接的(户根勤)》读书笔记1

开篇思考

Q: 为什么在DNS失效时,还能够用QQ聊天呢?
A: QQ是直接通过IP地址来连接服务器的。

Q:网络怎么通信?怎么传输数据?
A:浏览器和服务器需要一个传递请求和接受响应的机制,机制需要确定正确的传输对象,避免信息丢失,并准确无误发送给对方。即一份将数字信息搬运到指定目的地的机制。

Q:浏览器如何发送信息?
A:浏览器不亲自发送信息,而是委托机制,具体说就是委托操作系统中的网络控制软件(即协议栈)发送消息。

Q:协议栈的职责?
A:将从浏览器接收来的信息打包,加上目的地址等控制信息,将包交给网卡(负责以太或者无线通信的硬件),由网卡将包转换成电信号并通过网线发送出去。协议栈还具有通信错误时重新发包,或调节数据发送的速率等功能。

Q:客户端是如何接入互联网的?
A:eg:PC机连到局域网,再通过ADSL和光纤等宽带线路接入互联网,中途会经过交换机和路由器,路由器后面就是互联网

Q:接入网?
A:数据发出端到路由器这段线路,就是接入网。从路由器往里走就是互联网的内部。使用电话线/ISDN/ADSL/有线电视/光线/专线等通信线路,也称为接入网。

Q:接入点?
A:接入网连接到网络运营商,并接入接入点(某种设备,即PoP,point of presence)。接入点实体是专为运营商设计的路由器。在路由器后面是大量的运营商和路由器。

Q:路由器间连接方式的差异?
A:局域网使用以太线连接,互联网有以太线/电话技术/光通信技术。

Q:请求进入服务器前的流程?
A:防火墙:检查是否有危险的包;缓存服务器,访问的数据是否直接读出,若能就不去web服务器;大型网站中还有将消息分布到多台web服务器的负载均衡器,可能使用通过分布在整个互联网中的缓存服务器来分发内容的服务。之后进入web服务器。

Q:web服务器如何工作?
A:将数据解包还原成请求消息,交给web服务器程序,以上由协议栈完成。之后web服务器程序分析请求含义,按照指示将数据装入响应消息中,发回客户端。

Q:服务器端口号是什么?
A:[理解]服务器程序的编号。web是80,邮件是25.

干货正文

探索浏览器

URL解析中省略文件名的情况

1. >http://www.lab.glasscom.com/dir/
    服务器上预设要访问的默认文件名,一般是类似index.html 或者 default.htm
2. >http://www.lab.glasscom.com/
    这是要访问名叫"/"的目录,默认访问/index.html 或者 /default.htm文件
3. >http://www.lab.glasscom.com
    此写法与2相同
4. >http://www.lab.glasscom.com/whatisthis
    whatisthis既可以指目录名,也可以指文件名,不会冲突

HTTP协议

“HTTP 协议定义了客户端和服务器之间交互的消息内容和步骤”。
客户端向服务器发送请求,请求内容包括**URL**和**如何操作(即方法)**两个部分。
这个URL是一个存放网页数据的文件名,或者CGI程序的文件名,例.html或.cgi等。
CGI程序是调用其他程序的web服务器程序。

HTTP主要方法

方法 含义
GET “获取 URI 指定的信息。如果 URI 指定的是文件,则返回文件的内容;如果 URI 指定的是 CGI 程序,则返回该程序的输出数据”
POST “从客户端向服务器发送数据。一般用于发送表单中填写的数据等情况下”
HEAD “和 GET 基本相同。不过它只返回 HTTP 的消息头(message header),而并不返回数据的内容。用于获取文件最后更新时间等属性信息”
OPTION “用于通知或查询通信选项”
PUT “替换 URI 指定的服务器上的文件。如果 URI 指定的文件不存在,则创建该文件”
DELETE “删除 URI 指定的服务器上的文件”
TRACE “将服务器收到的请求行和头部(header)直接返“回给客户端。用于在使用代理的环境中检查改写请求的情况”
CONNECT “使用代理传输加密消息时使用的方法”
GET方法的简易案例:
  • 首先在请求消息中写上 GET 方法,然后在 URI 中写上存放网页数据的文件名“/dir1/file1.html”,这就表示我们需要获取 /dir1/file1.html 文件中的数据。
  • 随后当 Web 服务器收到消息后,会打开 /dir1/file1.html 文件并读取出里面的数据,然后将读出的数据存放到响应消息中,并返回给客户端。
  • 最后,客户端浏览器会收到这些数据并显示在屏幕上
POST方法的简易流程:
  • 使用 POST 方法时,URI 会指向 Web 服务器中运行的一个应用程序的文件名,典型的例子包括“index.cgi”“index.php”等。
  • 然后,在请求消息中,除了方法和 URI 之外,还要加上传递给应用程序和脚本的数据。这里的数据也就是用户在输入框里填写的信息。
  • 当服务器收到消息后,Web 服务器会将请求消息中的数据发送给 URI 指定的应用程序。
  • 最后,Web 服务器从应用程序接收输出的结果,会将它存放到响应消息中并返回给客户端。

HTTP消息

参考:理解HTTP消息头

未完待续

-------------The End-------------