精华内容
下载资源
问答
  • tcp数据包的介绍
    千次阅读
    2020-06-01 22:58:44

    在这里插入图片描述
    TCP报文由首部和数据两部分组成。首部一般由20-60字节(Byte)构成,长度可变。其中前20B格式固定,后40B为可选。
      因为,TCP报文还得传给下层网络层,封装成IP包,而一个IP包最大长度为65535,同时IP包首部也包含最少20B,所以一个IP包或TCP包可以包含的数据部分最大长度为65535-20-20=65495B。
      TCP报文中数据部分是可选的,即TCP报文可以不包含数据(同理IP包也可以不包含数据)。不含数据的TCP报文通常是一些确认和控制信息类的报文,如TCP建立连接时的三次握手和TCP终止时的四次挥手等。
    1、源端口号(Source Port)
        长度为16位,指明发送数据的进程。
    2、目的端口号(Destination Port)
        长度为16位,指明目的主机接收数据的进程。
    3、序号(Sequence Number)记录发送次数
      也称为序列号,长度为32位,序号用来标识从TCP发送端向接入端发送的数据字节流进行编号,可以理解成对字节流的计数。
    4、确认号(Acknowledgement Number)
      长度为32位,确认号包含发送确认的一端所期望收到的下一个序号。确认号只有在ACK标志为1时才有效。
    5、首部长度(数据偏移)
      长度为4位,用于表示TCP报文首部的长度。用4位(bit)表示,十进制值就是[0,15],一个TCP报文前20个字节是必有的,后40个字节根据情况可能有可能没有。如果TCP报文首部是20个字节,则该位应是20/4=5。
    6、保留位(Reserved)
        长度为6位,必须是0,它是为将来定义新用途保留的。给QOS预留用的。
    7、标志(Code Bits)
        长度为6位,在TCP报文中不管是握手还是挥手还是传数据等,这6位标志都很重要。6位从左到右依次为:



    URG:紧急标志位,说明紧急指针有效;


    ACK:确认标志位,一般都为1,说明确认序号有效;


    PSH:推标志位,置位时表示接收方应立即请求将报文交给应用层;PSH置1的数据包优先确认,其余的数据包等待


    RST:复位标志,用于重建一个已经混乱的连接;


    SYN:同步标志,该标志仅在三次握手建立TCP连接时有效


    FIN:结束标志,带该标志位的数据包用于结束一个TCP会话。

    8、窗口大小(Window Size)
        长度为16位,TCP流量控制由连接的每一端通过声明的窗口大小来提供。
    9、检验和(Checksum)
    长度为16位,该字段覆盖整个TCP报文端,是个强制性的字段,是由发送端计算和存储,到接收端后,由接收端进行验证。
    其目的是为了发现TCP首部和数据在发送端到接收端之间发生的任何改动。如果接收方检测到校验和有差错,则TCP段会被直接丢弃。
    TCP校验和覆盖TCP首部和TCP数据,而IP首部中的校验和只覆盖IP的首部,不覆盖IP数据报中的任何数据。
    TCP的校验和是必需的,而UDP的校验和是可选的。
    TCP和UDP计算校验和时,都要加上一个12字节的伪首部。
    伪首部共有12字节,包含如下信息:源IP地址、目的IP地址、保留字节(置0)、传输层协议号(TCP是6)、TCP报文长度(报头+数据)。
    伪首部是为了增加TCP校验和的检错能力:如检查TCP报文是否收错了(目的IP地址)、传输层协议是否选对了(传输层协议号)等。

    10、紧急指针(Urgent Pointer)
        长度为16位,指向数据中优先部分的最后一个字节,通知接收方紧急数据的长度,该字段在URG标志置位时有效。
    11、选项(Options)
      长度为0-40B(字节),必须以4B为单位变化,必要时可以填充0。通常包含:最长报文大小(MaximumSegment Size,MSS)、窗口扩大选项、时间戳选项、选择性确认(Selective ACKnowlegement,SACK)等。
    12、数据

    Tcp可靠依赖于:确认,重传,排序,流控(滑动窗口)

    更多相关内容
  • 实验代码,实验用的请谨慎下载
  • 封装、IP数据包解析和发送TCP数据包封装、IP数据包解析和发送TCP数据包封装、IP数据包解析和发送TCP数据包封装、IP数据包解析和发送TCP数据包
  • 封装发送IP数据包

    2017-02-17 14:37:16
    计算机网络 封装发送IP数据包 C语言实现
  • 数据序号32位,TCP发送的每一个字节都编一个号码,这里存储当前数据包数据第一 包括 网络编程结构数据JavaTCPIP的信息,所有JAVA网络编程:TCP/IP数据包结构相关内Java实现以太网帧的封装_360问答600x312 - 74KB - PNG...

    2-1.数据序号32位,TCP为发送的每一个字节都编一个号码,这里存储当前数据包数据第一 包括 网络编程结构数据JavaTCPIP的信息,所有JAVA网络编程:TCP/IP数据包结构相关内

    b1e57b696ffb522c30e5b7cc470d0b55.png

    Java实现以太网帧的封装_360问答

    600x312 - 74KB - PNG

    ac37f8f4a38db36b8e39980d0cc12dd7.jpg

    第三篇 :微信公众平台开发实战Java版之请求消

    1054x564 - 171KB - JPEG

    01350150P-1.png

    求助! wireshark抓取分析http数据包 看不懂?

    905x351 - 69KB - PNG

    a3c15fdc8ea1f2f2dea15335d50d29a0.png

    微信公共号开发教程java版--请求消息,响应消息

    1795x958 - 131KB - PNG

    141215011850034.png

    JAVA--网络编程_「电脑玩物」中文网我们只是

    666x225 - 17KB - PNG

    c5105923e3a4049ccb29a8971ce68a84.png

    【基于Java】udp传输实例

    652x528 - 19KB - PNG

    633da119ef074d2055e858c9ee18e48b.png

    (Java)微信之个人公众账号开发(二)--接收并处理

    233x306 - 93KB - JPEG

    8154292815354414.jpg

    不制作证书是否能加密SQLSERVER与客户端

    1343x502 - 622KB - JPEG

    1485312833608.gif

    一张图让你明白互联网的Web服务器

    600x576 - 68KB - JPEG

    ee36ba41747c3cc290f0919333d76628.jpg

    android 网络交互封装

    280x220 - 7KB - JPEG

    展开全文
  • 计算机网络+课程设计源代码和实验报告+帧封装、IP数据包解析和发送TCP数据包.rar
  • 计算机网络+课程设计源代码和实验报告+帧封装、IP数据包解析和发送TCP数据包.pdf
  • 计算机网络+课程设计源代码和实验报告+帧封装、IP数据包解析和发送TCP数据包
  • 网络通信协议分析课程设计源代码和实验报告+帧封装、IP数据包解析和发送TCP数据包汇编.pdf
  • 网络通信协议分析课程设计源代码和实验报告+帧封装、IP数据包解析和发送TCP数据包.pdf
  • TCP/IP网络协议即网络中(包括互联网)传递、管理信息的一些规范,TCP/IP协议是网络的基础,是Internet的语言,可以说互联网的发展全靠TCP/IP
  • 一个防黏包的TCP数据包传输模块,适合网络编程新手。如果有bug请一定记得在评论区吐槽~~~
  • TCP/IP数据包封装与拆解概述

    万次阅读 多人点赞 2017-10-30 19:46:21
    TCP/IP封包流程  (1) 经过TCP/UDP封装后的数据称为TCP报文段/UDP数据报。因为TCP协议除了会为通信双方维持一个连接,还具有超时重发的功能,所以操作系统会将APP的要发送数据存储在内核的相关数据结构中:  上...

    《Linux高性能服务器编程》阅读笔记:

    1. TCP/IP封包流程

    这里写图片描述

      (1) 经过TCP/UDP封装后的数据称为TCP报文段/UDP数据报。因为TCP协议除了会为通信双方维持一个连接,还具有超时重发的功能,所以操作系统会将APP的要发送数据存储在内核的相关数据结构中:

    这里写图片描述

      上图描述的是TCP发送数据时示意图,接收缓冲区也是如此。发送端APP调用系统调用send()/write()函数向TCP连接写数据时,内核中的TCP模块首先将APP数据拷贝到与该连接对应的TCP内核发送缓冲区中,进而将TCP头部信息和TCP发送缓冲区中的数据传递给内核中IP模块,使用IP模块提供的服务。

      对于UDP发送数据,其封装过程与TCP类似,不同的是,因为UDP是提供的是不可靠的服务,所以UDP内核模块不会为APP的数据保存副本,当发送缓冲区的数据被发送出去后,缓冲区的数据就被丢弃。当然,如果APP想实现超时重发,就需要在APP中把数重新拷贝到内核空间的UDP发送缓冲区。另外,由于UDP是基于无连接的通信,所以发送端发送数据时,使用的函数是sendto()指明接收方的地址信息。当然这也不是绝对的,使用bind()函数时例外,详细可读 send()、sendto()和recv()、recvfrom()的使用

      (2) 接下来的,经过IP封装的数据称为IP数据报,IP数据报中的数据段为UDP数据报/TCP数报文段/ICMP数据报。

      (3) 经过数据链路层封装的数据称为帧。根据传输媒介的不同,帧的类型也不同,例如有以太网帧、令牌环帧。以以太网帧为例,其封装格式为:

    这里写图片描述

      帧数据是最终在物理网络上传输字节序列。需要注意的是帧的最大传输单元(MTU, Max Transmit Unit),即帧最多能携带多少上层协议的数据(例如IP报文段)会收到网络类型的限制。以太网帧的MTU为1500Byte,过长的IP报文段可能需要被分包传输。

    2. TCP/IP拆包流程

    这里写图片描述

      如图,当帧数据到达目的主机时,将沿着协议栈自底向上依次传递。各层协议依次根据帧中本层负责的头部信息以获取所需数据,最终将处理后的帧交给目标APP。我理解为,这是一个拆包的过程。

      (1) IP协议、ARP协议和RARP协议都使用帧传输数据,所以帧的头部需要提供字段来区分它们。还是以以太网为例,在其帧格式可见,它使用2字节的类型字段来表示上层协议:若为0x800则帧的数据部分为IP数据报,以太网驱动程序会将IP数据报交付给IP模块。若类型字段为0x806则帧的数据部分为ARP的请求/应答报,将会交付给内核的ARP模块。拆包需要依赖于头部信息中的类型字段。

      (2) 同理,ICMP/UDP/TCP都使用IP协议,所以IP数据包的头部采用16位字段来区分。

      (3) TCP/UDP包则通过其头部中的16位端口号来区分上层APP。例如DNS协议占用的端口号为53,HTTP协议占用的端口号为80。

      到达应用层后,APP(或者ARP服务、RARP服务、ICMP服务)将会收到被操作系统封装前的源应用程序数据。所以在APP看来,拆包/封包似乎没有发生过。

    展开全文
  • 四.TCP协议的封装格式 五.TCP三次握手实验步骤 1.按照拓扑图,搭建实验环境 2.配置接口IP 1)配置IP地址 PC: SERVER: 3.在SERVER上创建一个用户,用于远程登录 4.开启抓包工具抓取PC的F0/0端口的流量 5.在PC上...

    一.实验目的

    学习和掌握TCP协议的应用和报文格式

    二.实验拓扑

    image.png

    三.实验工具

    GNS3和Wireshark抓包分析软件

    四.TCP协议的封装格式

    image.png
    image.png

    五.TCP三次握手实验步骤

    1.按照拓扑图,搭建实验环境
    2.配置接口IP
    1)配置IP地址
    PC:
    image.png
    SERVER:
    image.png
    3.在SERVER上创建一个用户,用于远程登录
    image.png
    4.开启抓包工具抓取PC的F0/0端口的流量
    5.在PC上telnet 12.1.1.2
    image.png
    6.分析TCP三次握手数据包
    image.png
    1)第一次握手数据包
    image.png
    2)第二次握手数据包
    image.png
    3)第三次握手数据包
    image.png
    7.还原TCP三次握手数据包“序列号”字段的值
    image.png
    原始序列号的三次握手数据包
    image.png
    1)第一次握手数据包
    image.png
    2)第二次握手数据包
    image.png
    3)第三次握手数据包
    image.png

    六. TCP四次挥手实验步骤

    1.开启抓包工具抓取PC的F0/0端口的流量
    2. 在PC上telnet 12.1.1.2,并输入用户名和密码,登录SERVER后,再退出。
    image.png
    3.分析TCP四次挥手数据包
    image.png
    1)第1次挥手数据包
    image.png
    2)第2次挥手数据包
    image.png
    3)第3次挥手数据包
    image.png
    4)第4次挥手数据包
    image.png

    七. TCP连接建立超时重传实验步骤

    1.SYN重传原理
    image.png
    2.在GNS3中,将SERVER暂停,如下图所示
    将SERVER暂停即右键点击SERVER,点击“Suspend”
    image.png
    3.开启抓包工具抓取PC的F0/0端口流量,在PC上Telnet 12.1.1.2
    4.分析SYN重传
    image.png//重传4次
    5.SYN/ACK重传原理
    image.png
    6.在PC 上写一个ACL语句禁止ACK位置1的TCP数据包进入PC,并在PC的f0/0端口入方向调用,同时禁止PC向SERVER发送ICMP Unreachable messages 报文(做这步之前要右键点击SERVER,点击“Start”)
    image.png
    image.png
    image.png
    image.png
    7.开启抓包工具抓取PC的F0/0端口流量,在PC上Telnet 12.1.1.2
    image.png
    8.分析SYN/ACK重传数据包
    image.png

    八. TCP连接关闭超时重传实验步骤

    1.FIN超时重传原理
    image.png
    2.将PC上的ACL删除,并在SERVER上,配置ACL禁止FIN位置1的TCP数据包进入SERVER,并在SERVER的f0/0端口入方向调用,同时禁止SERVER向PC发送ICMP Unreachable messages 报文
    image.png
    image.png
    image.png//禁止SERVER向PC发送ICMP Unreachable messages 报文
    3.开启抓包工具抓取PC的F0/0端口流量,在PC上Telnet 12.1.1.2,输入用户名和密码登录成功后,再退出
    image.png
    4.分析FIN重传数据包
    image.png

    展开全文
  • 计算机网络 课程设计源代码和实验报告!! 帧封装、IP数据包解析和发送TCP数据包
  • 计算机网络+课程设计源代码和实验报告+帧封装、IP数据包解析和发送TCP数据包
  • 网络数据包封装与解封装基本过程

    千次阅读 多人点赞 2020-07-29 15:27:57
        数据包   应用层     TCP头:源端口+目的端口 数据包 ... IP头:源IP地址+目的IP地址 TCP头:源端口+目的端口 ...1、telnet应用封装telnet程序请求信息,作为数据包传送给下...
  • python设计tcp数据包协议类

    千次阅读 2018-08-10 09:58:36
    所以,我们需要在每个数据包前面加上数据包的长度用以分割粘连的包。   二.包结构的设计  包的组成:包长度+数据域   包长度:用4个字节存储数据域长度,数据域长度即为其所占字节数  数据域:由若干个...
  • TCP数据包分析

    千次阅读 2019-05-24 10:35:49
    通信过程中,每层协议都要加上一个数据首部(header),称为封装(Encapsulation),如下图所示 不同的协议层对数据包有不同的称谓,在传输层叫做段(segment),在网络层叫做数据报(datagram),在链路层叫做帧...
  • TCP/IP 之数据包发送封装流程

    千次阅读 2009-07-10 11:30:00
    传输层 ------------------------------ TCP UDP--------------------------该层的数据由应用进程产生,加上TCP包头或者UDP包头,传递给网络层 网络层 -------------------------------IP ICMP(ping应用) IGMP--...
  • wireshark分析TCP数据包

    万次阅读 2017-09-09 22:05:16
    TCP/IP协议不清楚请回看TCP/IP协议理论在虚拟机运行ubuntu,通过windows下的cuteftp连接ubuntu,利用wireshark进行抓包分析。出现如下数据帧(注意wireshark如何过滤消息): 其中47,48,49分别是三次握手对应的帧...
  • TCP/IP协议栈与数据包封装

    万次阅读 2016-07-03 22:14:58
    TCP/IP协议栈与数据包封装   TCP/IP网络协议栈分为应用层(Application)、传输层(Transport)、网络层(Network)和链路层(Link)四层。如下图所示(该图出自[TCPIP])。 图 36.1. TCP/IP协议栈   ...
  • 包(Packet)是TCP/IP协议通信传输中的数据单位,一般也称“数据包” 。 网络数据包封装和分用 不同的协议层对数据包有不同的称谓,在传输层叫做段(segment),在网络层叫做数据报(datagram),在数据链路层叫做帧...
  • IP数据报、TCP数据包结构详解

    千次阅读 2019-03-17 21:53:37
    [关键词]TCP IP 数据包 结构 具体解释 网络 协议 一般来说,网络编程我们仅仅须要调用一些封装好的函数或者组件就能完毕大部分的工作,可是一些特殊的情况下,就须要深入的理解 网络数据包的结构,以及协议分析。...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 72,841
精华内容 29,136
关键字:

tcp数据包的封装与发送