4.3 传输控制协议TCP

欢迎大家订阅【计算机网络】学习专栏,开启你的计算机网络学习之旅!

文章目录

  • 前言
  • [1 概述](#1 概述)
  • [2 特点](#2 特点)
  • [3 套接字(Socket)](#3 套接字(Socket))
  • [4 TCP 连接的管理](#4 TCP 连接的管理)

前言

TCP 协议通过可靠的连接、流量控制、拥塞控制等机制,确保在不可靠的 IP 网络上实现可靠的数据传输。本章详细讲解了 TC P协议的基本概念、主要特点以及套接字和 TCP 连接的管理。

1 概述

TCP(传输控制协议,Transmission Control Protocol) 是一种面向连接 的传输层协议,它为网络中的应用程序提供可靠的 字节流服务。

TCP 协议建立在不可靠的 IP 网络之上,通过增加多种机制,确保数据能够可靠、顺序地传输。

2 特点

①面向连接

  • TCP 是面向连接的协议,在传输数据之前,必须在通信的两端建立一条逻辑连接。连接的建立通过三次握手(three-way handshake)完成,确保双方准备好接收和发送数据。
  • 连接的两端通过套接字(socket)来标识,每个套接字由 IP 地址和端口号组成。

②可靠性保障

  • TCP 提供可靠的交付服务,通过确认应答重传机制序列号校验和等手段,确保数据包在传输过程中不会丢失,并且按照正确的顺序到达接收端。
  • 若数据包在传输过程中丢失或错误,TCP 会自动请求重新传输,直到接收方确认收到数据。

③全双工通信

TCP 支持全双工通信,即通信双方可以同时发送和接收数据,数据流在双方之间可以并行传输

④面向字节流

  • TCP 中的"流"(stream) 指的是流入或流出进程的字节序列
  • TCP 将应用层数据视为字节流,不保证数据块大小,即发送方和接收方之间的数据块不必一一对应。接收方收到的数据可能被分割成多个小块,也可能是发送方的一个大数据块。
  • 虽然 TCP 是面向字节流的,但它会确保发送方发出的字节流与接收方收到的字节流完全一致

⑤流量控制与拥塞控制

  • TCP 提供流量控制机制,通过窗口大小来调节数据的发送速率,防止接收方缓存溢出。
  • 通过拥塞控制算法(如慢启动、拥塞避免、快速重传等),TCP 动态调整发送速率,避免网络出现拥塞。

3 套接字(Socket)

①定义

在 TCP 协议中,连接 是通信的基础,每个 TCP 连接都是由两个端点(套接字)构成的。
套接字(Socket) 是连接双方的抽象,它用于标识网络中的通信端点。在 TCP 协议中,每个套接字由一对唯一的IP 地址端口号组成,形成一个连接的标识符。

②格式
IP地址 : 端口号

【示例】
192.168.1.20:2028,表示位于 IP 地址 192.168.1.20 上的端口 2028

③TCP 连接的端点

每一条 TCP 连接唯一地由两个端点标识:

复制代码
TCP 连接 = {socket1, socket2} = {(IP1: port1), (IP2: port2)}

其中,socket1socket2 分别表示两端的 IP 地址和端口号。

④套接字的多重含义

在网络编程和操作系统中,socket 一词有多种含义:

  • API 接口:应用程序通过调用操作系统提供的套接字 API(称为 socket API)来进行网络编程。
  • 套接字函数 :在 socket API 中,socket() 是用于创建套接字的函数。
  • 套接字描述符 :当调用 socket() 函数时,操作系统会返回一个套接字描述符,它是一个用于标识套接字的唯一标识符。
  • 套接字实现:在操作系统内核中,套接字是通过 Berkeley 套接字接口来实现的,主要用于网络通信的管理和操作。

4 TCP 连接的管理

在 TCP 协议中,连接是通信的基础。TCP 连接的生命周期包括建立、数据传输和拆除三个阶段:

①建立连接(三次握手)

  • 客户端发送一个SYN(同步)报文段,表示请求连接。
  • 服务器响应一个SYN-ACK(同步-确认)报文段,表示同意连接。
  • 客户端再次发送一个ACK(确认)报文段,表示连接建立成功。

②数据传输

一旦连接建立,双方可以开始数据的双向传输 。数据以字节流 的方式传输,TCP 会对数据进行分段处理,每个数据段都有序列号和确认号来确保可靠交付。

③拆除连接(四次挥手)

当数据传输完成后,连接需要被拆除,拆除过程包括四次挥手:

  • 一方发送FIN(结束)报文段,表示希望关闭连接。
  • 另一方响应FIN-ACK,表示确认关闭连接。
  • 发送方再次发送ACK,表示确认对方的关闭请求。
  • 最终连接被完全关闭。

在 TCP 协议中,连接是一种由操作系统和协议栈提供的抽象 。每一条连接由一对套接字(IP 地址和端口号)唯一标识。

因此,即使是同一台机器上的多个应用进程,也可以通过不同的端口号在同一 IP 地址上建立多个独立的 TCP 连接。

同一个 IP 地址和端口号组合只能对应一条 TCP 连接,但同一 IP 地址可以通过不同的端口号建立多个连接。不同的 IP 地址和端口号组合可以建立完全独立的连接。

相关推荐
guts°1 小时前
10-ACL技术
网络·网络协议
群联云防护小杜1 小时前
深度隐匿源IP:高防+群联AI云防护防绕过实战
运维·服务器·前端·网络·人工智能·网络协议·tcp/ip
笑衬人心。1 小时前
TCP 拥塞控制算法 —— 慢启动(Slow Start)笔记
笔记·tcp/ip·php
_丿丨丨_6 小时前
XSS(跨站脚本攻击)
前端·网络·xss
一只栖枝7 小时前
HCIA-Security 认证精讲!网络安全理论与实战全掌握
网络·web安全·网络安全·智能路由器·hcia·it·hcia-security
FileLink跨网文件交换7 小时前
文件摆渡系统十大软件|文件摆渡系统如何构建网络安全呢?
网络
晨欣10 小时前
大型语言模型(LLM)在网络安全中最具商业价值的应用场景(Grok3 回答 DeepSearch模式)
网络·web安全·语言模型
有书Show11 小时前
个人IP的塑造方向有哪些?
网络·网络协议·tcp/ip
iFulling11 小时前
【计算机网络】第四章:网络层(上)
学习·计算机网络
HHRL-yx11 小时前
C++网络编程 5.TCP套接字(socket)通信进阶-基于多线程的TCP多客户端通信
网络·c++·tcp/ip