网络 面试

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_34645958/article/details/80882661

1.TCP的状态有哪些?

在TCP层,有个FLAGS字段,这个字段有几个标识:

(1)SYN(synchronous):建立连接

(2)FIN(finish):关闭连接

(3)ACK(acknowledge):响应

(4)PSH(push):表示有数据传输

(5)RST(reset):表示连接重置

  (6) URG(urgent):紧急位

2.TCP的三次握手?

   (1) 第一次握手:Client也是首先创建传输控制块TCB,然后向B发出连接请求报文段,(首部的同步位SYN=1,初始序列号seq=x),Client进入SYN-SENT(同步已发送)

   (2) 第二次握手:server收到连接请求报文段后,如同意建立连接,则Client发送确认报文,在确认报文段中(同步位SYN=1,确认位ACK=1,确认号ack=x+1,初始序列号seq=y),server进程进入SYN-RCVD(同步收到)状态;

   (3) 第三次握手:Client收到server的确认后,要向server给出确认报文段(确认位ACK=1,确认号ack=y+1,序列号seq=x+1),TCP连接建立,进入ESTABLISHED(已建立连接)状态

3.TCP四次挥手?

    (1)第一次挥手:client发送连接释放报文段(终止位FIN=1,序号seq=u),并停止再发送数据,主动关闭TCP连接,进入FIN-WAIT-1(终止等待1)状态,等待server的确认。

    (2)第二次挥手:server收到连接释放报文段后即发出确认报文段,(确认位ACK=1,确认号ack=u+1,序号seq=v),server进入CLOSE-WAIT(关闭等待)状态,此时的TCP处于半关闭状态,客户端到服务端的连接释放。client收到server的确认后,进入FIN-WAIT-2(终止等待2)状态,等待server发出的连接释放报文段。

      (3)第三次挥手:server没有要向client发出的数据,server发出连接释放报文段(终止位FIN=1,确认位ACK=1,序号seq=w,确认号ack=u+1),server进入LAST-ACK(最后确认)状态,等待client的确认。

        (4)第四次挥手:client收到server的连接释放报文段后,对此发出确认报文段(确认位ACK=1,序列号seq=u+1,确认号ack=w+1),client进入TIME-WAIT(时间等待)状态。此时TCP未释放掉,需要经过时间等待计时器设置的时间后,A才进入CLOSED状态。

4.为什么是三次握手?

    

    三次握手的目的是为了确认双方都有收发数据的能力

    

    第一次: A->B,证明A有发消息的能力。

    第二次: B->A,证明B有收消息,并且有发消息的能力。

    第三次: A->B,证明A有收消息的能力。

    二次握手达不到目的,四次多余。

 

5.为什么是四次挥手?

    

三次握手是SYN和ACK一起发送的,但在四次挥手的时候是FIN和ACK分开发送

这是因为server端可能还有报文要发送,所以并不会立即发送FIN报文关闭连接

 6.当输入一个网址后发生什么?

(1)进行DNS解析 

                   1)检查浏览器缓存

                   2)检查本地host文件

                   3)请求本地DNS服务器

                   4)请求根域名服务器,返回主域名服务器

                   5)查询主域名服务器,返回name service 服务器

                   6)请求name server服务器,返回ip

 (2)浏览器根据IP和默认端口(80),和服务器三次握手建立连接。请求对应的资源

(3)服务器返相应的资源

(4)四次挥手释放连接

(5)客户端解析HTML内容并显示

    

7.OSI 七层模型和TCP/IP的分层和每层的作用?

OSI

物理层:以二进制的数据形式在物理媒体上传输数据   (IEEE802.1)

数据链路层:传输有地址的帧              (arp ppp)

网络层:为数据包选择路由                (ip  ospf rip  bgp)

传输层:提供端到端的连接               (tcp udp)

会话层:解除或建立与其它节点的连接

表示层:数据格式转换,数据加密

应用层:文件服务,虚拟终端            (http,ftp)

TCP/IP

网络接口层,网际层,传输层,应用层

8.常见的HTTP响应状态码?

(1)2XX(成功)

        200(成功)服务器已成功处理了请求。
   201(已创建)请求成功并且服务器创建了新的资源。 
   202(已接受)服务器已接受请求,但尚未处理。 

(2)3XX(重定向)

         301:永久重定向

         302:临时重定向

(3)4XX(请求错误)

           400:服务器不理解请求的语法

           401:未授权,请求要求身份验证

           403:服务器拒绝请求

           404:服务器未找到网页

(4)5XX服务器错误

          500:服务器内部错误

9.TCP和UDP的区别?

(1)TCP面向连接,UDP是无连接的

(2)TCP提供可靠的服务(无差错,不丢失,不重复,按序到达)(通过重传机制,滑动窗口,确认应答等)

         UDP尽最大努力交付,即不保证可靠交付

(3)UDP具有较好的实时性,工作效率比TCP高

(4)每一条TCP连接只能是点到点的;UDP支持一对一,一对多,多对多的通信

(5)TCP连接对系统资源要求比较高,UDP对系统资源要求少

10.讲一讲滑动窗口协议

滑动窗口协议是TCP使用的一种流量控制方法,允许发送方在停止并等待确认前可以连续发送多个分组。(加速数据的传输)

实现原理:接收方和发送方都维持着一个窗口,接收方将窗口剩余的尺寸和期待接收的下一字节序号在确认信息中发送给发送方;发送方根据接收方剩余的空间大小来定量的发送合适的数据给接收方

11.什么是拥塞控制?拥塞控制的方法有那些?

拥塞控制:防止过多的数据注入到网络中,这样可以使网络中的路由器或链路不至过载

拥塞控制的方法:慢开始,拥塞避免,快重传,快恢复

慢开始:由小到达逐渐增大发送窗口,开始传报文时先把拥塞窗口大小置1,每经过一个往返时间,拥塞窗口就加倍

拥塞避免:让拥塞窗口缓慢的增大,每经过一个往返时间,拥塞窗口加1

快重传:接收端收到失序报文后立即发出重复确认,发送方连续收到三个相同的重复确认,就判定数据包丢失,立即重传

快恢复:由于收到连续的确认报文,所以认定网络没有阻塞。所以快重传后进入拥塞避免阶段而不是慢启动

12.HTTP和HTTPS区别?

(1)http连接很简单,是无状态的(不具备保存之前发过的请求或响应的功能)。HTTPS是由SSL+HTTP构建的可进行加密传输,身份认证的协议

(2)https需要用到ca证书

(3)http和https用的端口也不同,前者80,后者443

13.HTTPS工作原理?

(公钥&私钥:私钥加密后的密文,公钥都可以解。公钥加密后的密文,只有私钥可以解)

                    整个通信过程会用到一次非对称加密算法,后续内容加密解密都是使用对称密钥加密算法

(1)浏览器向服务器的443端口发起请求,请求携带了浏览器支持的加密算法

(2)服务器将数字证书返回给浏览器(认证机构对公钥进行数字签名,形成证书)

(3)客户端收到数字证书后,进入数字证书认证环节

         1)检验证书合法性:从内置的证书列表中索引,找到服务器下发证书对应的机构,如果没有找到提示证书不是权威机构颁布,不可信任

                查到对应的机构,则取出该机构的证书公钥

         2)检验是否被篡改:用证书公钥解密得到证书内容和证书签名(内容包括网址,网站公钥,加密算法等),(将证书内容做hash算法,对比得到的字符串和证书签名),一样则未被篡改

    (4)客户端生成随机数R,并用网站公钥对R加密,将R传送给服务器

    (5)服务器用R为密钥对网页内容加密,传送给浏览器

    (6)浏览器以R为密钥解密获取网页内容

13.http get和post的区别?

(1)get请求的数据会在地址栏显示出来,post请求不会在地址栏显示出来

(2)传输数据的大小.get请求由于地址长度的限制导致传输数据长度的限制

(3)安全性,post安全性比get高.数据是在地址栏中出现,可通过历史纪录找到

猜你喜欢

转载自blog.csdn.net/qq_34645958/article/details/80882661