应用层向TCP层发送用于网间传输的、用8位字节表示的数据流,然后TCP把数据流分割成适当长度的报文段(通常受该计算机连接的网络的数据链路层的最大传输单元(MTU)的限制)。之后TCP把结果包传给IP层,由它来通过网络将包传送给接收端实体的TCP层。TCP为了保证不发生丢包,就给每个包一个序号,同时序号也保证了传送到接收端实体的包的按序接收。然后接收端实体对已成功收到的包发回一个相应的确认(ACK);如果发送端实体在合理的往返时延(RTT)内未收到确认,那么对应的数据包就被假设为已丢失将会被进行重传。TCP用一个校验和函数来检验数据是否有错误;在发送和接收时都要计算校验和。

Client

Server

TCP连接后Client和Server就无所谓了 因为可以双向传输

(建立链接

syn(synchronize)

ack 1 的意思是已经收到了seq 0 ,期待收到的是ack1 (expect 1

===>

SYN(seq0

<===

ACK(ack1

SYN(seq0

===>

ACK(ack1 seq1

连接建立后两边都可以开始发送data

发了22个字节后ack的是23(expect 23

用软件看一下:

这个seq num 是相对的:

最新文章

  1. 【康拓展开】及其在求全排列第k个数中的应用
  2. LeetCode Minimum Moves to Equal Array Elements
  3. [MetaHook] Surface hook
  4. JMS【一】--JMS基本概念
  5. 使用NSOperation使用,创建线程中传递多个参数
  6. 正则表达式的先行断言(lookahead)和后行断言(lookbehind)
  7. 指定端口号,多线程扫描局域网内IP地址
  8. Leetcode题解(20)
  9. echarts分组插件echarts.group代码分享
  10. Go基础(2)
  11. sql server 性能调优之 资源等待内存瓶颈的三种等待类型
  12. yii2 getter
  13. 2018-2019-2 20175211 实验一《Java开发环境的熟悉》实验报告
  14. 洛谷 P2587 [ZJOI2008]泡泡堂 解题报告
  15. Ubuntu访问Windows共享目录
  16. Luogu 3960 [NOIP2017] 列队 - splay|线段树
  17. bootstrap-treeview + angular 使用
  18. scss-函数
  19. Android 对话框 (AlertDialog)
  20. ios8 xcode6 下的启动界面设置和图标设置

热门文章

  1. HDU 4528
  2. HDU 4505
  3. [Javascript Crocks] Safely Access Object Properties with `prop`
  4. IOS - 查找未使用的图片
  5. POJ 3080 Blue Jeans (后缀数组)
  6. Android多线程断点下载
  7. oc6--类方法
  8. ES Segment Memory——本质上就是segment中加到内存的FST数据,因此segment越多,该内存越大
  9. Truck History --hdoj
  10. SwiftUI 官方教程(八)