生成HTTP请求消息
1.什么是URL?
以 http:,ftp:,file:等开头的一串东西,不同的开头代表访问的服务器不一样。http访问web服务器,ftp访问FTP服务器
http协议: web服务器域名 : 端口号/ 文件路径 / 文件名
http://www.baidu.com:80/dir/file.html
"http:": 代表请求的协议(http协议还是ftp协议),也能确定访问的服务器类型
"www.baidu.com": web服务器域名
"80": 服务器端口号
“/dir/”: 访问的服务器的文件路径
"file.html": 访问的文件名
浏览器负责解析URL,确定要访问的这些东西解析出来
2. 什么是URI?
统一资源标识符。简单的说,URI就是唯一访问目标,例如 "dir/file.html " 或者 直接http开头的URL也可以直接当作URI。
URL是URI的子集,URI是表示唯一标识这个资源的
3. HTTP协议是什么
HTTP协议定义了客户端到服务端交互的消息内容及步骤
请求 主要由两部分组成 "对什么" + "进行什么样的操作"
"对什么" 这一部分由URI表示
"进行什么样的操作" 就是操作的方法,常见的 GET POST PUT HEAD (除了这两个必要的部分,请求头还会附加一些信息,不是必要的)
请求发送过去,另一端会产生响应,响应信息,响应状态码,数据信息
响应状态码:
1xx
2xx 成功
3xx 表示需要进一步操作
4xx 客户端错误
5xx 浏览器错误
浏览器可以解析URL并发起请求,然后委托操作系统将请求消息发送到网络去
2.向DNS服务器查询IP地址
4. 什么是IP地址?
TCP/IP协议的产物,标识要访问的服务器的地址
类似于公司地址,哪个省.哪个市.哪个区.哪个街道几号
由32位2进制数组成,每8位一组 例如 192.168.16.2
还有个东西叫 子网掩码 例如 255.255.255.0 这东西对应着IP地址就能看出哪些位是网络号,哪些位是主机号
(网络号就是确定大的网络环境中 酒店是在哪个省哪个市哪个街道,主机号相当于 在这个街道那么多门牌号中的几号是你们公司)
子网掩码,就是把网络号用1掩盖住, 32位二进制中 网络号的部分全是1,主机号的部分全是0
5. 什么是域名?
理解为将IP地址包装成一串字符,例如 47.58.3.222 这个IP地址 可能对应的域名就是 www.fxck.com ,使用域名来访问服务器,这多省事啊
6. 如何将域名解析成IP地址? DNS服务器
操作系统掌握着一个Socket库,可以直接操作底层指令对网络的一系列操作,包括发起请求啊,域名解析啊balabala的
Socket库提供了接口可以直接 通过域名去DNS服务器查到IP地址
流程就是:你从浏览器输入一个域名 -> Socket库 -> DNS服务器
3. DNS服务器原理
向DNS服务器查询IP流程:Web浏览器 -> Socket库 -> 网卡 -> 附近的DNS服务器
Dns服务器会从IP地址和域名的对照表中找到域名对应的结果,返回给客户端
域名具有层级结构,以 www.baidu.com.cn. 为例 每一个. 代表一个层级,越往右级别越高 .cn代表中国域,最高层是个. 表示根域
如果要向最近的DNS服务器查找域名,后先从最顶层DNS服务器找,找不到再找下一层,找不到再找下一层,一路顺藤摸瓜直到找到保存了域名的服务器为止
当然DNS服务器也会缓存一些域名与IP地址的映射,有点redis的味道,能从服务器查到直接返回结果,查不到去找下一级,找到了存在本地缓存一份.
DNS域名详情 https://www.cnblogs.com/ttaall/p/13626763.html
4. 协议栈发送消息
委托操作系统协议栈 来向目标IP地址发消息. 协议栈属于操作系统中的网络控制软件
协议栈,发消息的四个过程
1. 创建套接字
2. 连接客户端与服务端套接字管道
3. 收发消息
4. 断开管道,删除套接字
描述符,用来描述一个套接字,一个描述符对应一个套接字,不同描述符对应不同套接字。
具体创建套接字 收发数据等说明下一章分解..((