TCP基础篇(一)

1.TCP 是如何保证可靠性的?

1. 三次握手连接建立连接 , 2. 序列号与确认应答 ,3. 数据包重传,4. 滑动窗口机制 ,5. 拥塞控制等方面来考虑 TCP 保证连接的可靠性的。

  1. 连接建立 TCP 通过三次SYN-ACK 确认机制保证了双方都具有发送和接受的能力,结束的时候通过四次挥手保证双方都结束发送。

  2. 面向字节流的,每次都是发送一段字节过去,包在网络中是无序的,有的先抵达了,有的后抵达,通过序列号和应答,,保证了数据的有序性。

  3. 超时重传机制:如果发送方长时间没有收到确认报文,会触发超时重传机制,重传丢失的报文。

  4. 滑动窗口机制 Tcp 有流量控制的机制,发送方会根据接收方的接受窗口来发送数据报文,避免接收方无法接收数据报文,导致报文丢失

  5. 拥塞控制:通过慢启动 ,拥塞避免 ,快重传和快恢复算法调整发送速率来避免网络拥塞.

这几个地方都可以继续往下挖,能深挖到的东西还是很多的。

2. 滑动窗口机制

滑动窗口机制允许发送方和接收方之间实现流量控制和可靠性传输,发送方可以持续发送数据而不需要等待每一个数据段的确认,从而提高传输效率. 接受方可以根据自身的处理能力和缓冲区调整窗口大小,从而控制发送方窗口大小.

https://blog.csdn.net/qq_46631497/article/details/137253124

3 超时重传

https://blog.csdn.net/u010429831/article/details/119389928

4.TCP 报文格式

alt

需要重点掌握的是 序号和确认号, seq 和 ack****,在三次握手和四次挥手中作用:

对于控制位需要有了解,了解这些控制位的作用.

alt

seq 和 ack 用来解决网络包乱序问题和解决丢包问题。
alt

5. 什么是 TCP 协议

tcp 是一种 1. 面向连接的 ,2. 基于字节流的,3. 可靠的传输协议。 一共三个点都需要说清楚了

5.1 如何唯一确定一个 TCP 连接

通过四元组可以唯一确定 TCP 的连接.源地址,源端口,目的地址 ,目的端口.

6.TCP 三次握手过程

alt

6.1 可以两次握手吗?

如果第一次的 SYN 数据包在网络中阻塞,发送方进行了重传,重传数据包到达接收方,接收方返回 SYN-ACK. 然后第一次 SYN 数据包到达了接收方,接收方任务又是一次连接,就向接收方发送一个 ACK.这个时候接收方进入等待,但是发送方不会接收这个报文,浪费接收端的资源连接

7.TCP 的四次挥手

alt

7.1 为什么客户端要等待2MSL?

主要原因是为了保证客户端发送那个的第一个ACK报文能到到服务器,因为这个ACK报文可能丢失,并且2MSL(是任何报文在网络上存在的最长时间),超过这个时间报文将被丢弃,这样新的连接中不会出现旧连接的请求报文。

8.linux 中查看 TCP 的连接

netstat -ant

alt

alt

查看具体端口的连接

alt

通过 netstat -ant 显示 tcp, 通过 grep 过滤出来已经建立链接的,再通过 wc -l 来统计数量。

netstat -ant | grep ESTABLISHED | wc -l

alt

当前windows电脑用git bash 39条TCP连接

alt

9.TCP 为什么要有最后一次 ACK 报文(美团面试)

本质上是在问 tcp 的三次握手的过程,为什么不能是两次握手的过程

假设 A 向 B 发送了一个连接报文请求,SYN=1,ACK=1,但是由于网络的阻塞,A 一直没有收到响应报文就快速重传了第二个报文,B 收到第二个报文回复 A 一个 SYN =1 和 ACK=1 的报文。

等到原来的请求报文到达 B 的时候,B 以为是另一个报文,响应 A 一个报文,但是 A 并不会响应 B,B 就会一直等待 A,浪费系统的资源,如果大量这样的连接被浪费,那么很快就会消耗系统的资源。发送最后一个 ack,可以保证双方都有接收和发送的能力。

10.TCP 和 UDP 的区别

TCP 和 UDP 都是传输层的两个协议,实现端到端传输的。、

连接方式、可靠性、数据顺序、传输效率、应用场景。

alt

#计算机网络女大学生##TCP网络#
牛牛的面试专栏 文章被收录于专栏

牛牛的面试专栏,希望自己在25年可以拿到一份大厂的SP Offer 你的点赞和收藏都是我持续更新的动力

全部评论

相关推荐

人生一梦:24年我投暑期实习,它以我不是女的为理由拒绝了我查看图片
点赞 评论 收藏
分享
评论
1
8
分享

创作者周榜

更多
牛客网
牛客企业服务