把书读薄(TCP/IP详解 卷一 第十七章)

TCP协议长什么样?

  • 1位表示1bit,除去任选字段(选项和数据)共160bit也就是20字节
  • 源端口号和目的端口号用于寻找发端和接收端【源端口+源IP地址+目的端口+目的IP地址唯一确定一个TCP连接】
  • 序号用来标识从TCP发送端向接收端发送的数据字节流,他是32bit的无符号数,到达2的32次方-1后又从0开始
  • 确认序号是上次已成功收到数据字节序号加1【只有ack标识是1时,他才有效】
  • 首部长度标识TCP包首部实际长度,它的单位是32bit【假如数字是6,那么表示头部实际长度是 4字节6=24字节,由于首部长度只有4bit,最大数为15,因而最多有1532bit=480bit=60字节】
  • URG置为1表示紧急指针有效
  • ACK置为1表示确认序号有效
  • PSH置为1表示接收方应该尽快将这个报文段交给应用层
  • RST置1表示重建连接
  • SYN置1用来发起连接
  • FIN置1表示发端完成发送任务
  • 窗口大小是TCP用来做流量控制
  • 校验和覆盖TCP的首部和TCP数据,它一定由发端计算存储,收端验证
  • 紧急指针是一个正偏移量,和序号字段中的值相加表示紧急数据最后一个字段的序号
  • 常见可选字段如MSS(Maximim Segment Size 最长报文大小),用来标识本端能接收的最大长度的报文段

真实tcp报文怎么看?

以下报文为TCP建立和终止的报文示例

完整格式如下:

报文序号 报文产生时间(与上次报文的时间间隔) 源地址.端口号 > 目的地址 : 标识 分组序号:确认序号(报文段中字节数) 窗口大小 接收的最大报文长度
  • svr4.1037 > bsdi.discard 表示源地址的某个端口到目的地址
  • S是SYN标志,表示发起连接 ;F是FIN标志,表示发送端发送完数据;. 表示(SIN,FIN,RST,PSH)这四个标识都是0
  • 1415531521:1415531521(0) 表示分组的序号是1415531521,报文段中的数据字节数为0
  • ack后跟着的数字串是确认序号,它只有首部标识置为1才有用
  • win 4096表示窗口大小
  • <mss 1024>表示发送端能接收的最大报文长度

默认情况下tcpdump输出只显示SYN报文段的完整序号,其它位置显示偏移量

tcpdump怎么用?

常用参数解析

-X :用16进制显示具体内容
-n:显示IP,不转换域名
-s 0:尽可能多的展示内容
-vvv: 展示详细内容
-i eth1:监听eth1网络
tcp :监听协议类型
dst port 8500:8500端口接收的数据
-A:acsii显示内容</pre>

抓取当前机器上的post请求

sudo tcpdump -i eth1 -X -vvv -n -s 0 'tcp dst port 8080 and tcp[(tcp[12]>>2):4] = 0x504f5354'

比如我想获取post请求的原始IP可以用

sudo tcpdump -i eth1 -A -vvv -n -s 0 'tcp dst port 8080 and tcp[(tcp[12]>>2):4] = 0x504f5354' | grep 'X-Forwarded-For'

抓取当前机器上的get请求

sudo tcpdump -i eth1 -X -vvv -n -s 0 'tcp dst port 8080 and tcp[(tcp[12]>>2):4] = 0x47455420'

上面用到的tcp中括号相关内容是指tcp过滤,字节范围表达: proto [ expr : size ] photo表示协议 expr 表示与指定协议开头相关的字节偏移量;如只查看fin包 tcpdump -i < interface > “tcp[tcpflags] & (tcp-fin) !=0”

TCP协议从那些方面保证可靠性的?

  • 应用数据被分割成TCP认为最适合发送的数据块
  • 发送一个报文段(TCP传递给IP信息的单位)后启动定时器,如果无法及时收到确认,重发报文
  • 收到报文后,推迟几分之一秒发送确认
  • 提供首部和校验和,校验和出错不确认收到此报文,引发重发
  • 必要情况TCP会对收到的数据重排序,将正确的顺序交给应用层
  • 接收端会丢弃重复的数据
  • 本身能做流量控制

TCP/IP这本书讲TCP是从哪些方面保证可靠性的?相关推荐

  1. TCP/IP参考模型-传输层TCP

    系列文章目录 由于因特网的实现是一个分层架构,为了防止篇幅过大,笔者不想一篇文章就写完想表达的所有内容,于是会以系列文章的方式,主要内容包括TCP/IP分层架构.网络层的最短路径算法:Dijkstra ...

  2. tcp ip协议_网络通信-TCP/IP协议族简述

    导读:计算机与网络设备要相互通信需要遵守同样的规则.例如,如何找到通信目标.该使用哪种语言通信.怎么结束通信等规则.不同的硬件.操作系统之间的通信都需要遵循同一种规则,这种规则也称为是协议.下面本文主 ...

  3. TCP/IP,TCPsocket,tcp协议的特点,tcp报文段最长字节数,tcp头内容,确认号和超时时限的设定细节,tcp协议是GBN和SR的混合体,

    TCP/IP,TCPsocket,tcp协议的特点,tcp报文段最长字节数,tcp头内容,确认号和超时时限的设定细节,tcp协议是GBN和SR的混合体, 一.TCPsocket 1.TCP是面向连接的 ...

  4. Linux Kernel TCP/IP Stack — Socket Layer — TCP/UDP Socket 网络编程

    目录 文章目录 目录 TCP/UDP Socket 逻辑架构 创建 Socket 绑定 Socket 请求建立 Socket 连接 监听 Socket 接受请求 关闭连接 数据的发送和接收 send ...

  5. TCP/IP 详解卷一 - TCP CWR、ECE、URG、ACK、PSH、RST、SYN、FIN控制位

    from:https://blog.csdn.net/u012243115/article/details/43487461 2015年02月04日 15:56:32 阅读数:1464 TCP 和 U ...

  6. TCP/IP协议学习之TCP、IP篇

    TCP/IP是不同通信协议的大集合 协议族 TCP/IP是基于TCP和IP这两个最初的协议之上的不同的通信协议的大集合. 团结就是力量嘛,厉害的人总是倾向于聚集起来,厉害的协议同理,那么这些协议具体包 ...

  7. (chap2 TCP/IP基础知识) TCP/IP分层模型的通信流程

    1. 每个分层中,都会对所发送的数据附件一个首部,在这个首部中包含了该层次必要的信息,如发送的目标地址以及协议相关信息. 1.1 数据单位 包 全能性术语. 帧 表示数据链路层中包的单位. 数据报 I ...

  8. (chap2 TCP/IP基础知识) TCP/IP协议分层模型-应用层

    应用层--会话层以上的分层 1. C/S模型 2. WWW (World Wide Web) WWW 中的HTTP是OSI应用层的协议,HTML属于表示层的协议. 3. 电子邮件 SMTP (Simp ...

  9. (chap2 TCP/IP基础知识) TCP/IP协议分层模型

    1. TCP ( Transmission Control Protocol)和IP( lnternet Proto-col )通信协议群 1.1 Internet互联网 互联网中的每个网络都是由骨干 ...

最新文章

  1. c++静态成员函数好处
  2. 面试官:你说熟悉MySQL事务,那来谈谈事务的实现原理吧!
  3. 把我坑惨的一个update语句!
  4. python 下载大文件
  5. python学会后月薪-零基础python培训后薪资有多少?
  6. Spring AOP通知实例 – Advice
  7. android studio scala插件,Scala 语言开发Andorid ,开发环境的搭建(一)
  8. Win10系统的SurfacePro4如何重装系统-3 重装完成之后的系统优化
  9. C# 子类实例化基类 基类使用不了子类的方法_C#学习笔记11--接口/泛型
  10. java foreach 跳过本次循环_【Java】对foreach循环的思考
  11. Jsp、Servlet
  12. Ubantu16.04,利用vsftpd搭建ftp服务器,修改vsftpd.conf后,无法连接服务器
  13. 罗马音平假字复制_罗马音大全可复制汉字app下载
  14. 学习spss的心得体会
  15. gmail谷歌邮箱开启SMTP
  16. 用c语言编写的源文件 若没有产生编译错误,MSE C语言第一章习题
  17. LLC谐振变换器工作模态分析
  18. python实现自动拨打电话_python 实现手机自动拨打电话的方法(通话压力测试)
  19. 报告:使用加密货币进行跨境汇款的人数越来越多
  20. android声音播放函数双声道合并,Android音频编辑之音频合成功能

热门文章

  1. leetcode算法题--和为s的连续正数序列
  2. OVS 端口抽象层次(四十)
  3. leetcode算法题--有序链表转换二叉搜索树★
  4. TIOBE 9 月排行榜:C++ 式微,第 3 名被 Python 拿下
  5. Express踩坑系列之上传文件
  6. 【微信小程序】scroll-view与Page下拉冲突
  7. 限制页面只能在框架页中
  8. [转]符号和运算符参考 (F#)
  9. 数据数字mongodb 模糊查询以及$type使用
  10. Centos7.x 安装 Supervisord