- 用户键入网址并回车
- DNS解析出IP
- 建立传输层连接
- 向Web服务器发出HTTP请求
- Web服务器返回响应内容
- Web服务器关闭TCP连接(若请求头包含 Connection: keep-alive 则服务器此时不关闭TCP连接)
IP
IP,Internet Protocol Address,网络协议地址。通过IP地址标识互联网上的计算机,工作原理和邮件上的寄信地址类似。
现在的IP地址分为两种,示例:
IPv4:192.168.1.1(局域网)
IPv6:2001:db8:0:1234:0:567:8:1
由技术标准化组织IETF tools.ietf.org 制定IP协议公认标准。https://tools.ietf.org/html/rfc791
由IANA www.iana.org 负责管理和分配IP地址,一般是IANA把IP给ISP(网络服务提供商,如阿里云),然后ISP分配给个人(服务器)。
HTTP
HTTP是客户端和服务端之间请求和应答的通讯协议,是为了Web浏览器和Web服务器之间的通信而设计的一个应用层协议。
主要通过传输层协议TCP或者是TLS(加密的TCP)来发送。
http相对于https的缺点主要是被窃听被篡改,https基本原理见我去年的文章:
https://blog.csdn.net/u012628581/article/details/99441535
HTTP由万维网协会W3C和ietf共同制定的公认标准。 https://tools.ietf.org/html/rfc2616
支持HTTP协议的软件有:浏览器、web服务器软件、curl、wget,或是各个语言自己实现的库等等。
HTTP请求示例:
1 | GET / HTTP/1.1 |
HTTP响应示例:
1 | jun@192 ~ % curl -I https://www.baidu.com |
DNS
DNS是将域名和IP地址相互映射的一个分布式数据库,全球有一千多台域名服务器在运行。
像百度、阿里、Google,都提供了公共DNS服务,就是DNS分布式数据库节点。
DNS系统是由各种DNS软件驱动的,如:BIND、OJBDNS、Dnsmasq等等,所以如果感兴趣,自己也可以用DNS软件搭建自己的DNS服务器。
参考
https://zh.wikipedia.org/wiki/IP%E5%9C%B0%E5%9D%80
https://zh.wikipedia.org/wiki/%E8%B6%85%E6%96%87%E6%9C%AC%E4%BC%A0%E8%BE%93%E5%8D%8F%E8%AE%AE
http://www.blogjava.net/zjusuyong/articles/304788.html
https://www.cnblogs.com/wanghuaqiang/p/12093563.html
https://developer.mozilla.org/zh-CN/docs/Web/HTTP