笔记总结:网络是怎样连接的(chapter1)

一、 生成HTTP请求消息

  浏览器要做的第一步工作是对URL(Uniform Resource Locator统一资源定位符)进行解析,从而生成发送给Web服务器的请求消息,URL的格式也会随着协议的不同而不同。以访问Web服务器为例,解析完URL,浏览器会使用HTTP协议来访问服务器,客户端会发送请求消息给服务器,请求消息中包含的内容是“对什么”和“进行怎样的操作”两个部分。其中“对什么”就是我们所说的URI(Uniform Resource Identifier统一资源标识符),一般而言,URI的内容是包含一个存放网页数据的文件名或者是一个CGI程序的文件名。

二、 向DNS服务器查询Web服务器的IP地址

  生成HTTP消息之后,因为尽管浏览器能够解析网址并生成HTTP消息,但其并不具备将消息发送到网路中的功能,所以接下来我们需要委托操作系统将消息发送到Web服务器。
  在生成HTTP消息后,发送消息之前,我们需要知道Web服务器的IP地址,所以接下来就根据域名查询IP地址,而这一步骤通过询问最近的DNS服务器就行了。对于DNS服务器,我们计算机上一定有相应的DNS客户端,而相当于DNS客户端的部分就叫做DNS解析器,简称解析器,通过DNS查询IP地址的操作称为域名解析。
  实际上解析器也是一段程序,它包含在操作系统的Socket库中(Socket库其中包含一些程序组件,能够让其他应用程序调用操作系统的网络功能,解析器就是这个库中的一个程序组件)。调用了解析器,解析器就会向DNS服务器发送查询消息,DNS返回的响应消息中包含查找到的IP地址,解析器就会将查到的IP地址写入浏览器指定的内存地址中,为后面通信做准备。
  这里有几点需要注意。发送消息这个操作并不是解析器自身来执行的,而是委托给操作系统内部的协议栈来执行的,因为解析器和浏览器一样本身不具备使用网络收发数据的功能。所以解析器调用协议栈后,控制流程会再次转移,协议栈会执行发送消息的操作,然后通过网卡将消息发送给DNS服务器。当然向服务器发送消息时,我们应该知道DNS服务器的IP地址才能发消息,这里我们不用再去查询了,因为这个DNS服务器的IP地址是作为TCP/IP的一个设置项目事先就已经设置好了的,也就是说默认我们计算机知道DNS服务器的IP地址。
  当向DNS服务器查询Web服务器的IP地址时,DNS服务器会从已有的记录中查找域名、Class和记录类型全部匹配的记录,将该记录中保存的IP地址返回给DNS客户端,到这一步我们就得到了我们要访问的Web服务器的IP地址了。实际上DNS服务器还有一个缓存机制,该机制能够记住之前在一定时间内查询过的域名,这样可以加快我们DNS服务器的响应,这个一定时间和缓存的信息的有效期相关。

三、 委托协议栈发送消息

  知道了我们要访问的Web服务器的IP地址后,就可以委托操作系统内部的协议栈来向目标IP发送消息了。这里发送消息和前面向DNS服务器查询Web服务器的IP地址的操作一样,也需要调用Socket库中的程序组件。只有一点区别,查询IP地址只需要调用一个程序组件,而发送消息需要按照指定的顺序来调用Socket库中的程序组件。

总而言之,收发数据的操作大致可以分为4个阶段:
(1) 创建套接字(创建套接字阶段)
(2) 将管道连接到服务器端的套接字上(连接阶段)
(3) 收发数据(通信阶段)
(4) 断开管道并删除套接字(断开阶段)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值