【面试题】计算机网络基础

一、在浏览器中输入url地址到显示主页的过程

大部分人的回答:
1、DNS域名解析;[域名->IP地址]
2、TCP连接;[TCP3次握手]
3、发送HTTP请求;[HTTP请求]
4、服务器处理请求并返回HTTP报文;[HTTP响应]
5、浏览器解析响应内容,进行渲染,呈现给用户;
6、连接结束;[四次挥手]

如果你是面试官,听到这样的回答你会怎么想?觉得面前这个面试者没啥亮点吧!!所以我们还是尽可能的详细拆分每一个步骤

DNS域名解析过程

1、浏览器搜索自己 的DNS缓存
2、若没有,则搜索操作系统中DNS缓存和HOSTS文件;
3、若没有,则操作系统将域名发送至本地域名服务器,本地域名服务器查询自己的DNS缓存,查找成功则返回结果,否则依次向根域名服务器、顶级域名服务器、权限域名服务器发起查询请求,最终返回IP地址给本地域名服务器;
4、本地域名服务器将得到IP地址返回给操作系统,同时自己也将IP地址缓存起来
5、操作系统将IP地址返回给浏览器,同时自己也将IP地址缓存起来;
6、浏览器得到域名对应的IP;

DNS缓存
分为:浏览器缓存、系统缓存、路由器缓存、IPS服务器缓存、根域名服务器缓存、顶级域名服务器缓存、主域名服务器缓存。

DNS在区域传输的时候使用TCP协议,其他时候使用UDP协议;

二、TCP与UDP

常问问题

  • 为什么TCP要三次握手【可靠性】
  • TCP三次握手流程
  • TCP建立时为啥要传回SYN【为了保证不发生丢包,就给每个包一个序号,同时序号也保证了传送到接收端实体的包的按序接受】
  • TCP四次挥手
  • TCP对应的协议和UDP对应的协议
  • TCP和UDP区别
  • 拥塞控制
  • 滑动窗口
  • 流量控制

TCP

定义:传输控制协议是一种面向连接的、可靠的、基于字节流的传输层通信协议;
设计目标:能够动态的适应互联网络的特性,还要具备面对各种故障时的健壮性;
主要功能
TCP为了保证报文传输的可靠,就给每个包一个序号,同时序号也保证了传送端到接收端实体的包的按序接受。然后接收端实体对已成功收到的字节发回一个相应的确认(ACK),如果发送端实体在合理的往返时延内未收到确认,那么对应的数据丢失将会被重传;

  • 在数据正确性和合法性上,TCP用一个校验和函数来检验数据是否有误,在发送和接受时都要计算校验,同时可以使用md5认证对数据进行加密;

  • 在保证可靠性上,采用超时重传和捎带确认机制;

  • 在流量控制上,采用滑动窗口协议,协议中规定,对于窗口内未经确认的分组需要重传;TCP采用可变滑动窗口来实现流量控制

    流量控制
    定义:对发送方发送速率的控制,称为流量控制;发送方的发送端口不可以大于接受方发回的窗口大小;

    如何控制?
    接受方在每次收到数据包时,可以在发送确认报文的时候,告诉接受方自己的缓存区还剩余多少是空闲的;缓存区的剩余大小称为接受窗口大小,用win来表示;
    当发送方收到之后,便会调整自己的发送效率,也就是调整发送窗口的大小;当发送方收到接受窗口的大小为0时,发送方会停止发送数据,防止丢包情况出现;

    那什么时候在继续发送数据呢?
    如果一直为0,发送非零窗口大小的报文,但报文丢失,那么发送方的发送窗口就会一直死锁;
    解决办法:
    当发送方收到接受窗口win=0时,发送方停止发送报文,并且同时开启一个定时器,每隔一段时间就去询问接受方,是否继续传送数据,如果可以,接受方会告诉发送方此时接受窗口的大小;如果接受窗口还是0,则发送方再次刷新启动定时器;【接受窗口的大小是根据算法动态调整的】

    滑动窗口
    定义:用于网络数据传输时的流量控制,以避免拥塞的发生。该协议允许发送方在停止并等待确认前发送多个数据分组 。由于发送方不必每发一个分组就停下来等待确认,所以该协议加速数据的传输,提高网络吞吐量。

  • 在拥塞控制上,采用TCP拥塞控制算法(AIMD算法)【TCP拥塞控制是TCP避免网络拥塞的算法】,包括四个方面;
    1:慢启动:每当建议一个TCP连接或一个TCP连接发生超时重传后,该连接便进入慢启动阶段。进入慢启动后,TCP实体将拥塞窗口(cwnd,单位字节)的大小初始化为一个报文段,即:cwnd=1,此后,每收到一个报文段的确认(ACK),cwnd值加1,即拥塞窗口按指数增加。不要一开始就发送大量的数据,先探测一下网络的拥塞程度;
    发送方此时可以连续发送两个数据报文段,接受方收到该数据报文段后,给发送方一次发回2个确认报文段,发送方收到这两个确认报文段后,将cwnd的 值变为4……………………以此类推,当cwnd值超过慢启动阈值(ssthresh)或发生报文段丢失重传时,慢启动阶段结束。前者进入拥塞避免阶段,后者重新进入慢启动阶段;
    2:拥塞避免:在慢启动阶段,当cwnd值超过慢启动阈值后,慢启动过程结束,TCP链接进入拥塞避免阶段。在拥塞避免阶段,每一次发送的cwnd个报文段被完全确认后,才将cwnd值加1。在此阶段,cwnd值线性增加。
    在这里插入图片描述
    选择:
    cwnd<ssthresh,使用慢开始算法;
    cwnd>ssthresh,使用拥塞避免算法
    cwnd=ssthresh,任选其一;

    3:快速重传:快速重传对超时重传的改进。
    II 当接受方收到一个失序 的 报文段后立即发出重复确认,而不等到自己发送数据时捎带确认;
    III 当发送方收到对同一个报文的三个重复确认时,就确定一个报文段已经丢失,因此like重传丢失的报文段,而不必等到重传定时器超时。以此减少不必要的等待时间。
    快速重传做的事情:将ssthresh设置为cwnd的一半;把cwnd在设置为ssthresh的值;重新进入拥塞避免阶段;
    4:快速恢复:对丢失恢复机制的改进。在快速重传之后,不经过慢启动过程而直接进入拥塞避免阶段。

TCP的拥塞控制主要原理依赖于一个拥塞窗口来控制;TCP还有一个对端通告的接收窗口用于流量控制;
TCP拥塞控制窗口变化的原则是AIMD,加法增大,乘法减小;一旦出现丢包,立即减半退避;

主要特点:

  • 基于流的方式;
  • 面向链接;
  • 可靠的通信方式
  • 在网络状况不佳的时候尽量降低系统由于重传带来的带宽开销;
  • 通信连接维护是面向通信的两个端点的,不考虑中间网段和节点。

为了满足TCP协议的特点,TCP协议做了如下的规定:
1:数据分片:在发送端对用户数据进行分片,在接收端进行重组,由TCP确定分片的大小并控制分片和重组;
2:到达确认:接收端接收到分片数据时,根据分片数据序号向发送端发送一个确认;
3:超时重发:发送方在发送分片时启动超时定时器,如果在定时器超时之后没有收到相应的确认,重发分片;
4:滑动窗口:TCP连接每一方的接受缓冲空间大小都固定,接收端只允许另一端发送接受段缓冲区所能接纳的数据,TCP在滑动窗口的基础上提供流量控制,防止较快主机致使较慢主机的缓冲区溢出;
5:失序处理:作为IP数据报来传输TCP分片达到时间可能失序,TCP将对收到的数据进行重新排序,将收到的数据以正确的顺序交给应用层;
6:重复处理:作为IP数据报来传输的TCP分片会发生重复,TCP的接受端必须丢弃重复的数据;
7:数据校验:TCP将保持他的首部和数据的检验,这是一个端到端的检验,目的是检测数据在传输过程中的任何变化。如果收到分片的检验和差错,TCP将丢弃这个分片,并不确认收到此报文段导致对端超时并重发;

首部格式
源端口(Source Port)、目标端口(Destination Port)、确认序列号(Acknowledgment Number)、数据偏移(Data Offset)、windows窗口大小;
SYN:SYN报文,在建立TCP连接的时候使用;
ACK:在确认TCP连接的时候使用;
FIN :表示没有数据需要发送了,在关闭TCP连接的时候使用;

TCP三次握手流程

1、客户端发送SYN报文给服务器端,客户端进入SYN_send状态;
2、服务端收到SYN报文,回应一个SYN+ACK的报文,进入SYN_RECV状态;
3、客户端收到服务器端的SYN报文,回应一个ACK报文,进入Established(确立)状态;
在这里插入图片描述

TCP四次挥手过程

1、客户端发送FIN包告诉服务器,表示自己没有要发送的数据了;
2、服务器收到FIN报文后发送一个应答包ACK,告诉客户端我知道了,但是我还有数据要发;
3、服务器发送FIN报文给客户端,告诉客户端我也没有数据要发送了;
4、客户端收到FIN报文后发送ACK应答包给服务器,服务器接受到应答包后进入close状态;
在这里插入图片描述


UDP

定义:用户数据报协议,是一种无连接的传输层协议,提供面向事务的简单不可靠信息传送服务;


TCP和UDP协议对比

TCP是面向连接的传输控制协议,而UDP提供了无连接的数据报 服务;
TCP具有高可靠性,确保传输数据的正确性,不出现丢失或乱序;UDP在传输数据前不建立连接,不对数据报进行检查和修改,无须等待对方回答,所以会出现分组丢失、重复、乱序;
UDP具有较好的实时性,工作效率比TCP协议高;UDP段结构比TCP段结构简单,因此网络开销也小;
在这里插入图片描述


TCP和UDP对应的协议

TCP:
1、FTP: 文件传输协议,端口号:21;
2、Telnet:远程登录端口,端口号:23;
3、SMTP:简单邮件传输协议,端口号:25;
4、POP3:接受邮件,端口号:110;
5、HTTP:超文本传输协议,端口号:80;

UDP:
1、DNS:域名解析,将域名转换为IP地址,端口号:53;
2、SNMP:网络管理协议,用来管理网络设备,端口号:161;
3、TFTP:文件传输协议,端口号:69;

三、OSI七层模型

应用层:网络服务与最终用户的一个接口;协议有 :HTTP、FTP、TFTP、FMTP、DNS
表示层:数据的小时、安全、压缩;
会话层:建立、管理、终止会话;
传输层:定义传输数据的协议端口号,以及流控和差错校验;协议:TCP、UDP
网络层:进行逻辑地址寻址,实现不同网络之间的路径选择;协议:IP;
数据链路层:建立逻辑连接、进行硬件地址寻址、差错校验等功能
物理层:建立、维护、断开物理连接。

#### TCP/IP分层


四、HTTP协议

HTTP协议

定义:超文本传输协议,一个简单的请求-响应 协议;
特点
HTTP允许传输 任意类型的数据。传输的类型由Content-Type加以标记;
无状态。对于客户端每次发送的请求,服务器都认为是一个新的请求,上一次会话和下一次会话之间没有联系;
支持客户端/服务器模式;

报文格式
1、请求:由请求行、请求头、空行、请求体组成;

请求行:请求方法(GET/POST/DELETE/HEAD/PTIONS/PUT),URL,HTTP版本,
请求头:格式“属性名:属性值”,服务端根据请求头获取客户端信息,cookie,host,connection,accept-language
请求体:用户请求的数据;

在这里插入图片描述

状态行:协议版本、状态码、状态描述;
响应头:响应字段:connection、content-type、content-length、set-cookie、expires;
响应体:服务器返回给客户端的内容;

![在这里插入图片描述](https://img-blog.csdnimg.cn/5312facead834440a39c55a2cff1b2de.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAROiAgeatqg==,size_20,color_FFFFFF,t_70,g_se,x_16

HTTP状态码
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

HTTPS和HTTP的区别
1、HTTP是超文本传输协议,信息是明文传输;HTTPS是具有安全性的ssl加密传输协议;
2、HTTP和HTTPS用的端口不一样,HTTP端口是80,HTTPS是443;
3、HTTP运行在TCP协议之上;HTTPS运行在SSL协议之上,SSL运行在TCP协议之上;


五、Cookie与Session的区别

  • 作用范围不同,Cookie保存在客户端,Session保存在服务器端;
  • 有效期不同,Cookie可设置为长时间保持,比如我们经常使用的默认登录功能,Session一般失效时间较短,客户端关闭或者Session超时都会失效;
  • 隐私策略不同,Cookie存储在客户端,容易被窃取;Session存储在服务端。安全性相对于Cookie要好一些;
  • 存储大小不同,单个Cookie保存的数据不能超过4K;对于Session来说存储没有上限,但出于对服务器的性能考虑,Session内不要存放过多的数据,并且需要设置Session删除机制;

六、对称加密和非对称加密

对称加密:通信双方使用相同的秘钥进行加密。特点是加密速度快,缺点是秘钥泄露会导致密文数据被破解。常见的对称加密有AES和DES算法;
非对称加密:公钥和私钥。公钥是公开 的,任何人都可以获得,而私钥是私人保管的。公钥负责加密,私钥负责解密;
优点:安全性更高,但是计算量相比对称加密大很多,加密和解密都很慢。常见的非对称加密算法有RSA和DSA;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值