文章目录

  • 一、对TCP协议的感性认识
    • 简介
    • 特点
  • 二、TCP的报文结构
    • 概览
    • 16位端口号和16位目的端口号
    • 32位序号和32位确认序号
    • 4位首部长度
    • 保留位(6位)
    • 6个标志位
    • 16位窗口大小
    • 16位校验和
    • 16位紧急指针
    • 40位头部选项(option)
  • 参考

一、对TCP协议的感性认识

简介

TCP,是Transmission Control Protocol的简称,中文名是传输控制协议,是为了在不可靠的互联网络上提供可靠的端到端字节流而专门设置的一个传输协议。

互联网络与单个网络有很大的不同,因为互联网络的不同部分可能有截然不同的拓扑结构、带宽、延迟、数据包大小和其他参数。而不同主机的应用层之间经常需要可靠的、像管道一样的连接,但是IP层不提供这样的流机制,而是提供不可靠的包交换。

相关术语:

(注意这里的延迟的概念)

网络拓扑结构就指用传输媒体把计算机等各种设备互相连接起来的物理布局,是指互连过程中构成的几何形状,它能表示出网络服务器、工作站的网络配置和互相之间的连接。网络拓扑结构可按形状分类,分别有:星型、环型、总线型、树型、总线/星型和网状型拓扑结构。

带宽:在数字设备中,带宽指单位时间能通过链路的数据量。通常以bps(bits per seconds)来表示,即每秒可传输之位数。

延迟:延迟是指数据从网络的一端传送到另一端所需的时间。 有时也被称为迟延或者时延。

每台支持TCP的机器都有一个TCP传输实体。TCP实体可以是一个库过程、一个用户进程,或者内核的一部分。在所有这些情形下,它管理TCP流,以及与IP层之间的接口。TCP传输实体重构出原始的字节流。

关于TCP传输实体

TCP传输实体接受本地进程的用户数据流,将它们分割成不超过64KB(实际上去掉IP和TCP头,通常不超过1460数据字节)的分段,每个分段以单独的IP数据报形式发送。当包含TCP数据的数据报到达一台机器时,它们被递交给TCP传输实体,TCP传输实体重构出原始的字节流

为简化起见,我们有时候仅仅用“TCP”来代表TCP传输实体(一段软件)或者TCP协议(一组规则)。根据上下文语义你应该能很消楚地推断出其实际含义。例如,在“用户将数据交给TCP”这句话中,很显然这里指的是TCP传输实体。

特点

有连接、可靠传输、面向字节流、全双工

二、TCP的报文结构

概览

与UDP类似,TCP也是报头(head)+载荷(payload)。

16位端口号和16位目的端口号

即各两个字节,表示范围为0~65535.

表示了数据从哪个进程来到哪个进程去。

32位序号和32位确认序号

这里与后边我们要重点讨论的TCP内部工作机制——确认应答有关,必须连在一起理解,所以这里先放放。

4位首部长度

即表示TCP报头有多少个32个bit,注意,这里的单位是4字节。

2^4=16==>表示的范围是0~15==>15*4=60,所以TCP报头最多有60个字节。

这里边的影响的主要就是选项这个字段。

保留位(6位)

是为了之后的扩展准备的。

对于网络协议,扩展升级成本很高。

有了这里的保留位,之后扩展可能会容易一点。

即使升级,也可以兼容以前的版本。

这里体现了开发的可扩展性。

6个标志位

  • URG:紧急指针是否有用
  • ACK:确认序号是否有用(是不是应答报文)
  • PSH:提示接收端应用程序立即从TCP缓冲区把数据读走
  • RST:对方要求重新建立连接【带这种标识的叫做复位报文段】
  • SYN:请求建立连接【带这种标识的叫做同步报文段】
  • FIN:通知对方,本段要关闭了【携带这种标识的叫做结束报文段】

16位窗口大小

这里与后边我们要重点讨论的TCP内部工作机制——滑动窗口、流量控制有关,必须连在一起理解,所以这里先放放。

16位校验和

发送端填充,CRC校验。接收端校验不通过,则认为数据有问题。此处的检验和不光包含TCP首部,也包含TCP数据部分。

这里其实跟UDP那里相似。

16位紧急指针

标识哪部分数据是紧急数据 。

40位头部选项(option)

可以先看这里

参考

1

选项

JavaEE|TCP/IP协议栈之TCP协议端格式详解相关推荐

  1. 网络编程-TCP/IP协议栈-UDP/HTTP协议

    UDP协议 UDP协议全称是用户数据报协议,在网络中她与TCP协议一样用于处理数据包,两个协议同处于协议栈的传输层,和TCP不同的是,UDP是一种无连接的协议栈. 因为UDP是无连接的,所以相对来说, ...

  2. 【Sofice小司笔记】5 计算机网络,包含数据传输原理、网络各层协议详细说明、TCP/IP协议栈各常用协议说明、TCP握手挥手、可靠传输、网络加密技术

    ❓ 在浏览器地址栏输入一个 URL 后回车,背后发生了什么 解析 URL 浏览器封装 HTTP 请求报文 DNS 域名解析获取 IP 地址 建立 TCP 连接(长链接) 浏览器发送请求 负责传输的 I ...

  3. TCP\IP 协议栈中的协议 物理层 数据链路层 网络层 传输层 会话层 表示层 应用层

    粉丝不过W 7 层体系的 OSI 参考模型,低层为 1~4 层:面向通信, 高层为 5~7 层:面向信息处理 物理层(Physical Layer) 利用一些物理媒体, 如双纽线. 同轴电缆等 传递信 ...

  4. TCP/IP协议栈:TCP超时重传机制

    目录 基础概念 重传超时时间RTO RTO的设定 连接往返时间RTT RTT的计算 Karn算法 往返时间测量 重传 拥塞避免算法 快速重传和快速恢复算法 重新分组 网络数据包丢失,重传和重复确认 是 ...

  5. Bacnet协议报文格式详解(一)

    系统实现基于BACnet/IP(又称B/IP)网络进行通讯.BACnet虚拟链路层(BVLL)提供了BACnet网络层和某指定的通讯子系统的接口,本文指定了BACnet虚拟链路控制(BVLC)要求支持 ...

  6. IP协议数据报格式详解

  7. PFCP协议及格式详解

    PFCP(Packet Forwarding Control Protocol),报文转发控制协议,在3GPP TS 29.244中定义. 协议原版下载路径:http://www.3gpp.org/f ...

  8. 网络编程-TCP/IP协议栈-TCP协议

    TCP协议 TCP协议作用 TCP协议位于协议栈的传输层.当应用层向TCP层发送用于网间传输的,用8字节表示的数据流,TCP则吧数据流分割成适当长度的报文段,最大传输段大小(MSS)通常受到改计算机连 ...

  9. 单片机tcp ip协议c语言,单片机TCP IP协议栈实现的原理

    对已TCP IP协议栈,我们已经说了很多关于它的原理相关的知识了.但是只有原理是不够的,在这方面我们将要举出一个实际操作实例为大家讲解,那么首先我们来看一下有关于单片机TCP/IP就是在单片机上运行的 ...

最新文章

  1. java intern_java String的intern方法
  2. FMDB/SQLCipher数据库管理
  3. 崩坏3日记:戴尔超限专武天天出,我们的快乐变为刷题式重复养成
  4. 群策群力:破机房征求灵丹妙药
  5. 【周末狂欢赛6】[AT1219]历史研究(回滚莫队),大魔法师(矩阵+线段树),单峰排列
  6. 8.10模拟:贪心、最优化思路
  7. [习题].FindControl()方法 与 PlaceHolder控件 #2(动态加入「子控件」的事件)
  8. 领域应用 | 用知识图谱玩唐诗,“唐诗别苑”附庸端午节的别样风雅!
  9. Golang基本变量
  10. Android笔记 采用async http 框架 提交数据到服务器demo
  11. 全球Top10最佳移动统计分析sdk
  12. python题目58:工厂流水线调度
  13. 博弈论 第五章 重复博弈
  14. Java技术栈思维导图
  15. python模拟别人说话的声音_现在你可以通过深度学习用别人的声音来说话了
  16. 川土微电子|数字隔离器替代光耦817
  17. Android vivo美颜相机相册 照亮你的美 图片压缩 图片滤镜,裁剪(附带完整项目源码)
  18. Java错误类型:Exception in thread main java.lang.Error: Unresolved compilation problem: Syntax error,
  19. 内存不能为“read”或“written”的解决方案
  20. MySQL中的uuid()和uuid_short()函数

热门文章

  1. 阿里巴巴 java 电话面试题_记一次阿里巴巴电话面试题
  2. Python基础,类的继承,类的多态继承等
  3. MethodType用法和setattr区别
  4. Markdown 基础操作 | 高级操作 大全+Typora常用快捷键
  5. Python 爬虫教学网站
  6. vue.js 表格表单序号
  7. Hibernate SQL方言集合
  8. 投入OJ的怀抱~~~
  9. 马毅与来自高维度的恩赐
  10. android开发收藏功能实现,Android使用Realm数据库如何实现App中的收藏功能