转:http://blog.csdn.net/l1008610/article/details/52197602

以前作者也一直以为数据包先发的不一定先到,直到今天才意识这个问题的缺陷,数据包是不一定先发先到,但是对于TCP有一点特殊,若我们接受的数据包是在应用层,并且应用层用的是TCP的传输协议的话,这个顺序是保证,这个顺序的保证是在传输层保证的,举个例子:

client发生数据A,B给server,使用的TCP传输,client发送毫无疑问是先发送A,然后发送B,但是有些搞网络的同学可能会有这个疑问,A跟B在物理层走的链路不一样,传输速度不一样,B是会比A先到达Server,这个是没有错的,但是这个数据包被接受是在网络层跟传输层,请记住网络跟传输层的作用,网络层是保证同一个包的完整,就是说若你的传输层发出的包过大,在网络层(也就是IP层)会被分包,同时在Sever的网络接受的时候会被组包,有一个完整的包才会交给传输层,若包不完整是会丢弃,同时他也不保证你的包的是否达到,数据包的保证是在传输层做的,就是说若传输层(TCP协议才会,UDP并不保证)没有收到对方的确认包,会有超时重传,每个数据包也是有序列号的,同时,传输层就是根据这个序列号来保证A,B包的顺序,即使B比A先到达了,TCP也会是等A到达之后,先把A提交给应用层,再把B的数据提交给应用层,从而保证了,同一条TCP链接,先发的包先到

注:这个顺序的保证是传输层做的,TCP这个协议保证的,UDP并不保证,网络层接收包的顺序是错乱的。

下面这张就是网络的传输图

...

socket 关于同一条TCP链接数据包到达顺序的问题的更多相关文章

  1. TCP/IP数据包结构具体解释

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

  2. 以太网,IP,TCP,UDP数据包分析【转】

    原文地址:http://www.cnblogs.com/feitian629/archive/2012/11/16/2774065.html 1.ISO开放系统有以下几层: 7 应用层 6 表示层 5 ...

  3. 以太网,IP,TCP,UDP数据包分析(此文言简意赅,一遍看不懂的话,耐心的看个10遍就懂了,感谢作者无私奉献)

    1.ISO开放系统有以下几层: 7 应用层 6 表示层 5 会话层 4 传输层 3 网络层 2 数据链路层 1 物理层 2.TCP/IP 网络协议栈分为应用层(Application).传输层(Tra ...

  4. 1、如何抓取Modbus TCP/UDP 数据包实战

    CEIWEI最近发布了Modbus RTU Over TCP/UDP 过滤监控的新工具,下面以Modbus RTU TCP为示例,讲解如何抓取Modbus通信数据包,因为CEIWEI ModbusMo ...

  5. TCP协议数据包及攻击分析

    TCP/IP协议栈中一些报文的含义和作用 URG: Urget pointer is valid (紧急指针字段值有效) SYN: 表示建立连接 FIN: 表示关闭连接 ACK: 表示响应 PSH: ...

  6. TCP/IP 数据包报文格式(IP包、TCP报头、UDP报头)(转)

    reference:http://blog.51cto.com/lyhbwwk/2162568                    https://blog.csdn.net/wangzhen209 ...

  7. TCP UDP 数据包过大导致分片情况

    MTU大家都知道,是链路层中的网络对数据帧的一个限制,依然以以太网为例,MTU为1500个字节.一个IP数据报在以太网中 传输,如果它的长度大于该MTU值,就要进行分片传输,使得每片数据报的长度小于M ...

  8. 以太网,IP,TCP,UDP数据包分析

    http://www.cnblogs.com/feitian629/archive/2012/11/16/2774065.html 网络层的IP 协议是构成Internet 的基础.IP 协议不保证传 ...

  9. TCP/IP数据包结构详解

    一般来说,网络编程我们只需要调用一些封装好的函数或者组件就能完成大部分的工作,但是一些特殊的情况下,就需要深入的理解网络数据包的结构,以及协议分析.如:网络监控,故障排查等…… IP包是不安全的,但是 ...

随机推荐

  1. ArcGIS runtime sdk for wpf 授权

    这两天由于runtime sdk for wpf的授权和runtime sdk 其他产品的授权的不一样导致自己混乱不堪. 总结下吧. sdk 简介 当前ArcGIS runtime sdk 包括一系列 ...

  2. IO 流的操作基本规律

    想要知道开发时,使用哪个流对象, 只要通过四个明确即可. 明确源和目的(数据汇) 源: InputStream 或 Reader 目的: OutPutStream 或 Writer 明确数据是否是纯文 ...

  3. hadoop笔记 基础 归档

    核心:分布式存储和分布式计算 闲话: 底层基于socket通信 NIO——java异步io,不阻塞,不等待 bt——p2p软件(点对点传输,每个人既是上传者又是下载者.但是会占用大量网络带宽,所以很多 ...

  4. django博客项目4:博客首页视图(1)

    Web 应用的交互过程其实就是 HTTP 请求与响应的过程.无论是在 PC 端还是移动端,我们通常使用浏览器来上网,上网流程大致来说是这样的: 我们打开浏览器,在地址栏输入想访问的网址,比如 http ...

  5. Python的3个方法:静态方法(staticmethod),类方法(classmethod)和实例方法

    Python的方法主要有3个,即静态方法(staticmethod),类方法(classmethod)和实例方法,如下: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 ...

  6. JFinal项目搭建

    1.Myeclipse中 新建 Dynamic Web Project   导入jar包 2.配置web.xml <?xml version="1.0" encoding=& ...

  7. PHP逐字符读取数据

    <?php $file = fopen("Minot.txt", "r") or exit("Unable to open file!" ...

  8. 第二课 GCC入门之静态库以及共享库

    序言: 前面一课讲了gcc的简单入门,包括gcc编译步骤:预处理:编译:汇编:链接.今天这节课就来讲下linux的库也欢迎大家吐糟共同学习. 原理: linux系统中分为2种库:静态库和共享库.静态库 ...

  9. Loadrunder场景设计篇——定时器(schedule)

    A.   定义方案schedule 在 Scenario Schedule面板中,选择一个方案schedule,或通过点击New Schedule定义一个新的方案 定义schedule: a.新建sc ...

  10. Eclipse+maven 导致Eclipse启动后Build workspaces卡死或者下载缓慢的问题

    参考文档: (1)Eclipse 一直不停 building workspace完美解决总结 (2)eclipse 一直building workspace 问题 解决办法: (1)第一步: 修改ec ...