目录

  • 一 . TCP协议的应用
  • 二 . TCP包结构
  • 三 . 实例化

一 . TCP协议的应用

二 . TCP包结构

  • 源端口号( 16 位):它(连同源主机 IP 地址)标识源主机的一个应用进程。

  • 目的端口号( 16 位):它(连同目的主机 IP 地址)标识目的主机的一个应用进程。这两个值加上 IP 报头中的源主机 IP 地址和目的主机 IP 地址唯一确定一个 TCP 连接。

  • 顺序号( 32 位):用来标识从 TCP 源端向 TCP 目的端发送的数据字节流,它表示在这个报文段中的第一个数据字节的顺序号。如果将字节流看作在两个应用程序间的单向流动,则 TCP 用顺序号对每个字节进行计数。序号是 32bit 的无符号数,序号到达 2 32 - 1 后又从 0 开始。当建立一个新的连接时, SYN 标志变 1 ,顺序号字段包含由这个主机选择的该连接的初始顺序号 ISN( Initial Sequence Number )。

  • 确认号( 32 位):包含发送确认的一端所期望收到的下一个顺序号。因此,确认序号应当是上次已成功收到数据字节顺序号加 1。只有 ACK 标志为 1 时确认序号字段才有效。 TCP 为应用层提供全双工服务,这意味数据能在两个方向上独立地进行传输。因此,连接的每一端必须保持每个方向上的传输数据顺序号。

  • TCP 报头长度( 4 位):给出报头中 32bit 字的数目,它实际上指明数据从哪里开始。需要这个值是因为任选字段的长度是可变的。这个字段占 4bit ,因此 TCP 最多有 60 字节的首部。然而,没有任选字段,正常的长度是 20 字节。

  • 保留位( 6 位):保留给将来使用,目前必须置为 0 。

  • 控制位( control flags , 6 位):在 TCP 报头中有 6 个标志比特,它们中的多个可同时被设置为 1 。依次为:

    • URG :为 1 表示紧急指针有效,为 0 则忽略紧急指针值。
    • ACK :为 1 表示确认号有效,为 0 表示报文中不包含确认信息,忽略确认号字段。
    • PSH :为 1 表示是带有 PUSH 标志的数据,指示接收方应该尽快将这个报文段交给应用层而不用等待缓冲区装满。
    • RST :用于复位由于主机崩溃或其他原因而出现错误的连接。它还可以用于拒绝非法的报文段和拒绝连接请求。一般情况下,如果收到一个 RST 为 1 的报文,那么一定发生了某些问题。
    • SYN :同步序号,为 1 表示连接请求,用于建立连接和使顺序号同步( synchronize )。
    • FIN :用于释放连接,为 1 表示发送方已经没有数据发送了,即关闭本方数据流。
  • 窗口大小( 16 位):数据字节数,表示从确认号开始,本报文的源方可以接收的字节数,即源方接收窗口大小。窗口大小是一个16bit 字段,因而窗口大小最大为 65535字节。

  • 校验和( 16 位):此校验和是对整个的 TCP 报文段,包括 TCP 头部和 TCP 数据,以 16 位字进行计算所得。这是一个强制性的字段,一定是由发送端计算和存储,并由接收端进行验证。

  • 紧急指针( 16 位):只有当 URG 标志置 1 时紧急指针才有效。紧急指针是一个正的偏移量,和顺序号字段中的值相加表示紧急数据最后一个字节的序号。 TCP 的紧急方式是发送端向另一端发送紧急数据的一种方式。

  • 选项:最常见的可选字段是最长报文大小,又称为 MSS(Maximum Segment Size) 。每个连接方通常都在通信的第一个报文段(为建立连接而设置 SYN 标志的那个段)中指明这个选项,它指明本端所能接收的最大长度的报文段。选项长度不一定是 32 位字的整数倍,所以要加填充位,使得报头长度成为整字数。

  • 数据: TCP 报文段中的数据部分是可选的。在一个连接建立和一个连接终止时,双方交换的报文段仅有 TCP 首部。如果一方没有数据要发送,也使用没有任何数据的首部来确认收到的数据。在处理超时的许多情况中,也会发送不带任何数据的报文段。


请求端(通常称为客户)发送一个 SYN 报文段( SYN 为 1 )指明客户打算连接的服务器的端口,以及初始顺序号( ISN )。
服务器发回包含服务器的初始顺序号( ISN )的 SYN 报文段( SYN 为 1 )作为应答。同时,将确认号设置为客户的 ISN 加 1以对客户的 SYN 报文段进行确认( ACK 也为 1 )。
客户必须将确认号设置为服务器的 ISN 加 1 以对服务器的 SYN 报文段进行确认( ACK 为 1 ),该报文通知目的主机双方已完成连接建立。
三次握手协议可以完成两个重要功能:它确保连接双方做好传输准备,并使双方统一了初始顺序号。初始顺序号是在握手期间传输顺序号并获得确认:当一端为建立连接而发送它的 SYN 时,它为连接选择一个初始顺序号;每个报文段都包括了顺序号字段和确认号字段,这使得两台机器仅仅使用三个握手报文就能协商好各自的数据流的顺序号。一般来说, ISN 随时间而变化,因此每个连接都将具有不同的 ISN 。

三 . 实例化

导入scapy模块找到tcp协议

实例化tcp协议及复合ethernet,ip协议

赋值

sport            #源端口
dport           #目的端口

使用srp1()函数将packet发送

分析


最后是RST,未连接成功。

手动连接


ps: TCP与UDP的比较:
TCP提供可靠的,面向连接的传输服务
UDP提供不可靠的,无连接的传输服务
TCP是面向流的协议;UDP是基于数据报的协议
TCP适用于一次传送大批量的数据
UDP适用于多次少量数据的传输,实时性要求高的业务

TCP与UDP的比较
使用TCP传输的应用程序和协议包括:
FTP
Telnet
SMTP
使用UDP传输的应用程序和协议包括:
RIP
TFTP
SNMP

网络协议分析-TCP协议分析相关推荐

  1. 接口协议之抓包分析 TCP 协议

    TCP 协议是在传输层中,一种面向连接的.可靠的.基于字节流的传输层通信协议. 环境准备 对接口测试工具进行分类,可以如下几类: 网络嗅探工具:tcpdump,wireshark 代理工具:fiddl ...

  2. 用wireshark抓包分析TCP协议的三次握手连接、四次握手断开

    用wireshark抓包分析TCP协议的三次握手连接.四次握手断开 一.TCP三次握手图解 二.TCP得四次挥手过程 三.用Fiddler抓包,分析验证一个HTTPS网站的TCP连接过程 一.TCP三 ...

  3. wireshark分析tcp协议(二)四次挥手(异常情况)【理论 + 实操】

    上一章:wireshark分析tcp协议(一)三次握手[理论 + 实操] 在完成对三次握手的抓包后,间隔了一段时间,来进行四次挥手的抓包. 知识背景 问题一:为什么要四次挥手呢? 在上一章的三次挥手中 ...

  4. 网络协议 8 - TCP协议(上):性恶就要套路深

    网络协议 8 - TCP协议(上):性恶就要套路深 原文:网络协议 8 - TCP协议(上):性恶就要套路深 系列文章: 网络协议 1 - 概述 网络协议 2 - IP 是怎么来,又是怎么没的? 网络 ...

  5. 网络协议 9 - TCP协议(下):聪明反被聪明误

    网络协议 9 - TCP协议(下):聪明反被聪明误 原文:网络协议 9 - TCP协议(下):聪明反被聪明误 网络协议 1 - 概述 网络协议 2 - IP 是怎么来,又是怎么没的? 网络协议 3 - ...

  6. 网络 传输层 | UDP协议与TCP协议详解(三次握手及四次挥手、滑动窗口、拥塞控制)

    概念 传输层:是负责应用程序之间的数据传输(通过端口的描述,描述了哪两个进程间的通信):传输层的两个主要协议:UDP 和 TCP UDP协议 UDP协议全称:用户数据报协议(User Dategram ...

  7. 网络编程——基于TCP协议的通讯录【课程设计】

    网络编程--基于TCP协议的通讯录[课程设计] 本文目录 网络编程--基于TCP协议的通讯录[课程设计] 一.设计题目和要求 设计目标: 课程设计系统组成及模块功能: 二.设计内容 服务端 客户端 S ...

  8. 网络笔记(12) TCP协议(下):西行必定多妖孽,恒心智慧消磨难

    我们前面说到玄奘西行,要出网关.既然出了网关,那就是在公网上传输数据,公网往往是不可靠的,因而需要很多的机制去保证传输的可靠性,这里面需要恒心,也即各种重传的策略,还需要有智慧,也就是说,这里面包含着 ...

  9. 网络编程之TCP协议与UDP对比

    网络编程之TCP协议与UDP对比 UDP协议: 1,面向无连接. 2,不可靠协议,容易丢包. 3,速度快. 4,包体积有限制,64k以内. 通常,聊天,在线视频,凌波. TCP协议: 1.面向连接. ...

  10. 网络5g以及tcp协议等

    网络5g以及tcp协议等 通讯的有关信息 网络的有关信息 OSI七层模型参考 TCP/IP 5层模型 数据的封装和解封 ------------------------------------- 通讯 ...

最新文章

  1. 投稿近2000,NAACL 2019接收率仅为22.6%|附录取论文名单
  2. 清华医工结合项目及三创项目与天津市27家重点医院对接
  3. JavaScript思维导图之数组
  4. 使用 ASP.NET 配置类
  5. springmvc 后台向页面EasyUI的Datagrid传递数据(JSon格式)
  6. 算法知识点——(3)监督学习——逻辑回归与线性回归
  7. mysql导入存储过程报错_mysql导入存储过程时declare报错的有关问题解决
  8. 编写一个UNIX文件系统
  9. 一份王者荣耀的英雄数据报告
  10. event mpm php,Apache下三种MPM模式:prefork,worker和event
  11. Matrix Concatenate 矩阵串联
  12. w8ndows 秒表,关闭 Windows Search,Win8 能变快?
  13. 论文阅读之《Color Constancy Using CNNs》
  14. 《白夜行》-东野圭吾
  15. CommandMethod介绍
  16. 兴趣爱好选择程序java+Swing界面
  17. 小程序碰上浏览器搜索入口!
  18. 【动漫整理】好番推荐(含微量剧透)
  19. 'OracleInternal.MTS.DTCPSPEManager' 类型初始值设定项引发异常
  20. html的font字号1-7,CSS 字体大小font-size设置

热门文章

  1. 市场调研思维导图模板
  2. win7共享xp打印机_打印机共享那些事儿……
  3. PS钢笔工具快速删除一片区域
  4. Carhart四因子模型实用攻略
  5. SpringBoot项目中快速集成腾讯云短信服务SDK实现手机验证码功能
  6. ae效果英文版翻译对照表_AE特效常用中英文对照
  7. bt协议详解 DHT篇(上)
  8. 计算机初级培训 ppt,《计算机初级培训》PPT课件
  9. Java渐变进度条_很好看的java进度条
  10. 十天学会单片机和c语言编程 ppt,十天学会单片机和C语言编程笔记1