一、前言
- 重要的知识点都在书上了,无意义的重复书上的知识点不是一种正确的学习方法;下面的都是总结和自我复述
- 从浏览器输入网址(URL)到将这些请求消息打包发送出网卡是本章的主要内容
二、整个过程叙述如下:
- 浏览器先对网址进行解析,获知浏览器的访问方式(http、ftp、mailto等)、服务器名称、数据源的路径等信息
- 根据HTTP协议生成请求消息(请求行、消息头、消息体)
- 通过DNS服务器查询到指定域名的IP地址(也即域名解析);如果最近的DNS服务器没有该域名的IP地址,将会从根域开始查询,逐级向下级域查询,直到找到指定域名的IP地址
- 有了IP地址之后,就可以委托操作系统的协议栈发送消息了;这个过程的具体操作是按照一定的顺序调用Socket库中程序组件(API).
- 注意:Socket库中的函数所做的事情是委托协议栈干活,真正具体到创建套接字、收发数据等都是由协议栈完成的。
- 创建套接字、建立连接、收发数据、断开连接
- 如下图所示:
三、生成http消息阶段的思维导图(超重要!!!!)
四、通过DNS服务器实现域名解析的思维导图(逻辑超清晰!!)
五、委托协议栈发送消息(此处属于概括性的,具体实现在见下一篇博客)
六、名词解释
- URL
- Uniform Resource Locator ,统一资源定位符,可以理解为网址
- URI
- Uniform Resource Identifier ,统一资源标识符
- 一般指的是HTTP协议消息中的访问目标,可以是存放网页的文件名也可以是一个CGI程序的文件名
- FTP
- File Transfer Protocol ,文件传输协议
- 一种在上传、下载文件时使用的协议,使用FTP协议来传送文件的程序也称为FTP
- CGI程序
- 按照CGI规范工作的程序称为CGI程序
- CGI(官方解释):对Web服务器程序调用其他程序的规则所做的定义就是CGI
- 我的理解:有时候Web服务器收到一个请求消息,被请求的内容不是服务器可以直接返回的某些数据;这些数据需要经过某个程序(设为程序A)处理或是获取或者其他,也即最后Web服务器返回的数据是程序A返回的数据,这个程序A就是CGI程序
- HTTP协议
- Hypertext Transfer Protocol ,超文本传送协议
- HTTP协议主要就是规定了网页客户端与服务器之间交互的消息内容和步骤(如上文第三节所述)
- DNS服务器
- Domain Name System ,域名服务系统
- 其内部有将服务器名称(域名)和IP地址相关联的"表",在收到查询请求时,可进行域名解析,返回域名对应的IP地址
- DNS解析器
- 其实就是DNS客户端
- 根域
- 域名是分级的,处在最顶层的域为根域
- 一般用一个点 . 表示(通常在输入网址时被省略)
- 如:https://www.baidu.com.最后一个点就表示根域