转: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并不保证,网络层接收包的顺序是错乱的。

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

...

转载于:https://www.cnblogs.com/panchanggui/p/9760105.html

socket 关于同一条TCP链接数据包到达顺序的问题相关推荐

  1. 网络技术入门 :HTTP报文和TCP/IP数据包

    本章把HTTP报文和TCP/IP数据包放在一起.是因为: 报文是一个完成的有意义的数据. 数据包可以理解为组成报文的传输单元. 应用程序的数据一般都比较大,因此TCP会按照网络包的大小对数据进行拆分. ...

  2. ibm aix 抓包命令_在IBM AIX上模拟丢弃的TCP / IP数据包

    本文介绍: AIX内核扩展,允许来往于指定主机的指定百分比的TCP / IP数据包被随机丢弃,以模拟不利的网络状况. 加载,激活和卸载内核扩展的实用程序. C和Java™实用程序,用于监视到达目标主机 ...

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

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

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

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

  5. Linux 系统应用编程——网络编程(TCP/IP 数据包格式解析)

    图中括号中的数字代表的是当前域所占的空间大小,单位是bit位. 黄色的是数据链路层的头部,一共14字节 绿色的部分是IP头部,一般是20字节 紫色部分是TCP头部,一般是20字节 最内部的是数据包内容 ...

  6. TCP重组数据包分析

    参照TCP/IP详解第二卷24~29章,详细论述了TCP协议的实现,大概总结一下TCP如何向应用层保证数据包的正确性.可靠性,即TCP如何实现对数据报文的重组. 首先要设计两个报文队列,一个存放正常来 ...

  7. TCP/IP数据包 - 传输控制层到链路层

    注:本文转自  https://blog.csdn.net/luguifang2011/article/details/40658723 一.OSI七层模型 OSI中的层 功能 TCP/IP协议族 应 ...

  8. TCP/IP数据包格式详解-包括数据链路层的头部

    图中括号中的数字代表的是当前域所占的空间大小,单位是bit位. 黄色的是数据链路层的头部,一共14字节 绿色的部分是IP头部,一般是20字节 紫色部分是TCP头部,一般是20字节 最内部的是数据包内容 ...

  9. Linux 网络编程——TCP/IP 数据包格式解析

    图中括号中的数字代表的是当前域所占的空间大小,单位是bit位. 黄色的是数据链路层的头部,一共14字节 绿色的部分是IP头部,一般是20字节 紫色部分是TCP头部,一般是20字节 最内部的是数据包内容 ...

最新文章

  1. 使用PHP处理POST上传时$_FILES数组为何为空
  2. python零基础怎么学-编程零基础应当如何开始学习 Python?
  3. Ajax(form表单文件上传、请求头之contentType、Ajax传递json数据、Ajax文件上传)
  4. Markdown中数学公式练习(2)
  5. 关于real210开发板linux系统可能无法解析域名的问题解决方法
  6. matlab叠加定理怎么输入,自动控制原理(第2版)(余成波-张莲-胡晓倩)习题全解及MATLAB实验-----第1、2章习题解答.doc...
  7. 2017.10.12 礼物(zjoi2011) 失败总结
  8. Java 实现线程的两种方式
  9. POJ 2142 The Balance ★ (不定方程 ax+by=c 的|x|+|y|最小解)
  10. 阿里云技术天团空降CSDN独家在线峰会,揭秘核心竞争力
  11. [SharePoint教程系列] 0.SharePoint 2016介绍
  12. ORACLE:单行函数
  13. 阿里内核数据库文章-目录
  14. 每日学术速递1.29
  15. 微信支付通用支付接口
  16. mysql数据库中到底能建多少张表?(单实例下单个库)
  17. 淘宝运营教程:淘宝工具提高店铺流量
  18. SAP ABAP PP常用数据库表
  19. 游戏数值策划经验篇:从多角度解读游戏经验值设计
  20. grub 硬盘安装linux,Grub4Dos硬盘安装Fedora/CentOS Linux操作系统

热门文章

  1. od拦截消息 comboboxonchange_某聊天软件逆向之偷看消息不quot;已读quot;
  2. java record用法_JDBM学习八(Record)
  3. 机器学习算法与Python实践之逻辑回归(Logistic Regression)
  4. R并行做大数据时间序列分析与bootstrap
  5. pythonista安装tkinter_Python又把GUI界面攻下了,今天就告诉你怎么玩
  6. 处理字典值是把字典放内存还是用sql处理_python基础~元祖与字典原理
  7. 快捷键截屏_笔记本电脑截屏的快捷键是什么
  8. python实现简单的http服务器_python实现简单http服务器功能
  9. 系统学习机器学习之总结(三)--多标签分类问题
  10. 前景检测算法(十三)--KDE2000