TCP/IP这本书讲TCP是从哪些方面保证可靠性的?
把书读薄(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是从哪些方面保证可靠性的?相关推荐
- TCP/IP参考模型-传输层TCP
系列文章目录 由于因特网的实现是一个分层架构,为了防止篇幅过大,笔者不想一篇文章就写完想表达的所有内容,于是会以系列文章的方式,主要内容包括TCP/IP分层架构.网络层的最短路径算法:Dijkstra ...
- tcp ip协议_网络通信-TCP/IP协议族简述
导读:计算机与网络设备要相互通信需要遵守同样的规则.例如,如何找到通信目标.该使用哪种语言通信.怎么结束通信等规则.不同的硬件.操作系统之间的通信都需要遵循同一种规则,这种规则也称为是协议.下面本文主 ...
- TCP/IP,TCPsocket,tcp协议的特点,tcp报文段最长字节数,tcp头内容,确认号和超时时限的设定细节,tcp协议是GBN和SR的混合体,
TCP/IP,TCPsocket,tcp协议的特点,tcp报文段最长字节数,tcp头内容,确认号和超时时限的设定细节,tcp协议是GBN和SR的混合体, 一.TCPsocket 1.TCP是面向连接的 ...
- Linux Kernel TCP/IP Stack — Socket Layer — TCP/UDP Socket 网络编程
目录 文章目录 目录 TCP/UDP Socket 逻辑架构 创建 Socket 绑定 Socket 请求建立 Socket 连接 监听 Socket 接受请求 关闭连接 数据的发送和接收 send ...
- 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 ...
- TCP/IP协议学习之TCP、IP篇
TCP/IP是不同通信协议的大集合 协议族 TCP/IP是基于TCP和IP这两个最初的协议之上的不同的通信协议的大集合. 团结就是力量嘛,厉害的人总是倾向于聚集起来,厉害的协议同理,那么这些协议具体包 ...
- (chap2 TCP/IP基础知识) TCP/IP分层模型的通信流程
1. 每个分层中,都会对所发送的数据附件一个首部,在这个首部中包含了该层次必要的信息,如发送的目标地址以及协议相关信息. 1.1 数据单位 包 全能性术语. 帧 表示数据链路层中包的单位. 数据报 I ...
- (chap2 TCP/IP基础知识) TCP/IP协议分层模型-应用层
应用层--会话层以上的分层 1. C/S模型 2. WWW (World Wide Web) WWW 中的HTTP是OSI应用层的协议,HTML属于表示层的协议. 3. 电子邮件 SMTP (Simp ...
- (chap2 TCP/IP基础知识) TCP/IP协议分层模型
1. TCP ( Transmission Control Protocol)和IP( lnternet Proto-col )通信协议群 1.1 Internet互联网 互联网中的每个网络都是由骨干 ...
最新文章
- c++静态成员函数好处
- 面试官:你说熟悉MySQL事务,那来谈谈事务的实现原理吧!
- 把我坑惨的一个update语句!
- python 下载大文件
- python学会后月薪-零基础python培训后薪资有多少?
- Spring AOP通知实例 – Advice
- android studio scala插件,Scala 语言开发Andorid ,开发环境的搭建(一)
- Win10系统的SurfacePro4如何重装系统-3 重装完成之后的系统优化
- C# 子类实例化基类 基类使用不了子类的方法_C#学习笔记11--接口/泛型
- java foreach 跳过本次循环_【Java】对foreach循环的思考
- Jsp、Servlet
- Ubantu16.04,利用vsftpd搭建ftp服务器,修改vsftpd.conf后,无法连接服务器
- 罗马音平假字复制_罗马音大全可复制汉字app下载
- 学习spss的心得体会
- gmail谷歌邮箱开启SMTP
- 用c语言编写的源文件 若没有产生编译错误,MSE C语言第一章习题
- LLC谐振变换器工作模态分析
- python实现自动拨打电话_python 实现手机自动拨打电话的方法(通话压力测试)
- 报告:使用加密货币进行跨境汇款的人数越来越多
- android声音播放函数双声道合并,Android音频编辑之音频合成功能