• no.1 Web浏览器


    生成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. 断开管道,删除套接字

    描述符,用来描述一个套接字,一个描述符对应一个套接字,不同描述符对应不同套接字。

    具体创建套接字 收发数据等说明下一章分解..((

  • 相关阅读:
    setTimeout详解
    【康娜的线段树】
    【[CQOI2016]手机号码】
    【[IOI2014]Wall 砖墙】
    【[1007]梦美与线段树】
    【[POI2010]ANT-Antisymmetry】
    【[HEOI2016/TJOI2016]排序】
    【[SCOI2016]背单词】
    【[HNOI2008]GT考试】
    【[JSOI2007]建筑抢修】
  • 原文地址:https://www.cnblogs.com/ttaall/p/14151806.html
Copyright © 2020-2023  润新知