TCP基础篇(一)

文章目录

      • [1.TCP 是如何保证可靠性的?](#1.TCP 是如何保证可靠性的?)
      • [2. 滑动窗口机制](#2. 滑动窗口机制)
      • [3 超时重传](#3 超时重传)
      • [4.TCP 报文格式](#4.TCP 报文格式)
      • [5. 什么是 TCP 协议](#5. 什么是 TCP 协议)
        • [5.1 如何唯一确定一个 TCP 连接](#5.1 如何唯一确定一个 TCP 连接)
      • [6.TCP 三次握手过程](#6.TCP 三次握手过程)
        • [6.1 可以两次握手吗?](#6.1 可以两次握手吗?)
      • [7.TCP 的四次挥手](#7.TCP 的四次挥手)
        • [7.1 为什么客户端要等待2MSL?](#7.1 为什么客户端要等待2MSL?)
      • [8.linux 中查看 TCP 的连接](#8.linux 中查看 TCP 的连接)
      • [9.TCP 为什么要有最后一次 ACK 报文(美团面试)](#9.TCP 为什么要有最后一次 ACK 报文(美团面试))
      • [10.TCP 和 UDP 的区别](#10.TCP 和 UDP 的区别)

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

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

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

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

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

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

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

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

2. 滑动窗口机制

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

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

3 超时重传

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

4.TCP 报文格式

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

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

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

5. 什么是 TCP 协议

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

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

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

6.TCP 三次握手过程

6.1 可以两次握手吗?

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

7.TCP 的四次挥手

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

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

8.linux 中查看 TCP 的连接

plain 复制代码
netstat -ant

查看具体端口的连接

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

plain 复制代码
netstat -ant | grep ESTABLISHED | wc -l

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 都是传输层的两个协议,实现端到端传输的。、

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

相关推荐
云飞云共享云桌面18 分钟前
SolidWorks服务器+云飞云共享云桌面 = 10人共享方案
linux·运维·服务器·网络·制造
皮皮学姐分享-ppx8 小时前
政府绿色采购数据库(2015-2024.3)
大数据·网络·数据库·人工智能·制造
HackTwoHub8 小时前
最新Nessus2026.6.8版本主机漏洞扫描/探测工具Windows/Linux
linux·运维·服务器·安全·web安全·网络安全·安全架构
W_chuanqi8 小时前
联想M7615DNA网络打印方法
网络·联想·打印机网络连接
QWEDDRFTG9 小时前
C13/C19怎么选?服务器电源线电流与接口选型技巧
服务器
QWEDDRFTG11 小时前
服务器电源线怎么选?接口、电流、线径、认证一次讲清
服务器
HavenlonLabs12 小时前
硬件 + SaaS 产品的工程化路径:从系统架构、PCB 设计到工程样机
网络·安全·架构·系统架构·安全架构
yychen_java15 小时前
当算法成为武器:AI泛滥时代的多维危机透视与治理路径
网络·人工智能·ai
漫途科技15 小时前
精准盯防危房隐患,智守人居安全|MTB46-4-2A 4G数据采集终端专项应用方案
网络·安全
mN9B2uk1716 小时前
大数据量高并发的数据库优化
服务器·数据库·oracle