计算机网络

核心问题:

在浏览器中输⼊URL并按下回⻋之后会发⽣什么:

  • 解析URL

输⼊ URL 后,浏览器会解析出协议、主机、端⼝、路径等信息,并构造⼀个HTTP请求

  • DNS域名解析

在发送HTTP请求之前,浏览器需要知道想要访问⽹⻚(url)对应的IP地址

  • 建立TCP三次握手

(这⾥是重中之重,可以扩展很多问题,⽐如为什么是三次,不是两次、四次?如果第⼀次握⼿丢失了会发⽣什么?三次握⼿过程中可以携带数据吗?)

  • 浏览器发送HTTP/HTTPS请求到web服务器

(⽐如HTTP/HTTPS的区别?请求的⽅式?请求的状态码)

  • ​​​服务器处理HTTP请求并返回HTTP报文

服务器会接受请求并将其传递给请求处理程序并发送HTTP响应,⼀般响应报⽂包含:请求的⽹⻚以及状态码,压缩类型,如何缓存的⻚⾯,设置的cookie

  • 浏览器渲染⻚⾯
  • 断开连接之TCP四次挥⼿

DNS

        DNS(Domain Name System) 是⼀种⽤于将域名(www.baidu.com)转换为IP地址(220.181.111.188 )的分布式系统。
        DNS解析过程:

  1. 查询浏览器缓存是否已有对应记录
  2. 若无,前往计算机本地的Host文件中查询对应缓存
  3. 若依然没有,则向本地DNS服务器(通常由你的互联⽹服务提供商(ISP)提供, ⽐如中国移动)发送⼀个DNS查询请求
  4. 若没有该域名的解析记录,向根DNS服务器发送查询请求,告知本地DNS解析器向哪个顶级域(.com/.net/.org)的DNS服务器继续查询。
  5. 本地DNS解析器接着向指定的顶级域名DNS服务器发出查询请求,同样的告知本地DNS去哪个权威DNS服务器查
  6. 最后向权威DNS服务器发送查询请求。 权威DNS服务器是负责存储特定域名和IP地址映射的服务器。
  7. 本地DNS解析器将收到的IP地址返回给浏览器,并且还会将域名解析结果缓存在本地
  8. 浏览器使用IP地址与目标服务器建立连接

              递归查询:DNS客户端(通常是本地DNS解析器)向上层DNS服务器(如根域名服务器、顶级域名服务器)发起查询请求。只需要发送一个请求,等待完整的解析结果。上层DNS服务器会⾃⾏查询下⼀级的服务器,并将最终结果返回给DNS客户端
 

             迭代查询:DNS客户端向上层DNS服务器发起查询请求,不要求直接提供完整的解析结果。DNS客户端只是询问上层服务器⼀个更高级的域名服务器的地址,然后再自己发起查询请求

        HTTP(明文直接传输,不安全)

        WWW构建的技术包括:

  1. HTML:作为页面的⽂本标记语⾔
  2. HTTP:文档传输协议
  3. URL:指定文档所在地址

http1.1:长连接,tcp建立连接后,只要没有明确要求断开,就一直保存连接。

对头阻塞:普通的需要请求——响应然后再发出下一个请求。1.1提出请求可以直接发,不管它响应回来没。但响应顺序依然需要与请求一致,所以它只解决了请求的对头阻塞。

        HTTP1.1 基于请求-响应模型。同⼀个连接中, HTTP完成⼀个事务(请求与响应),才能处理下⼀个事务

      HTTP2通过Stream(多个Stream复⽤⼀条TCP连接,达到并发的效果),解决队头阻塞的问题

但客户端发起请求时,必须使用奇数号Stream,服务器主动推送必须使用偶数号Stream。
 但http2依然逃不脱请求的队头堵塞问题,这是它通过TCP传输,TCP是字节流协议,TCP层必须保证收到的请求数据是完整的,所以后续的请求必须先存放再缓冲区,这造成堵塞问题。

        所以http3选用UDP代替TCP。使用QUIC协议握手,直接通过连接ID来标记通信双方,客户端与服务器各选一组ID,即使切换网络导致IP地址变化,只要保有上下文信息(连接ID,TLS密钥)就可以直接切换。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值