第一章 主干知识,就三点吧(我们在地址栏输入地址的时候发生了什么?——》生成数据,发送数据,接收并渲染数据)
在浏览器的地址栏填域名(或者点击超链接之类的) 浏览器会自动把域名转成HTTP请求,这个请求会去向某个域名服务器要东西(把域名转成HTTP请求)
是啊,找人要东西,找谁要呢,这就是第二个知识点了(由域名找ip)
嗯,我知道找谁要了,但是,我怎么告诉他,我需要什么东西呢,这是第三个知识点.(委托操作系统发送消息-》建立socket连接)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1.先看看请求头是怎么样的吧:
//第一行是请求行,正常在浏览器输出http://www.baidu.com,这样用到的就是GET方法.若是写表单,则两者都有可能
POST/GET http://www.baidu.com
//第二行后的一部分叫请求头,这里有很多可以选择的属性
Host: www.baidu.com
Accept:*/*
//第三部分叫请求体,注意的是,请求体与请求头之间要空一行
//请求体
现在这边请求体还没有东西,那么我们看看有东西的情况
POST http://www.666.com
Host: www.666.com
Accept:*/*
admin = 123456
pass = 123456
在表单中选择向http://www.666.com提交请求,表单内容 admin填写123456,pass填写123456
另外 get传数据其实也行,如下
GET http://www.666.com?admin=123456&pass=123456
Host: www.baidu.com
Accept:*/*
2.找谁要东西呢?
哈 ,可以找很多人要东西哈.http协议,对,就是url那一串最前面的东西,http就代表会去找web服务器要东西,
ftp的话就会去找ftp服务器要东西.现在 我们先关注找web服务器要东西吧
我们拥有什么? 我们现在拥有的是一条URL http://www.666.com
它就是我们要找的web服务器,但是它现在的样子是给我们人类看的,在各种设备沟通中其本相是ip地址,所以啊,我们要把它转换成ip地址.
做这一步的操作就叫地址解析啦.
2.1 DNS服务器与客户端
现在我们要做地址解析这件事情,所以我们要知道什么是dns服务器.
dns服务器能够做的工作很多.比如吧域名变成ip地址(正向解析),把ip地址变成域名(反向解析),查域名的别名....
那,什么是dns客户端呢?
就是我们本机的dns解析器,它与dns服务器沟通,用域名得到其对应的ip
2.2 dns服务器的工作
dns服务器内部可以想象成有很多键值对,比如键是域名,值是ip地址,我拿着域名就能找到对应的ip地址了
那么 dns服务器是否一个就够用了呢, 哈 在公司内部的局域网里是没问题的,但是在整个互联网上怕是不行,
想想啊,这些键值对那么多,查询起来效率多低啊,所以会有很多dns服务器,
这些服务器之间还有层级结构,想象一个金字塔,越顶层的服务器数量越少.
看这个: www.baidu.com.
这个域名中,从后往前看, 根域名是. 顶层域名是com 下层域名是baidu web服务器是www
其中 www所在的web服务器需要在baidu这个域的dns服务器上注册,
baidu所在的dns服务器与要在com服务器上注册
com域所在的服务器要在根服务器上注册,
为什么要注册呢?
因为要查找啊~~。 我们每台dns服务器都默认记住了13个根服务器的ip,当某一台dns服务器收到了他的客户端dns解析器
所发送的解析请求时,他就会去问根服务器 . 你知道www.baidu.com 的ip吗, 根服务器告诉说哦,com这个服务器应该知道,我把它的ip告诉你 ,你去问他
dns服务器就去问com服务器,你知道www.baidu.com 的ip吗? 他说baidu服务器知道,
我们就去找baidu服务器,你知道www.baidu.com 的ip吗? baidu这个域名就把这个ip返回给了发问的dns服务器.
dns服务器忙活了那么久,工作完成了.就把它知道的答案。ip地址返回给了 dns解析器, 大功告成!!!
这个ip地址,就是我们的目标。我们找他要东西.
3.如何才能对话?
两个设备相隔很远,靠喊是没用的,所幸有网络相连, 在osi五层中 网络层里 相互之间建立socket,就可以不管底层如何而直接进行通讯了.
web服务器端先建立了socket,然后等待着我们去连接。 这部分不需要我们管,我们看看浏览器怎么做的:
,第一步,建立了一个socket.
第二步,建立连接:我们知道了对方的ip地址,就可以建立socket连接了,但我们发现,除了提供ip地址外,建立socket连接还要求提供端口号,这个我们填什么呢, 默认 web是80号端口,邮件是25号端口,我们填上就好了.
第三步,发送我们的HTTP请求
第四步,接收HTTP响应
第五步,断开连接.
ok,之后的事情,浏览器就把得到http响应渲染成页面给我们看好了.......
---------------------
原文:https://blog.csdn.net/a3765421/article/details/83788061