计算机网络知识总结(三)

525 阅读5分钟

概述

本章节主要是对开发面试中经典的面试问题进行总结分析。

问题

1)请简单说一下TCP/UDP的区别?

  • TCP面向连接,UDP面向非连接即发送数据前不需要建立连接。
  • TCP提供可靠的服务,UDP无法保证。
  • TCP面向字节流,UDP面向报文。
  • TCP数据传输慢,UDP数据传输快。
  • TCP传输不限制大小,UDP单次传输报文有限制(64K)。

2)请你说说你了解的端口以及对应的服务

端口服务
21FTP(文件传输协议)
22SSH
25SMTP(简单邮件传输协议)
53DNS域名服务器
80HTTP超文本传输协议
443HTTPS
3306MySQL服务默认端口
110POP3邮件协议

3)说一说TCP的三次握手?(重点)

第一次握手:建立连接,客户端发送请求报文,等待服务器确认。

第二次握手:服务端收到来自客户端的请求报文之后,进行确认,对收到的ACK字段+1也就是X+1,再加上SYN字段一起返回给客户端。

第三次握手:客户端收到SYN_ACK报文段,然后将ACK设置为y+1,然后再次发给服务器端,由此客户端和服务端都进入了ESTABLISHED状态,完成了三次握手。

img

4)假如在进行三次握手的时候,第三次失败了,此时会发生什么?为什么是四次挥手而不是三次,或者五次

手如果第三次失败了会怎么样:失败了服务端收到不确认包,会超时重发,若还是没有收到确认包,或者收到了数据包,则服务端直接发送reset重置包结束本次连接。

四次挥手之所以结束时需要多一次请求是因为:客户端单方面无数据发送认为可以结束了,但是服务端不一定没有数据发送,所以服务端要将确信信息和自身发起断开分作两步。

5)说一下在浏览器中输入网址之后执行会发生什么?

具体详见:juejin.cn/post/694178…

6)ip到MAC地址是如何转换的,MAC地址到ip呢?

ARP协议和RARP协议。

简单解释一下:

  • 每个主机都会存在一个ARP缓冲区,里面存在一个ARP关系列表,主要是IP和MAC地址的对应关系。
  • 当源主机需要发送数据的时候,首先会检查自己的ARP列表中是否存在对应的主机的MAC地址,如果有就直接发送数据,如果没有,就向本网段所有的主机发送ARP数据包,该数据包格式为:源主机 IP 地址 源主机MAC地址 目标主机的IP地址。
  • 当本网络所有机器收到该ARP包的时候,首先检查对方请求的是不是自己,如果不是则忽略,如果是,则取出数据写入自己的ARP列表,如果列表中已经存在了,则覆盖,然后将自己的MAC地址写到对应的响应包中,返回给源主机。
  • 源主机收到响应之后,将目标主机的IP和MAC地址写入ARP列表,并利用此数据发送数据。如果源主机一直没有收到ARP的回复则表示ARP查询失败。

这里需要科普ARP欺骗:

ARP欺骗(英语:ARP spoofing),又称ARP毒化ARP poisoning,网络上多译为ARP病毒)或ARP攻击,是针对以太网地址解析ARP的一种攻击技术,通过欺骗局域网内访问者PC的网关MAC地址,使访问者PC错以为攻击者更改后的MAC地址是网关的MAC,导致网络不通。此种攻击可让攻击者获取局域网上的数据包甚至可篡改数据包,且可让网络上特定计算机或所有计算机无法正常连线。

img

简单来说就是本来应该到网关的包被伪装网管的机器给拦截了。

7)说一下OSI七层模型和TCP/IP四层模型

详情见:juejin.cn/post/694178…

8)说一下HTTP协议里面包含了哪些请求?

------------重要------------

  • GET:对服务器资源的简单请求
  • POST:用于发送包含用户提交数据的请求

------------以及------------

  • HEAD:类似于GET请求,不过返回的响应中没有具体内容,用于获取报头
  • PUT:传说中请求文档的一个版本
  • DELETE:发出一个删除指定文档的请求
  • TRACE:发送一个请求副本,以跟踪其处理进程
  • OPTIONS:返回所有可用的方法,检查服务器支持哪些方法
  • CONNECT:用于ssl隧道的基于代理的请求

9)说一说Get和Post的区别?

从原理性看:

  • 根据HTTP规范,GET用于信息获取,而且应该是安全和幂等的
  • 根据HTTP规范,POST请求表示可能修改服务器上资源的请求

从表面上看:

  • GET请求的数据会附在URL后面,POST的数据放在HTTP包体
  • POST安全性比GET安全性高

参考资料

TCP为什么是三次握手,为什么不是两次或者四次 && TCP四次挥手

TCP三次握手(第三次失败咋整),四次挥手(为啥他多一次)

常见面试题整理--计算机网络篇(每位开发者必备)