计网(ping dns tcp)

ping:网络诊断工具,判断数据包能否成功传输给另一个网络主机,测试网络中主机之间的连通性和网络延迟。

返回结果中包括:目标主机的域名及IP地址;数据包的大小(字节数);发送数据包的往返时间(time);(TTL-time to live)表示数据包在丢失之前经过了几个网点,可以用来识别路由问题;统计信息,比如一共发送了几个数据包,最大最小传输时间等。

ping的工作原理?

答:通过ICMP互联网控制报文协议实现,发送接收icmp报文(发送echo request 接收reply),测试请求是否能够达到、接收回复,并进行时间计算,一般来说会发送四次甚至更多,得到一个准确平均有效的诊断结果。

DNS的作用?

答:DNS是域名管理系统,主要作用是将我们易于理解的域名转换成能够定位目标服务器的IP地址。

有根域名服务器,顶级域名服务器,权威域名服务器,和本地域名服务器。

DNS具有缓存,输入URL时,首先会在浏览器缓存中查找,如果没有则去操作系统,路由器缓存查找,如果都没有,则去本地DNS服务器查找。如果还没有,询问根域名服务器,根域名服务器会根据域名指向顶级域名服务器,然后指向权威域名服务器,在这里能得到对应IP地址。(递归和迭代查询)。

TCP  VS  UDP

TCPUDP
面向连接是,传输前要先建立连接
可靠性是,具有序号、确认和重传机制否,发送后不需要确认,可能出现丢包、顺序错乱、重复等
数据传输方式字节流数据报文段
首部开销较大较小
是否支持广播否,一对一通信支持一对多
是否有状态
适用场景要求数据准确的场景音视频直播、准确性要求不高,实时性要求较高的场景

HTTP是基于TCP还是基于UDP?

答:2.0以前用的是TCP协议,3.0用的是QUIC协议,这个是基于UDP的。这个变化解决了2.0中的队头阻塞问题。

队头阻塞是指2.0中一个TCP连接进行多路复用,多个请求响应使用一个TCP连接。这样,如果一个响应中因为网络拥塞或丢包导致阻塞,后续的其他请求和响应都无法实现,会降低效率。而3.0一个TCP连接建立了多个不同的数据流,只写数据流之中独立不会互相影响,某个数据流丢包了,其他数据流不会受影响(多路复用和轮询)。

TCP协议之上:HTTP  HTTPS  FTP(文件传输协议)  SMTP(简单邮件传输协议)  POP3(邮件接收协议)  SSH(secure shell  protocol) 等

UDP协议之上:DNS  HTTP3.0  RTP(实时传输协议)

TCP三次握手和四次挥手的实现过程

只有三次握手才能确定双方都具备发送和接收数据的能力,所以三次挥手缺一不可。

 为什么需要进行四次挥手?

答:因为只有四次挥手才能确保双方数据都发送完毕,双方都同意可以断开连接。客户端首先发起断开连接的请求,发送FIN,表示没有数据要发送了,但还可以接收数据。S收到之后,可能还有数据要发送,所以不能马上关闭连接,所以S会发送一个ACK表示接收到C的断开请求。等到S处理完之后,也没有数据需要再进行传输时,才会发送FIN信号,表示可以断开连接。C收到之后,会返回一个ACK信号,表示收到,但是由于不知道自己发送的ACK有没有真的传输到S那边,所以会进入time_wait状态等待2MLS时间,以防S端重传数据,可以再次通信。S收到C的ACK之后,知道可以结束,直接进入close状态。

不能把S端的ACK和FIN合并是因为,收到FIN信号之后,可能还有数据没处理完,但是得通知C收到了他的信号,所以先回复ACK,等到S自己处理好之后,再发送FIN,表示自己数据也发送完了,可以断开连接。

第一次挥手失败:没收到S的ACK,就触发超时重传,超过次数限制之后,断开连接。

第二次挥手失败:C没收到S的ACK,但ACK不会重传,所以C会再发FIN,直到收到回复或者超过次数限制。此外,如果主动申请关闭方收到ACK之后,会进入fin_wait_2状态,一直等待。

第三次挥手失败:没有收到ACK的话,会超时重传或超过次数限制之后断开连接。实际中,为了管理资源和用户体验,客户端那边也会关闭连接,不会一直等待。

第四次挥手失败:服务器会重传FIN,客户端每次接收到都会重新启动一个2MLS的定时器,如果超过服务器最大重传次数,服务器也会关闭连接。客户端只要在2mls时间内没再收到信息,也会直接关闭。

为什么需要time_wait状态,为什么time_wait状态的时间是2MLS?

答:

1、为了防止上一个连接残留下来的数据在后面的连接中被错误接收。例如,上一个连接中,关闭连接之前的报文被网络延迟了,打开新连接之后抵达,就会被错误接受。而设计了2MLS的等待时间之后,能够确保两个方向上的数据包都被丢弃,原来连接的数据都能在网络内自然消失。

2、因为第四次挥手的ACK有可能丢失,如果不等待,C端直接关闭,而S端没有收到ACK请求重传的话,会收到RST(重置)报文。这样关闭很不优雅。

MLS是指一个片段在网络中存活的最大时间,2MLS就是一个请求一个回复所需的最大时间。这个时间范围能够保证在网络中阻塞的数据能自然消失;也能确保,S端已经收到了最后一个ACK没有重传的FIN了,那么申请关闭连接的那方也能关闭。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值