天天看点

计算机网络相关面试题写在前面TCP和UDP的区别(面试常客)TCP三次握手(面试常客)TCP的四次挥手(面试常客)TCP是如何保证可靠性的Cookie和Session从输入URL到页面加载发生了什么(面试常客)Get和Post的区别HTTP(面试常客)

计算机网络相关面试题

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

写在前面

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

如果内容有问题或者有补充,欢迎大家评论!

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

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

计算机网络相关面试题写在前面TCP和UDP的区别(面试常客)TCP三次握手(面试常客)TCP的四次挥手(面试常客)TCP是如何保证可靠性的Cookie和Session从输入URL到页面加载发生了什么(面试常客)Get和Post的区别HTTP(面试常客)

如上图,就不做过多解释了。

UDP的应用场景:qq语音,qq视频,直播等

TCP的应用场景:文件传输、发送,接收邮件,远程登录等

TCP三次握手(面试常客)

这道题也是基础题,必问也是必须要会的!!!

图片来源:《图解HTTP》

计算机网络相关面试题写在前面TCP和UDP的区别(面试常客)TCP三次握手(面试常客)TCP的四次挥手(面试常客)TCP是如何保证可靠性的Cookie和Session从输入URL到页面加载发生了什么(面试常客)Get和Post的区别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的四次挥手(面试常客)

计算机网络相关面试题写在前面TCP和UDP的区别(面试常客)TCP三次握手(面试常客)TCP的四次挥手(面试常客)TCP是如何保证可靠性的Cookie和Session从输入URL到页面加载发生了什么(面试常客)Get和Post的区别HTTP(面试常客)
  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》

计算机网络相关面试题写在前面TCP和UDP的区别(面试常客)TCP三次握手(面试常客)TCP的四次挥手(面试常客)TCP是如何保证可靠性的Cookie和Session从输入URL到页面加载发生了什么(面试常客)Get和Post的区别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状态码

计算机网络相关面试题写在前面TCP和UDP的区别(面试常客)TCP三次握手(面试常客)TCP的四次挥手(面试常客)TCP是如何保证可靠性的Cookie和Session从输入URL到页面加载发生了什么(面试常客)Get和Post的区别HTTP(面试常客)

HTTP和HTTPS的区别

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

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