当前位置: 首页 > news >正文

网络互联与互联网 - TCP 协议详解

文章目录

  • 1 概述
  • 2 TCP 传输控制协议
    • 2.1 报文格式
    • 2.2 三次握手,建立连接
    • 2.3 四次挥手,释放连接
  • 3 扩展
    • 3.1 实验演示
    • 3.2 网工软考

1 概述

  • 在 TCP/IP 协议簇 中有两个传输协议
    • TCP:Transmission Control Protocol,传输控制协议,是面向连接的、可靠的。
    • UDP:User Datagram Protocol,用户数据报协议,是面向无连接的、不可靠的。

2 TCP 传输控制协议

2.1 报文格式

在这里插入图片描述

参数英文名说明
源端口Sorce Port
目的端口Destination Port
序号Sequence Number保证数据的可靠性
确认号Acknowlegement Number
首部长度Header Length
保留Reserved
控制位Control bits
窗口大小Window Size进行流量控制
校验和Checksum
紧急指针Urgent
可选项Options

【其中,控制位有以下参数,其值为 1 时,表示启用。】

控制位全称描述
URGUrgent紧急。表示本报文中是否包含紧急数据
ACKAcknowledgement确认。表示前面的字段是否有效
PSHPush推送。表示立即将数据推送给上层
RSTReset重置。表示是否重置连接
SYNSynchronization同步。在建立连接时使用,用来同步序号。
① 当 SYN=1,ACK=0 时,表示这是一个请求建立连接的报文段。
② 当 SYN=1,ACK=1 时,表示对方同意建立连接。
FINFinish完成。表示数据已经发送完成,可以释放连接。

2.2 三次握手,建立连接

在这里插入图片描述

说明
序号 seq:表示本次通信的字节流序号。初始序号 x、y 是自动生成的,如上图:seq = x 表示 客户端 本次的初始序号为 x,seq = y 表示 服务器 本次的初始序号为 y。
确认号 ack:确认上一步的序号,并进行 + 1 (目的:表明数据包是连续的)。
③ 当 控制位 ACK = 1 时,确认号 ack 才有值。

2.3 四次挥手,释放连接

在这里插入图片描述

说明
① 请求释放连接 中的 x、y 为上一次通信中的值
② MSL:Maximum Segment Lifetime(最大段时长)

3 扩展

3.1 实验演示

【eNSP:网络拓扑图,对接口 Ethernet 0/0/2 抓包】
在这里插入图片描述

【客户端 Client1 和 服务器 Server1 配置】
在这里插入图片描述

【抓包参数信息】
在这里插入图片描述

在这里插入图片描述

3.2 网工软考

【2021上半年 - 21,22】TCP使用的流量控制协议是( ),TCP头中与之相关的字段是( )。
(21)A.停等应答
   B.可变大小的滑动窗口协议
   C.固定大小的滑动窗口协议
   D.选择重发ARQ协议
(22)A.端口号
   B.偏移
   C.窗口
   D.紧急指针

参考答案:21=B,22=C
通过数据抓包,可以看到,窗口大小是变化的

在这里插入图片描述

【2019下半年 - 22】建立TCP连接时,被动打开一端在收到对端SYN前所处的状态为( )。
A. LISTEN
B. CLOSED
C. SYN RESECEIVD
D. LASTACK

参考答案:A

http://www.lryc.cn/news/137781.html

相关文章:

  • 开源在线图片设计器,支持PSD解析、AI抠图等,基于Puppeteer生成图片
  • 在Linux系统上安装和配置Redis数据库,无需公网IP即可实现远程连接的详细解析
  • 跨平台图表:ChartDirector for .NET 7.1 Crack
  • 【unity数据持久化】XML数据管理器知识点
  • Linux——Shell常用运算符
  • C++(4)C++内存管理和命名空间
  • 一网打尽java注解-克隆-面向对象设计原则-设计模式
  • k8s-statefulset部署myql-Nodeport方式
  • MySQL双主架构、主从架构
  • 基于微信小程序的物流管理系统3txar
  • Maven 一键部署到 SSH 服务器
  • docker搭建owncloud,Harbor,构建镜像
  • RISC-V(1)——RISC-V是什么,有什么用
  • 基于黄金正弦算法优化的BP神经网络(预测应用) - 附代码
  • Python标准库概览
  • 两个列表的最小索引总和
  • Go语言基础之切片
  • 关于java三元组的问题
  • 如何正确地设置Outlook SMTP发送电子邮件(wordpress配置)
  • 机器学习编译系列---张量程序抽象
  • python使用matplotlib实现折线图的绘制
  • 网络协议的定义、组成和重要性?
  • vue 使用print.js打印小票
  • 算法通关村第6关【白银】| 树的层次遍历问题
  • Qt与电脑管家3
  • Jmeter 快速生成测试报告
  • 消息队列——RabbitMQ(一)
  • 人工智能在机器学习中的八大应用领域
  • vue3+ts使用vue-i18n
  • 在Ubuntu上安装和设置RabbitMQ服务器,轻松实现外部远程访问