传输层-TCP详解

面向连接

通讯双方交换数据之前必须建立连接(UDP不用)

可靠的

多种确保可靠性的机制(UDP不可靠)

字节流服务

8bit为最小单位构成的字节流(UDP发送的数据报都是独立的,因此不是面向流的协议)

套接字地址

TCP使用“连接”而不仅仅是端口作为最基本的抽象,同时将TCP连接的端点成为插口(socket),或套接字,套接口。
插口和端口、IP地址的关系是:插口 = IP地址 + 端口号
这里写图片描述

TCP逻辑通信图示

这里写图片描述
下图更形象
这里写图片描述
字节流其实是报文段组成的,报文段没有固定大小。
这里写图片描述

TCP报文段格式

这里写图片描述

源端口和目的端口字段

各占2字节。端口是应用层与传输层的服务接口,传输层的复用及分用功能都要通过端口才能实现。

序号字段

占4字节,每个报文段都有序号由TCP指派,报文段由不同大小的字节组成,每个序号都是其第一个字节的字节号。

字节号

应用层发向传输层的基本单元是一字节,每个字节都有编号称为字节号,范围为0~2^32-1,一次发送的数据第一个字节编号是随机的,假如第一个字节随机号是100,一次传输300字节,那么字节号范围为100~399。

确认号

占4字节,是期望收到对方的下一个报文段的数据的第一个字节的符号。

3首部长度

占4bit,它指出TCP首部共有多少个4字节,首部长度可以在20~60字节之间。因此,这个字段值可以在5(5 x 4 = 20)至15(15 x 4 =60)之间。

保留位

未被开发,全为0。

URG

紧急比特。当URG置一时,表明紧急指针字段有效。它告诉系统此报文段中有紧急数据,应尽快传送。(相当于高优先级的数据)。

ACK

确认比特。置一时表明确认号字段有效。为0时确认号无效。

PSH

推送比特。接收TCP收到推送比特置一的报文段,就尽快的交付给接受应用进程,而不再等到整个缓存满才向上交付。

RST

复位比特。置一时表明TCP连接中出现严重差错(如由于主机崩溃或其他原因),必须释放连接,然后再重新建立运输连接。
一般在三种情况下出现:

  • 拒绝连接请求:发送端发送的数据接收端没有开启对应端口,接收端会发送RST置一的报文段,告诉发送端自己没有对应端口。
  • 异常终止连接:某一端异常终止。另一端发送RST置一的报文段关闭当前连接。
  • 终止空闲连接:发送端接收端长时间没有交互,发送RST置一的报文段撤销之前的连接。

SYN

同步比特。置一表示这是一个连接请求或连接接受报文。
一般第一次访问远端会用。

SYN泛洪攻击

发送方不停的向接收方发送SYN报文,但是发的源IP是假的,错误的,接收端找不到,但是发送端在发接收端就得确认,接收端资源被占用。

FIN

终止比特。用来释放一个连接。置一时表明此报文段的发送端的数据已经发送完毕,并要求释放运输连接。

窗口

占2字节。窗口字段用来控制发送端发送的数据量。单位为字节。接收端根据设置的TCP缓存空间大小确定自己的接收窗口大小,然后通知发送端以确定发送端发送窗口的上限。防止阻塞。

检验和(TCP必须有,UDP可以没有)

2字节。检验和字段检验的范围包括首部和数据两部分。在计算检验和时,要在TCP报文段的前面加上12字节的伪首部(即IP地址)。

紧急指针

占2字节。紧急指针指出在本报文段中的紧急数据的最后一个字节的序号。

选项字段

长度可变。TCP只规定了一种选项,即最大报文段长度MSS(Maximum Segment Size)。MSS告诉对方TCP:“我的缓存所能接收的报文段的数据字段的最大长度是MSS个字节。”数据字段加上TCP首部,才等于整个TCP报文段。
MTU:Maximum Transmission Unit最大传输单元,最大1500字节,由硬件决定。
一般情况下 MSS = MTU - 20字节(IP首部)- 20字节(TCP首部)。

填充字段

为了使整个首部长度是4字节的整数倍。

实际抓包

这里写图片描述
如图,可以一一对应。
以下提到的数据包里没有,为抓包软件自己添加的。
Stream index:流索引,如果本机一直访问某一服务器,流索引始终为0;如果不同服务器切换,流索引为1。
TCP Segment Len:报文段长度。0代表当前还未正式数据传输。
Calculated window size:一般与Window size value相等,不相等的情况下Window size value与Window size scaling factor(窗口缩放范围)相乘得到的值Calculated window size即为最大窗口值。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值