【计算机网络笔记】传输层——TCP特点与段结构

系列文章目录

什么是计算机网络?
什么是网络协议?
计算机网络的结构
数据交换之电路交换
数据交换之报文交换和分组交换
分组交换 vs 电路交换
计算机网络性能(1)------速率、带宽、延迟
计算机网络性能(2)------时延带宽积、丢包率、吞吐量/率
计算机网络体系结构概念
OSI参考模型基本概念
OSI参考模型中非端-端层(物理层、数据链路层、网络层)功能介绍
OSI参考模型中端-端层(传输层、会话层、表示层、应用层)功能介绍
TCP/IP参考模型基本概念,包括五层参考模型
网络应用的体系结构
网络应用进程通信
网络应用对传输服务的需求
Web应用之HTTP协议(涉及HTTP连接类型和HTTP消息格式)
Cookie技术
Web缓存/代理服务器技术
传输层服务概述、传输层 vs. 网络层
传输层------多路复用和多路分用
传输层------UDP简介
传输层------可靠数据传输原理之Rdt协议
传输层------可靠数据传输之流水线机制与滑动窗口协议



TCP特点概述

更具体的内容可以查看RFCs-793, 1122, 1323, 2018, 2581。

TCP的特点是:

  • TCP提供的是一种点对点的通信机制。所以只能有一个发送方,一个接收方。

  • 提供可靠的、按序的字节流传输机制。

  • 使用流水线机制。这里面窗口尺寸的设置比较复杂,并不是简单设置一个常数就可以了。而是基于流水线机制进行动态的调整。

  • 在发送方和接受方都有缓存(从缓存的角度来看,TCP像SR)。

  • TCP是面向连接的协议。所以:

    • 通信双方在发送数据之前必须建立连接;
    • 这种连接是端-端的,所以连接状态只在连接的两端中维护(比如我们的计算机和百度的服务器) ,在沿途节点中并不维护状态;
    • TCP连接包括:两台主机上的缓存、连接状态变量、socket 等。
  • TCP是全双工(full-duplex)。即同一连接中能够传输双向数据流。

  • 提供流量控制机制和拥塞控制机制


TCP段结构

  • 序列号和ACK序列号不是段的编号,而是利用数据的字节数来计数。
  • U选项代表紧急数据,一般不使用
  • A是标志位,来指示ACK number那个字段是否有效
  • P是PUSH,要求立刻把数据推送给上层,一般来说也不用
  • RST、SYN和FIN是用来进行连接的建立、拆除等等的标志位

TCP段中的序列号指的是段(segment)中第一个字节的编号,而不是segment的编号。比如把1K的字节的数据,拆成了两个段,那么第二个段的序列号不是2也不是1,一般是500或501,即这个段中第一个字节的编号。此外,建立TCP连接时,双方随机选择序列号。

ACK number里面是希望接收到的下一个字节的序列号。并且TCP当中的ACK使用累积确认的机制(从确认的角度来看,TCP像GBN)。累计确认是该序列号之前的所有字节均已被正确接收到。

TCP中并没有规定如何处理乱序到达的段,需要由TCP的实现者做决策。

比如下面这张图,使用telnet远程登录到主机B,主机A这边输入一个字符,主机B那边收到会回传:建立连接后,当用户输入C这个字符后,会产生一个TCP段,段的序列号为42,ACK number是79,这两个数字是建立连接时随机选择的,意味着期望收到的下一个字节的序列号是79,主机B回传这个字符,返回的段的序列号是79,ACK number是43,43是因为前一个段的编号是42,而且装了一个字符,即一个字节,所以下一个希望收到的段的编号是43,并且意味着43号之前的段都收到了。这时主机A再发送一个确认,但没有装数据。

相关推荐
悟乙己2 小时前
AFAC2026 赛题四金融长文本 Agent竞赛学习笔记:关联技术(二)
笔记·学习·金融
yi0112 小时前
LeetCode 424. 替换后的最长重复字符|不定长滑动窗口:如何判断窗口是否合法?
笔记·python·算法·leetcode·双指针·滑动窗口
花间相见3 小时前
【计算基础|网络09】TCP(上):三次握手与四次挥手
网络·网络协议·tcp/ip
杨逢昌工厂6S管理3 小时前
116——杨逢昌:归位三定闭环法的旺季轻量化执行方案与工具清单
经验分享·笔记·职场和发展·学习方法
想喝奶茶啾啾3 小时前
AMBA CHI架构以及规范中使用的术语 翻译笔记(1)
笔记·arm·chi
北京盛世宏博3 小时前
多协议以太网温湿度变送器:Modbus TCP/UDP/SNMP 协议应用场景详解
单片机·tcp/ip·udp·传感器·温湿度
wdfk_prog3 小时前
LWIP教程 08:从 `tcp_write()` 到 ACK 清队列——TCP 数据发送、窗口与回调
网络·网络协议·tcp/ip
anew___3 小时前
《从零手写操作系统 (37):网络协议栈基础——Socket接口与TCP状态机》
网络·网络协议·tcp/ip
wdfk_prog4 小时前
LWIP教程 10:从 `tcp_receive()` 到 `ooseq` / SACK——TCP 乱序、重组与选择确认
网络·数据库·tcp/ip
yi0114 小时前
LeetCode 3. 无重复字符的最长子串|不定长滑动窗口:什么时候更新最大值?
笔记·python·算法·leetcode·双指针·滑动窗口