AI智能
改变未来

计算机网络相关面试题

计算机网络相关面试题

  • 写在前面
  • TCP和UDP的区别(面试常客)
  • TCP三次握手(面试常客)
  • 为什么要三次握手
  • SYN和ACK是个啥
  • TCP的四次挥手(面试常客)
    • 为什么连接需要3次,而断开需要4次?
  • TCP是如何保证可靠性的
  • Cookie和Session
  • 从输入URL到页面加载发生了什么(面试常客)
  • Get和Post的区别
  • HTTP(面试常客)
    • HTTP状态码
    • HTTP和HTTPS的区别

    写在前面

    计算机网络是一门非常重要的学科,不管是在通信行业还是互联网行业,都是重点,对于编程语言来说,不管是Java,C/C++,还是Python等,都需要对它有所了解。但是计算机网络的相关知识太多了,今天我们就来梳理一下,与计算机网络的相关的一些高频面试题,至少在面试这快可以相对从容。
    如果内容有问题或者有补充,欢迎大家评论!

    TCP和UDP的区别(面试常客)

    这道面试题,基本是必问的。如果这题都答不上来,那就逃不掉回家等通知的命运了。

    如上图,就不做过多解释了。
    UDP的应用场景:qq语音,qq视频,直播等
    TCP的应用场景:文件传输、发送,接收邮件,远程登录等

    TCP三次握手(面试常客)

    这道题也是基础题,必问也是必须要会的!!!
    图片来源:《图解HTTP》

    1. 客户端 ->发送带有SYN=1标志的数据包,设置随机序号seq为X ->服务器端(一次握手)
    2. 服务器端 -> 返回带有SYN=1,ACK=1,ack=X+1的数据包,随机序号seq为Y->客户端(二次握手)
    3. 客户端 ->发送带有ACK=1,ack=Y+1的数据包 ->服务器端(三次握手)

    为什么要三次握手

    三次握手的目的是为了建立可靠的通信信道,让双方确认自己与对方的发送接收都是正常的。简单来说就是,我需要连接上对方,并且让对方知道我已经连接上对方了。

    SYN和ACK是个啥

    TCP首部有6个标志位。分别是:
    SYN(synchronous建立联机)
    ACK(acknowledgement 确认)
    PSH(push传送)
    FIN(finish结束)
    RST(reset重置)
    URG(urgent紧急)
    seq(Sequence number)(顺序号码)
    ack(Acknowledge number)(确认号码)
    其中:
    SYN包:请求建立连接的数据包,SYN=1表示要建立连接,
    ACK包:回应数据包,表示接收到了对方的某个包,仅当ACK=1时,确认号字段才有效,
    seq序列号:用来标记数据包的顺序,
    ack确认号:表示序列号为确认号减去1的数据包以及以前所有的数据包已经正确接收,也就是说它相当于下一个准备接收的字节的序号。

    TCP的四次挥手(面试常客)

    1. 客户端 -> 发送FIN=1,表示要断开连接,加上随机序号seq=u ->服务器到端
    2. 服务器端 -> 返回确认报文,ACK=1,ack=u+1,并返回它的随机序号seq=v ->客户端
    3. 服务器端 -> 发送FIN=1,ACK=1,ack=u+1,seq=w -> 客户端
    4. 客户端 -> 返回ACK=1,ack=w+1 -> 服务器端

    为什么连接需要3次,而断开需要4次?

    当关闭连接时,收到对方的FIN报文通知时,它仅仅表示对方没有数据发送给你了;但未必你所有的数据都全部发送给对方了,你可能还需要发送一些数据给对方,发送完之后,再发送FIN报文给对方来表示你同意可以关闭连接了。

    TCP是如何保证可靠性的

    • 校验和
    • 序列号
    • 确认应答
    • 超时重传
    • 连接管理
    • 流量控制
    • 拥塞控制
      具体详情,这里就不说了,因为太多了。

    Cookie和Session

    1. Session保存在服务器端,客户端不知道其中的信息,Cookie保存在客户端,服务器能够知道其中的信息;
    2. Session保存的是对象,Cookie保存的是字符串;
    3. Session不区分路径,同一个用户在访问网站期间,所有的Session在任何一个地方都能被访问到。而Cookie中如果设置了路径参数,那么同一个网站中不同的路径下的Cookie是互相访问不到的;
    4. Session需要Cookie才能正常,如果客户端完全禁止Cookie,则Session将失效。

    从输入URL到页面加载发生了什么(面试常客)

    图片来源:《图解HTTP》

    总体来说分为:

    1. DNS解析
    2. TCP连接
    3. 发送HTTP请求
    4. 服务器处理请求并返回HTTP报文
    5. 浏览器解析渲染页面
    6. 连接结束

    Get和Post的区别

    这是一道非常基础的题,也是在面试这绝对不能答错的题!!!

    1. Get将表单中数据按param=value的形式,添加到action所指向的URL后面,并且两者使用“?”连接,而各个变量之间使用“&”连接;Post是将表单的数据放在form的数据体中,按照变量和值相都对应的方式,传递到action所指向URL。
    2. Get是不安全的,因为在传输过程,数据被放在请求的URL中;Post的所有操作对用户来说都是不可见的。
    3. Get传送的数据量较小,这主要是因为受URL长度限制;Post传送的数据量较大,一般被默认为不受限制。
    4. Get限制Form表单的数据集的值必须为ASCII字符;而Post支持整个ISO10646字符集。

    HTTP(面试常客)

    HTTP状态码

    HTTP和HTTPS的区别

    • HTTPS协议需要到CA申请证书,一般免费证书很少,需要交费。
    • HTTP协议运行在TCP之上,所有传输的内容都是明文,HTTPS运行在SSL/TLS之上,SSL/TLS运行在TCP之上,所有传输的内容都经过加密的。
    • HTTP和HTTPS使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443。
    • HTTPS可以有效的防止运营商劫持,解决了防劫持的一个大问题。

    其他HTTP相关知识,参考:HTTP

    赞(0) 打赏
    未经允许不得转载:爱站程序员基地 » 计算机网络相关面试题