阅读摘抄笔记,原书《网络是怎样连接的》 chapter1
作者: [日]户根勤
出版社: 人民邮电出版社
原作名: ネットワークはなぜつながるのか 第2版
译者: 周自恒
出版年: 2017-1-1
浏览器生成消息
【浏览器解析网址并生成http消息】
【应用程序不自己控制网络,而是委托操作系统控制网络。】
生成http请求消息
服务器使用HTTP(超文本传输协议)进行信息交流,它有下面三方面的特点:
1.应用层使用HTTP协议
2.HTML文档格式
3.浏览器采用统一资源定位器(URL)来请求资源
URL: uniform trsource locator 同样资源定位符,有时被认为是网址。(访问对象有web服务器或FTP服务器)。url中会包括服务器的域名和要访问的··文件路径名。一般格式:
协议类型:[根据协议类型的不同有不同的写法]
协议类型://【可省略的用户名、密码】+服务器名+表示数据源的文件/目录
浏览器先对url进行解析,从而生成发送给web服务器的请求消息。
http://www.baidu.com/
http://www.baidu.com(没有文件夹,也是访问默认的)
以“/”结尾表示后面本来应该有的文件名被省略了。可以在服务器上事先设置好文件名省略时要访问的默认文件名。(大多数是index.htm或default.htm)。
浏览器的第一部工作就是对url进行解析
http的基本思路
定义了客户端和服务器之间交互的消息内容和步骤。
1.客户端对服务器发送请求消息。【对什么+进行怎样操作】【URI+方法】
【有时有表示附加信息的头信息】
URI :/dir1/file.htm 或 /dir1/program.cgi 【各种访问目标】
方法:需要让web服务器完成怎样的工作。eg:读取URI表示的数据、将客户端输入的数据发送给URI表示的程序。
-
【常见的get(获取URI指定的信息) -获取网页数据
post(发送表单填写的数据) -指向web服务器中的一个应用程序.cgi 或.php等文件,web服务器返回程序输出的结果
put(替换URI制订服务器上的文件)
put和delete 从客户端删除服务器上的文件】
2.收到请求消息后,web服务器会对其中的内容进行解析,通过URI和方法来判断对什么进行怎样的操作。最后把结果存放在响应消息中,响应消息开头的状态码表示操作的执行结果。【eg:404】
生成http请求消息
<form method="GET" action="/cgi/sample.cgi">
<input type="text" name="field">
</form>
根据协议生成消息体
先显示文字,有图片再请求显示图片(不过会预留空间)。由于每条请求消息中只能写一个URI,实验每次只能获取1个文件。如果需要获取多个文件,必须对每个文件单独发送1条请求。
向DNS服务器查询web服务器的IP地址
浏览器不具备将消息发送到网络中的功能,这一功能需要委托操作系统。需要先查询网址中服务器域名对应的ip地址。
TCP/IP 一些小的子网,通过路由器连接起来组成一个大网络。小子网是由集线器连接起来的几台计算机。集线器、路由器均是对包转发的设备。
- 在ip地址规则中,网络号和主机号连起来总共是32bit,(4*8),但这两部分具体结构是不固定的。同时包括附加信息子网掩码
10.11.12.13/24 [ip主体/子网掩码]
10.11.12.0/24[主机部分比特为0,代表整个子网]
12.11.12.255/24[主机部分比特为1,代表向整个子网广播]
子网掩码,同样32位,左边均为1,右边为0。子网掩码为1的部分表示网络号,为0的部分表示主机号。eg255.255.255.0【网络号主机号分割线】
域名&ip并用的原因
原因:ip比较难以记忆。but ip地址处理只需要4个字节,非常方便。
所以人使用名称,路由器使用ip地址,DNS满足两方面的映射关系。
DNS IP域名
查询ip地址,只要询问最近的dns服务器即可。客户端要有dns解析器。dns查ip,域名解析。【使用socket库-网络开发的一种标准】
根据域名查询ip地址时,浏览器会使用socket库中的解析器。
解析器根据dns生成询问消息,委托操作系统中的协议栈(or协议驱动)-》网卡-》发送给dns服务器。
向dns服务器发送时,也得知道dns服务器ip地址,不过这个是TCP/ip预先设置好的一个。(在网络设置中,往往可以看到使用的dns服务器地址等)
DNS服务器
dns服务器会从域名与ip地址的对照表中查找相应的记录,并返回ip地址。
域名的层次结构,越靠右层次越高。.sdu.edu.cn
如果附件没有存储(找到根域,再具体到各个上面,比如先找到根域,再去找cn,在cn下面找edu,在edu下面找sdu。
DNS服务器有缓存功能,可以记住查询过的域名,如果要查询的域名和相关信息已经在缓存中,缓存可以减少查询所需的时间。【缓存中的信息具有有效期】
委托协议栈发送消息
need建立管道,两段是socket
1.创建套接字。2.将管道连接到服务器端的套接字是3.收发数据 4.断开管道并删除套接字。
同一台计算机可能有多个套接字,套接字通过描述符区分。
连接需要描述符,ip地址,端口号(识别到具体的套接字)
描述符:应用程序用来识别套接字的机制。
ip和端口号:应用程序用来识别对方套接字的机制。