【计算机网络笔记】传输层——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再发送一个确认,但没有装数据。

相关推荐
red watchma1 分钟前
OTA的HTTP笔记
笔记·网络协议·http
AI绘画小335 分钟前
【网络安全】Wireshark 抓包过滤:源 / 目的 IP 过滤 + 命令大全
数据库·tcp/ip·测试工具·安全·web安全·wireshark
('-')20 分钟前
《从根上理解MySQL是怎样运行的》第三章学习笔记
笔记·学习·mysql
LaoZhangGong12331 分钟前
TCP数据包格式分析
网络·网络协议·tcp/ip·以太网
老蒋新思维33 分钟前
创客匠人 2025 高峰论谈(11.22-25):AI 智能体重构创始人 IP 打造与知识变现的管理逻辑
大数据·网络·人工智能·网络协议·tcp/ip·重构·知识付费
柳一航1 小时前
HTML笔记
前端·笔记·html
诸葛思颖1 小时前
【论文阅读笔记】FL+HC(联邦学习+层次聚类)
论文阅读·笔记·聚类
序属秋秋秋2 小时前
《Linux系统编程之进程基础》【进程优先级】
linux·运维·c语言·c++·笔记·进程·优先级
tang777895 小时前
如何保护网络隐私?从理解代理IP开始
网络·tcp/ip·php
河铃旅鹿6 小时前
Android开发-java版:Framgent
android·java·笔记·学习