面试问题记录 -- 关于一次HTTP请求的过程

本文详细探讨了HTTP请求的过程,包括DNS解析、TCP三次握手、HTTP请求与响应、TCP四次挥手,以及POST和GET请求的区别。通过深入理解这些步骤,可以更好地了解网页加载背后的机制。
摘要由CSDN通过智能技术生成

参考文章:

  • https://www.jianshu.com/p/a9142a4d084f
  • https://www.cnblogs.com/xuzekun/p/7527736.html
  • https://segmentfault.com/a/1190000006879700
  • https://blog.csdn.net/qzcsu/article/details/72861891
  • https://www.jianshu.com/p/7c8b4576e4bb
  • https://blog.csdn.net/qq_22238021/article/details/81197157

在浏览器输入 www.baidu.com 按下回车究竟会发生什么呢?

过程概述

  1. 浏览器对 www.baidu.com 这个域名进行DNS域名解析,获得对应的IP地址。
  2. 通过IP地址找到对应的服务器,发起TCP三次握手。
  3. 基于TCP连接,发送HTTP请求。
  4. 服务器响应请求,并且返回html代码。
  5. 浏览器解析html的代码,并且请求静态资源(如:js、css、img等)。
  6. 浏览器将渲染的页面呈现给用户。

过程细节

1. DNS域名解析:

  1. 浏览器会搜索请求自身DNS缓存,寻找有没有对应的IP地址

  2. 如果没有找到,则会搜索系统自身的DNS缓存

  3. 如果没有找到,会搜索系统中host文件

  4. 如果上述三种方法都没有找到对应的IP地址,就会进行递归去域名服务器进行查找。

    具体的查找过程如下:

递归查询:一般客户机和服务器之间属递归查询,即当客户机向DNS服务器发出请求后,若DNS服务器本身不能解析,则会向另外的DNS服务器发出查询请求,得到结果后转交给客户机。
迭代查询:一般服务器与服务器之间属于迭代查询,按照提示的指引依次查询,直到服务器给出的提示中包含所需要查询的主机地址为止,一般每次指引都会更靠近根服务器(向上),查寻到根域名服务器后,则会再次根据提示向下查找。

关于域名:
在这里插入图片描述
在这里插入图片描述


2. TCP连接(TCP三次握手,四次挥手)

背景描述:
TCP,提供面向连接的服务,在传送数据之前必须先建立连接,数据传送完成后要释放连接。因此TCP是一种可靠的的运输服务,但是正因为这样,不可避免的增加了许多的开销,比如确认,流量控制等。对应的应用层的协议主要有 SMTP,TELNET,HTTP,FTP 等。
UDP,在传送数据前不需要先建立连接,远地的主机在收到UDP报文后也不需要给出任何确认。虽然UDP不提供可靠交付,但是正是因为这样,省去和很多的开销,使得它的速度比较快,比如一些对实时性要求较高的服务,就常常使用的是UDP。对应的应用层的协议主要有 DNS,TFTP,DHCP,SNMP,NFS 等。

  1. TCP中常用的端口号
应用程序 FTP SMTP TELNET HTTP SSH MYSQL TFTP DNS
端口 21,20 23 25 80 22 3306 69 53
传输层协议 TCP TCP TCP TCP TCP TCP UDP UDP
  1. TCP与socket概述

TCP把连接作为最基本的对象,每一条TCP连接都有两个端点,这种断点我们叫作套接字(socket),它的定义为端口号拼接到IP地址即构成了套接字,例如,若IP地址为192.3.4.16 而端口号为80,那么得到的套接字为192.3.4.16:80。

  1. TCP报文

    (1)源端口和目的端口,各占2个字节,分别写入源端口和目的端口;
    (2)序号,占4个字节,TCP连接中传送的字节流中的每个字节 都按顺序编号。例如,一段报文的序号字段值是 301 ,而携带的数据共有100字段,显然下一个报文段(如果还有的话)的数据序号应该从401开始;
    (3)确认号,占4个字节,是期望收到对方下一个报文的第一个数据字节的序号。例如,B收到了A发送过来的报文,其序列号字段是501,而数据长度是200字节,这表明B正确的收到了A发送的到序号700为止的数据。因此,B期望收到A的下一个数据序号是701,于是B在发送给A的确认报文段中把确认号置为701&

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值