这是我参与【第四届青训营】笔记创作活动的第四天。
关于HTTP协议最经典的一问——当在浏览器地址栏输入URL时,页面是如何呈现的?
客户端与服务器之间是使用HTTP协议的通信,通过指定的访问地址获取(或上传)服务器资源(文件等信息)。
当在浏览器的地址栏内输入URL时,信息会被送往某处,然后从某处获得的回复,内容就会显示在Web页面上。
期间具体实现了以下步骤:
- 浏览器从URL中解析出服务器的主机名(先进行DNS域名解析)
- 浏览器将服务器的主机名转换成服务器的IP地址
- 浏览器将端口号(如果有的话)从URL中解析出来
- 浏览器建立一条与Web服务器的TCP连接(三次握手)
- 浏览器向服务器发送一条HTTP请求报文
- 服务器向浏览器回送一条HTTP响应报文
- 关闭连接 浏览器显示文档
相关知识:
IP协议
按层次分,IP(Internet Protocol)网际协议位于网络层。
IP协议的作用是把各种数据包传送给对方。而要保证确实传送到对方那里,则需要满足各类条件。其中两个重要的条件是IP地址和MAC地址(Media Access Control Address)。
IP地址指明了节点被分配到的地址,MAC地址是指网卡所属的固定地址。
TCP协议(三次握手策略)
按层次分,TCP位于传输层,提供可靠的字节流服务。
为了准确无误地将数据送达目标处,TCP协议采用了三次握手(three-way handshaking)策略。用TCP协议把数据包送出去后,TCP 不会对传送后的情况置之不理,它一定会向对方确认是否成功送达握手过程中。使用了TCP的标志(flag)—SYN(synchronize)和ACK(acknowledgement)。
DNS域名解析协议
DNS (Domain Name System)服务是和HTTP协议一样位于应用层的协议。它提供域名到IP地址之间的解析服务。
计算机既可以被赋予IP地址,也可以被赋予主机名和域名。
用户通常使用主机名或域名来访问对方的计算机,而不是直接通过IP地址访问。因为与IP地址的一组纯数字相比,用字母配合数字的表示形式来指定计算机名更符合人类的记忆习惯。但要让计算机去理解名称,相对而言就变得困难了。因为计算机更擅长处理一长串数字。
为了解决上逑的问题,DNS服务应运而生,DNS协议提供通过域名查找IP地址,或逆向从IP地址反查域名的服务。
HTTP报文标准格式
请求方法 url 版本协议
请求首部字段——主机名 服务器名字 连接方式(长链接 短连接) 连接类型 内容长度
内容实体