面试题记录二

1.画出TCP三次握手,四次挥手图

 

 

三次握手完成----连接建立完成,client相当于已经完成net.dail()函数的调用。server已经完成listener.accept()函数的调用。

ps:为什么握手是三次,挥手的四次?

握手如果是两次,那么仅仅是客户端知道自己发出去的消息被服务器收到了,但是服务器并不知道自己发出去的消息能不能被客户端收到,所以需要三次握手,确保数据安全可靠。

因为四次挥手中主动方发出FIN关闭连接请求,被动方此时处于半关闭状态。被动方需要将ack 应答传输完成,被动方再提出FIN关闭请求。而在三次握手中服务器却是将SYN和ACK一起发送给客户端。

2.浏览器输入www.cnblogs.com后,直到浏览器显示页面,这中间经历了什么?

根服务器简易图:​

                                    

解析IP地址过程图:

总体流程:

 一.把该域名解析为IP地址

         (1)、浏览器会首先查看本地 hosts 文件,看看其中有没有和这个域名对应的规则,如果有的话就直接使用 hosts 文件里面的 ip 地址。

         (2)、如果在本地的 hosts 文件没有能够找到对应的 ip 地址,浏览器会发出一个 DNS请求到本地的DNS服务器 。

        (3)、DNS请求到达本地DNS服务器之后,本地DNS服务器会首先查询它的缓存记录,如果缓存中有此条记录,就直接返回结果。如果没有,本地DNS服务器向根DNS服务器进行查询。

        (4)、根DNS服务器注意到其com后缀,于是向本地DNS服务器返回.com域服务器的IP地址。

        (5)、然后本地DNS服务器向.com域服务器发出请求,.com域服务器告诉本地DNS服务器,你得向cnblog.com域服务器查询才能知道答案,给出cnblog.com域服务器的IP地址。

        (6)、最后,本地DNS服务器向cnblog.com域服务器发出请求,这时就能收到一个域名和IP地址对应关系,本地DNS服务器不仅要把IP地址返回给用户电脑,还会把这个对应关系保存在缓存中,以备下次别的用户查询时,可以直接返回结果,加快网络访问。

二. 拿到IP地址后,浏览器和服务器进行TCP三次握手,建立连接。

三.与服务器建立了连接后,浏览器向服务器发送http请求。

四.服务器给浏览器进行一个301永久重定向响应。

       IP对应的服务器很可能是代理服务器,比如输入“http://baidu.com”,而不是“http://www.baidu.com”,这两个网址对应的是同一个网页,因此通过代理服务器的方式进行重定向响应,让这两个网址访问的同一个网页。 浏览器根据重定向地址再次进行HTTP请求。

五.服务器处理请求并返回处理结果。

Web服务器通常通过监听80端口来获取客户端的HTTP请求,Web服务器收到客户端发来的数据,并通过HTTP解码,将响应数据返回给浏览器。

六.浏览器对数据解析渲染并将页面呈现给用户。

 浏览器收到响应内容之后,生成主页框架,同时向服务端继续发送请求,请求的内容是主页里的一些资源,比如说图片、视频等。 对于静态的页面内容,浏览器通常进行缓存,对于动态的内容通常不缓存,缓存的时间也是有期限的。浏览器向服务器发送异步请求,因为有些页面显示完成之后客户端仍需要与服务端保持联系。 整个过程结束之后,浏览器关闭TCP连接。

七.进行TCP四次挥手,关闭TCP连接。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值