5.3 传输控制协议TCP概述

思维导图:

5.3 传输控制协议TCP概述笔记

目的和方法概述

  • 简介:TCP是一个复杂的协议,需先理解基础概念后再深入其可靠性、流量控制、拥塞控制等高级特性。
  • 学习方法:分步骤逐渐深入,从基础特性理解到实现机制。

5.3.1 TCP最主要的特点

  1. 面向连接:

    • 必须建立连接才能通信,类似于打电话的过程。
    • 连接建立后,数据传输结束需释放连接。
  2. 点对点通信:

    • 每个TCP连接只有两个端点,是一对一的通信。
  3. 可靠交付服务:

    • 数据准确无误,不会丢失,不会重复,且按序到达。
    • 通过序列号、确认应答、重传机制等实现。
  4. 全双工通信:

    • 双方都可以同时发送和接收数据。
    • 通过维护发送和接收缓冲区来管理数据。
  5. 面向字节流:

    • TCP不关心传输的数据结构,只管字节序列。
    • 发送方和接收方的数据块大小可能不一致。
    • 接收方应用程序需要能够处理字节流并重建成有意义的数据。

图5-8 TCP面向字节流的概念说明

  • 示意图展示了TCP如何将应用数据处理成字节流并发送。
  • 强调了TCP的发送策略是与UDP不同的,它基于窗口大小和网络拥塞控制决定报文段的大小。
  • TCP报文段在网络上传输时还会加上IP首部,进一步封装到数据链路层。
  • 虽然示意图中报文段较小,但实际中TCP报文段可包含上千个字节。

注意事项

  • 虽然TCP提供可靠交付,但不保证实时性或最短延迟。
  • TCP的可靠性和控制特性可能引入额外的延迟和开销。
  • 了解TCP的首部结构对于理解其功能至关重要。

我的理解:

让我们用一些日常生活中的比喻来理解TCP的工作原理:

  1. 面向连接(打电话): 想象你在打电话前,需要先拨号建立连接。对方接听后,你们开始通话。这就像是TCP的三次握手过程,确保双方都准备好了数据交换。通话结束后,你们要挂断电话,这类似于TCP连接的终止过程。

  2. 点对点(邮寄信件): 把TCP连接想象成寄一封信。信件从你(发送方)通过邮局发送到你的朋友(接收方)。就像TCP连接一样,信件只在你和你的朋友之间传递,没有第三方参与。

  3. 可靠性(快递服务追踪): 就像使用带有追踪服务的快递,即便包裹经过多个转运站,最终都能确保送达。如果包裹丢失,快递公司会找到它或者发送替代品。这就像是TCP的重传机制,确保所有数据都能准确到达。

  4. 有序传输(装配线): 想象一个装配线,部件必须按照一定的顺序组装。就算某个部件晚到了,装配工也会等待并按顺序装配好每个部件。TCP在接收数据时也是这样,即使数据包到达顺序不对,它们也会被重新排列,以保证最终数据的正确顺序。

  5. 流量控制(交通信号灯): 就像交通信号灯控制车辆流量,避免交通拥堵一样,TCP使用滑动窗口机制来控制数据流,以免网络或接收方处理不过来。

  6. 拥塞控制(人流控制): 想象一个音乐会入口,在人太多时需要限制进入速度以避免拥挤。TCP的拥塞控制也是如此,它能感知网络中的拥堵并调整数据发送速度。

  7. 全双工通信(双向车道): 把TCP连接想象成一条双向车道,允许汽车同时往来。即使在同一时刻,两辆车也可以互相穿过,类似于TCP连接的双方可以同时发送和接收数据。

  8. 面向字节流(电影流): 就像你在网上观看电影,虽然影片是由一帧帧图片组成的,但你感受到的是连续的视频流。TCP将数据作为一个连续的流处理,而不关心数据的具体边界。

5.3.2 TCP的连接

TCP连接的基础概念
  • 面向连接的协议:TCP是一个面向连接的协议,这意味着在数据传输之前,必须在两个端点之间建立一个连接。
  • 端点的定义:在TCP中,端点不是指主机、IP地址、应用进程或端口,而是指套接字(socket)。
套接字(Socket)
  • 定义:套接字是IP地址与端口号的组合,用于唯一标识网络中的一个端点。
  • 表示方法 :套接字通过点分十进制的IP地址后接端口号表示,两者之间用冒号分隔。例如,IP为192.3.4.5、端口号为80的套接字表示为(192.3.4.5:80)
  • 数学表示
    • 套接字:socket = (IP地址:端口号)
    • TCP连接:由两端的套接字唯一确定,TCP连接 := {socket₁, socket₂} = {(IP1:port₁), (IP2:port₂)}
TCP连接的唯一性
  • 每一条TCP连接是通过通信双方各自的套接字唯一确定的,这两个套接字分别是连接两端的端点。
  • 在网络中,同一个IP地址可以有多个不同的TCP连接;同样,同一个端口号也可以用于多个不同的TCP连接。
抽象层次
  • 协议软件的抽象:TCP连接是由网络协议软件提供的一种抽象概念。
  • 端点的抽象 :尽管在讨论时我们可能会提到"应用进程之间的TCP连接",但实际上TCP连接的端点是由套接字抽象表示的,即(IP地址:端口号)
套接字(Socket)的多重含义
  • 应用编程接口(API):Socket作为应用程序访问网络协议的API,是传输层和应用层之间的接口,通常称为socket API。
  • 函数名称 :在socket API中,有一个函数名也叫做socket
  • 函数调用的端点 :调用socket函数创建的端点被称为socket(例如,"创建一个数据报socket")。
  • 返回值 :调用socket函数时,返回的文件描述符也被称为socket。
  • 系统实现:在操作系统内核中的网络协议实现,尤其是Berkeley实现,也被称为socket实现。
注意事项
  • 概念区分:上述不同层次和场景中的"socket"概念应当加以区分,以避免混淆。特别是与RFC 793中定义的套接字(端口号拼接到IP地址)是不同的。

我的理解:

  1. 建立连接:当你拨打电话之前,需要有一个电话号码,这个电话号码就像是网络中的IP地址和端口号组成的套接字。当你拨号时,电话网络会为你和接听人建立一条连接,这个过程就像是TCP三次握手的过程,它确保了你和对方都准备好接收和发送信息。

  2. 通信过程:一旦连接建立,你和对方就可以开始通话了。你们可以互相听到对方的声音,确保信息准确无误地传达。在TCP连接中,这对应于数据的传输,TCP保证数据按顺序、完整地到达对方那里,如果有什么错误或丢失,就会要求重新发送,就像如果电话里听到的声音断断续续或不清楚时,你可能会说"你能再说一遍吗?"

  3. 结束通话:通话结束时,你会挂断电话,而对方也会挂掉电话,这样电话线路就被释放了。在TCP连接中,这个"挂断"过程对应于四次挥手的过程,它确保双方都同意关闭连接,并且所有的数据都已经传输完毕。

就像一次电话通话从拨号到挂断的全过程,TCP连接保证了数据通信的可靠性。每次通话都是独立的,就像网络中每个TCP连接都是独立的,有自己的起点和终点(套接字)。而多个电话通话可以同时进行,就像一台主机可以同时有多个TCP连接。

相关推荐
不爱学英文的码字机器6 分钟前
[Linux] Shell 命令及运行原理
linux·运维·服务器
cdut_suye17 分钟前
Linux工具使用指南:从apt管理、gcc编译到makefile构建与gdb调试
java·linux·运维·服务器·c++·人工智能·python
qq_4336184421 分钟前
shell 编程(三)
linux·运维·服务器
网安墨雨40 分钟前
常用网络协议
网络·网络协议
Tlzns43 分钟前
Linux网络——UDP的运用
linux·网络·udp
丘狸尾1 小时前
[cisco 模拟器] ftp服务器配置
android·运维·服务器
黑客老陈1 小时前
新手小白如何挖掘cnvd通用漏洞之存储xss漏洞(利用xss钓鱼)
运维·服务器·前端·网络·安全·web3·xss
大猫和小黄1 小时前
Windows、CentOS环境下搭建自己的版本管理资料库:GitBlit
linux·服务器·windows·git
Joyner20181 小时前
【Linux】ubuntu通过远程命令行启动桌面应用
linux·服务器·ubuntu
ghostwritten1 小时前
Linux Swap: 深入解析 mkswap, mkfs.swap, 和 swapon
linux·运维·服务器