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

系列文章目录

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


  • 系列文章目录
  • TCP特点概述
  • TCP段结构


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再发送一个确认,但没有装数据。

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/158256.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

图论问题建模和floodfill算法

目录 引入:leetcode695.岛屿的最大面积 分析与转换 一维二维转换 四联通 完整代码解答: 1)显示的创建图解决问题的代码 2)不显示的创建图解决此问题的代码 floodfill算法 定义 引入:leetcode695.岛屿的最大面…

R语言用jsonlite库写的一个图片爬虫

以下是一个使用R语言和jsonlite库下载图片的程序。首先,我们需要导入jsonlite库和options()函数,然后将代理服务器的主机名和端口号设置为"duoip"和"8000"。接着,我们将URL设置为"https://yun.baidu.com/"&…

3dMax章鱼插件Octopus

3dMax章鱼插件Octopus 3dMax章鱼插件,不仅在视口中以饼状的形式,呼出各种属性参数,方便调用,而且是一个可编写脚本的框架,因此您有很多机会创建自己的菜单并轻松分发。整个OCTOPUS系统可以使用maxscript进行自定义&…

【C/C++】积累和派生类的转换

基类与派生类对象之间有赋值兼容关系,由于派生类中包含从基类继承的成员,因此可以将派生类的值赋给基类对象,在用到基类对象的时候可以用其子类对象代替。具体表现在以下几个方面。 一、派生类对象可以向基类对象赋值 可以用子类(即公用派生…

javaEE -15( 13000字 JavaScript入门 - 2)

一:JavaScript(WebAPI) JS 分成三个大的部分 ECMAScript: 基础语法部分DOM API: 操作页面结构BOM API: 操作浏览器 WebAPI 就包含了 DOM BOM,这个是 W3C 组织规定的. (和制定 ECMAScript 标准的大佬们不是一伙人). 前面学的 JS 基础语法主要学的是 …

3.网络之UDP

UDP协议 文章目录 UDP协议1. UDP概述2. UDP报文格式3. UDP传输限制4. UDP校验和4.1 CRC 循环冗余校验算法4.2 md5 校验算法 1. UDP概述 UDP(UserDatagramProtocol)是一个简单的面向消息的传输层协议,尽管UDP提供标头和有效负载的完整性验证&a…

【实战Flask API项目指南】之一 概述

实战Flask API项目指南之 概述 本系列文章将带你深入探索实战Flask API项目指南,通过跟随小菜的学习之旅,你将逐步掌握Flask在实际项目中的应用。让我们一起踏上这个精彩的学习之旅吧! 前言 小菜是一个Python编程爱好者,他目前…

SolidWorks2022安装教程(正版)

网盘资源附文末 一.简介 SolidWorks软件是世界上第一个基于Windows开发的三维CAD系统,由于技术创新符合CAD技术的发展潮流和趋势,SolidWorks公司于两年间成为CAD/CAM产业中获利最高的公司。良好的财务状况和用户支持使得SolidWorks每年都有数十乃至数百…

小程序day03

目标 页面导航 声明式导航 1.导航到tabBar页面 2.导航到非tabbar页面 3.后退导航 编程式导航 1.导航到tabBar页面 2.导航到非tabBar页面 3.后退导航 导航传参 1.声明式导航传参 2.编程式导航传参 3.在onLoad中接收导航参数 页面事件 下拉刷新 这个可以获取完数据之后再停止…

Docker学习——①

文章目录 1、什么是虚拟化、容器化?2、为什么要虚拟化、容器化?3、虚拟化实现方式3.1 应用程序执行环境分层3.2 虚拟化常见类别3.3 常见虚拟化实现3.3.1 主机虚拟化(虚拟机)实现3.3.2 容器虚拟化实现3.3.3 空间隔离实战--基础知识3.3.4 PID 隔离3.3.5 Mo…

二叉树OJ题(用前序和中序遍历构建二叉树,用中序和后续遍历构建二叉树)

文章目录 二叉树OJ题一、用前序和中序遍历构建二叉树1.思路2.代码 二、用中序和后续遍历构建二叉树1.思路2.代码 二叉树OJ题 一、用前序和中序遍历构建二叉树 1.思路 1.根据前序遍历找到根结点root 2.在中序遍历中(inBegin0和inEndelem.length-1范围之间&#xff09…

Kafka、RabbitMQ、RocketMQ中间件的对比

消息中间件现在有不少,网上很多文章都对其做过对比,在这我对其做进一步总结与整理。 RocketMQ 淘宝内部的交易系统使用了淘宝自主研发的Notify消息中间件,使用Mysql作为消息存储媒介,可完全水平扩容,为了进一步降低成…