计算机网络八股文整理自用

计算机网络八股文整理自用

  • TCP三次握手

​ TCP三次握手,是指建立一个TCP连接时,客户端和服务器一共发送3个包完成连接的建立。(主动发起连接的是客户端,被动等待连接的是服务端)三次握手的目的是连接服务器指定端口,建立TCP连接,并同步连接双方的序列号和确认号并交换 TCP 窗口大小等信息。

  • 第一次握手:客户端向服务器发送连接请求报文,其中SYN=1表示建立连接请求,seq赋值为一个随机数(表示发送数据的第一个字节的序号)
  • 第二次握手:服务端收到请求后,返回 客户端的SYN = 1,加上自己的确认号ACK=1,seq赋值为y(发送的具体数据第一个字节序号)确认号ack = x + 1,希望客户端下一次返回编号x + 1个字节为止的数据。(下一次从哪个字节开始发)

经过以上两次握手,客户端得出客户端发送接收能力正常,服务端发送接收能力也都正常,但是此时服务器并不能确认客户端的接收能力是否正常,所以还要进行第三次握手。

  • 第三次握手:客户端收到服务端返回的请求确认后,再次发送数据,原封不动返回ACK = 1,(这里就不需要再发送 SYN=1了,为什么呢?因为此时并不是跟服务端进行连接请求,而是连接确认,所以只需要返回ACK = 1)代表确认,同样的,发送的具体数据第一个字节编号记为seq = x + 1,希望服务端下次传输的数据第一个字节编号记为ack = y + 1。
查看源图像

TCP四次挥手

查看源图像

四次挥手即 TCP 连接的释放,通信双方都可以释放连接,假设客户端主动释放连接。在挥手之前主动释放连接的客户端结束ESTABLISHED 阶段,随后开始四次挥手:

① 首先客户端向服务器发送一段 TCP 报文表明其想要释放 TCP 连接,其中:

标记位为 FIN=1,表示请求释放连接;

其序号为 Seq = u;

随后客户端进入 FIN-WAIT-1 阶段,即半关闭阶段,并且停止向服务端发送通信数据

② 服务器接收到客户端请求断开连接的 FIN 报文后,结束 ESTABLISHED 阶段,进入 CLOSE-WAIT 阶段并返回一段 TCP 报文,其中:

标记位为 ACK=1,表示接收到客户端释放连接的请求;

序号为 Seq = v;

确认号为 ack = u + 1,(表示是在收到客户端报文的基础上,将其序号值加 1 )表示本段报文确认号ack的值;

随后服务器开始准备释放服务器端到客户端方向上的连接。客户端收到服务器发送过来的 TCP 报文后,确认服务器已经收到了客户端连接释放的请求,随后客户端结束 FIN-WAIT-1 阶段,进入 FIN-WAIT-2 阶段。

③ 服务器端在发出 ACK 确认报文后,服务器端会将遗留的待传数据传送给客户端,待传输完成后即经 过 CLOSE-WAIT 阶段,便做好了释放服务器端到客户端的连接准备,再次向客户端发出一段 TCP 报文, 其中:

标记位为 FIN 和 ACK,表示已经准备好释放连接了;

序号为 Seq = w;

确认号 Ack = u + 1,表示是在收到客户端报文的基础上,将其序号 Seq 的值加 1 作为本段报文确认号 Ack 的值。
随后服务器端结束 CLOSE-WAIT 阶段,进入 LAST-ACK 阶段。并且停止向客户端发送数据。

④ 客户端收到从服务器发来的 TCP 报文,确认了服务器已经做好释放连接的准备,于是结束 FIN-WAIT-2 阶段,进入 TIME-WAIT 阶段,并向服务器发送一段报文,其中:

标记位为 ACK,表示接收到服务器准备好释放连接的信号;

序号为 Seq= u + 1,表示是在已收到服务器报文的基础上,将其确认号 Ack 值作为本段序号的值;

确认号为 Ack= w + 1,表示是在收到了服务器报文的基础上,将其序号 Seq 的值作为本段报文确认号的值。

随后客户端开始在 TIME-WAIT 阶段等待 2 MSL。服务器端收到从客户端发出的 TCP 报文之后结束LAST-ACK 阶段,进入 CLOSED 阶段。由此正式确认关闭服务器端到客户端方向上的连接。客户端等待完 2 MSL 之后,结束 TIME-WAIT 阶段,进入 CLOSED 阶段,由此完成「四次挥手」。

等待2MSL的意义
1.保证客户端最后发送的ACK能够到达服务器,帮助其正常关闭。

由于这个ACK报文段可能会丢失,使得处于LAST_ACK状态的服务器得不到对已发送FIN报文段的确认,从而会触发超时重传。服务器会重发FIN报文段,客户端能保证在2MSL时间内收到来自服务器的重传FIN报文段,从而客户端重新发送ACK应答报文段,并重置2MSL计数。

假如客户端不等待2MSL就之间进入CLOSE状态,那么服务器会一直处于LAST_ACK状态。

当客户端发起建立SYN报文段请求建立新的连接时,服务端会发送RST报文段给客户端,连接建立的过程就会被终止。

2.防止已失效的连接请求报文段出现在本连接中。

TIME_WAIT等待的2MSL时间,确保本连接内所产生的所有报文段都从网络中消失,使下一个新的连接中不会出现这种旧的连接请求报文段。

输入一个URL到浏览器中,会发生什么

1.域名解析(DNS解析)

2.发起TCP的三次握手

3.建立TCP连接后发起HTTP请求(如果浏览器存储了该域名下的Cookies,那么会把Cookies放入HTTP请求头里发给服务器。)

4.服务器端响应http请求,浏览器得到html代码

5.浏览器解析html代码,并请求html代码中的资源

6.浏览器对页面进行渲染呈现给用户

DNS域名解析

DNS域名解析协议是基于UDP的应用层协议,它的作用是根据用户输入的域名,将域名解析为对应的IP地址,让用户进行访问。

1.客户机向本地缓存查找,若没有找到,就将请求发送到本地DNS服务器
2.本地DNS会在本机进行查找,若没有找到,就会将请求发送到根域名的DNS服务器
3.根域名服务器解析根域名部分,将下一级DNS权限域名服务器的地址响应给客户机本地DNS服务器
本地DNS服务器根据此地址访问。
4.迭代查询,直到访问到最后有目标IP的DNS服务器
5.DNS服务器将IP返回本地DNS服务器,本地DNS服务器进结果返回客户机
6.客户机通过IP访问目标主机,完成解析过程。
在这里插入图片描述

OSI七层模型

查看源图像

OSI七层模型包括,从下到上: 物理层,数据链路层,网络层,运输层,会话层,表示层,应用层

TPC/IP五层协议
物理层,数据链路层,网络层,运输层,应用层

物理层的作用

解决两台物理机之间的通信,通过二进制比特流进行数据传输,将二进制流转换问高低电平,到达目的后再将高低电平转换为机器二进制码。 网卡,集线器工作在这一层、

数据链路层的作用

在不可靠的物理介质中提供可靠的传输,接收来自物理层的流数据,封装成帧,传输到上一层,反向的也能将上一层的数据帧,拆分成流发送到物理层。在这一层通过差错控制,流量控制等办法,使有差错的物理线路转变为无差错的数据链路。提供物理寻址的功能。交换机工作在这一层

网络层的作用

将网络地址翻译为对应的物理地址,并决定如何将数据从发送方路由到接收方,通过路由算法为分组选择通过子网的最佳路径。路由器工作在这一层

传输层的作用

传输层提供了进程之间的逻辑通信,传输层向高层用户屏蔽了下层的实现细节,使程序看起来向两个传输层之间进行交互的

会话层的作用

建立会话:身份验证,权限鉴定等;保持会话:对该会话进行维护,在会话维持期间二者可以随时使用这条会话传输数据;断开会话:当应用程序或应用层规定的超时时间到期后,OSI会话层才会释放掉这条会话

表示层的作用

对数据格式进行编译,对发送或接收到的数据根据应用层的特征进行处理,如处理为 文字,图片 等,还可以对压缩文件进行解压缩、对加密文件进行加密等

应用层的作用

提供应用层协议,如HTTP协议,FTP协议等等,方便程序之间进行通信

参考博客:

https://blog.csdn.net/qq_45748351/article/details/123373669

http://t.csdn.cn/Ler7j

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值