一,前提理解:1. 域名、URL 和 URI

域名(domain name):是一台计算机或一组计算机在网络上的名称。

URI:统一资源标识符,能精确定位到具体的资源(身份证号能定位每个国民身份)。

URL:统一资源定位符,有考虑范围资源(身份证前六位,按地区区分)。

二,域名和IP的关系

域名是计算机或计算机组在网络上的名称,但是并不是每一台计算机都有绑定了域名,但是,每一台接入网络的计算机都有一个 IP 地址 (Internet Protocol address),

用这个 IP 地址就能够定位到一台服务器,或一组服务器,如果服务器没有绑定域名,只要有它的 IP 地址,还是可以进行访问的。

我们在上网时,如果要直接访问某个网站,都是输入域名就可以了,但是在定位服务器时,都是要靠 IP 地址来进行的,从域名到 IP 地址,这二者的转换就引出了一个新的概念 —— DNS(Domain Name System)。

域名到IP解析过程:

  1,输入域名时,浏览器会根据这个域名在浏览去缓存的 IP 地址中去查找;

  2,如果找不到,就到 OS 中去查找缓存的 IP 地址;

  3,如果还是找不到,就会去 ISP(Internet service provider),也就是运营商(电信,铁通之类的)的服务器里查找;

  4,如果还是找不到,就要去根域名服务器查找,直到找到为止。

三,从输入URL到获取页面的过程

  1,域名解析,找到IP地址;

  2,建立tcp连接(三次握手);

  3,http响应与请求;

    http请求报文四个部分:请求行,请求头部,空行,请求数据

      a.请求行包含:请求方法,资源位置,以及协议版本,例如:GET /index.html HTTP/1.1;

      b.请求头部:多个键值对组成

      例如:

       Accept:xxx (接受的数据类型) Accept-Charset:xxx (接受的编码格式) Accept-Language:xxx (接受的语言)

       User-Agent:xxx (浏览器类型) Cookie:xxx=yyy (所使用的   Cookie) Connection:close/keep-alive (连接状态:关闭/保持连接)

      c. 空行:区分请求头部和请求数据的,它代表着不再有头部的 Key-Value 键值对,接下来是请求数据了。

      d.请求数据:请求主体一般是用于 POST 方法提交数据,例如最常见的表单提交,就是在请求主体写入 Content-Type= multipart/form-data`

    http响应报文:状态行,响应头,空行,响应数据

      a.状态行中包含着协议版本,状态码以及文本描述,状态码和文本描述就代表了服务器所返回的响应结果是怎样的,这里给出大致的描述:

      2XX:成功 3XX:重定向 4XX:客户端错误 5XX:服务器错误

      b.与请求头部类似,也是 Key-Value 键值对的组成

      c. 空行:用来分隔响应头部和响应正文。

      d.响应数据:响应正文中,如果之前请求的是数据,就返回数据,如果请求的是网页,就返回 HTML 代码。

  4,tcp关闭(四次挥手)。

备注:tcp协议链接