网络协议学习笔记 · 08

本文深入探讨了网络互连模型中的传输层,重点关注TCP和UDP协议。介绍了UDP的数据格式、检验和、端口以及常用命令。对于TCP,详细讲解了其首部字段、可靠传输策略如停止等待ARQ、连续ARQ和滑动窗口协议,以及选择性确认SACK。此外,还讨论了在传输层进行数据分段而非在网络层分片的原因。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

学习笔记系列文章


网络互连模型

图01

请求过程

图02

网络分层

图03

传输层(Transport)

图04

UDP

数据格式
图05

UDP长度(Length)

占16位:首部的长度 + 数据的长度

检验和(Checksum)

图06

端口

图07

常用命令 【实践】

netstat –an
查看被占用的端口

netstat –anb
查看被占用的端口、占用端口的应用程序

telnet [主机] [端口]
查看是否可以访问主机的某个端口

TCP

TCP的几个要点:

  • 可靠传输
  • 流量控制
  • 拥塞控制
  • 连接管理(建立连接、释放连接)

数据格式:
图08

首部 - 序号

图12

首部 - 确认号

图13

首部 - 数据偏移

  • 占4位,取值范围是 0x0101 ~ 0x1111(5~15)
  • 数据偏移 * 4 = 首部长度(Header Length)
  • 首部长度是 20 ~ 60 字节

首部 - 保留

  • 占6位,目前全为0

小细节: 有些资料中,TCP首部的 保留(Reserved)字段 占3位,标志(Flags) 字段占9位(Wireshark中也是如此)
图09
图10

首部 - 标志位

标志位(Flags)

URG(Urgent)

  • 当 URG = 1 时,紧急指针字段才有效。表明当前报文段中有紧急数据,应优先尽快传送

ACK(Acknowledgment)

  • 当 ACK = 1 时,确认号字段才有效

PSH(Push)

RST(Reset)

  • 当 RST = 1 时,表明连接中出现严重差错,必须释放连接,然后再重新建立连接

SYN(Synchronization)

  • 当 SYN = 1、ACK = 0 时,表明这是一个建立连接的请求
  • 若对方同意建立连接,则回复 SYN = 1、ACK = 1

FIN(Finish)

  • 当 FIN = 1 时,表明数据已经发送完毕,要求释放连接

首部 - 窗口

图14

首部 - 检验和

检验和(CheckSum)
跟UDP一样,TCP检验和的计算内容:伪首部 + 首部 + 数据。
伪首部:占用12字节,仅在计算检验和时起作用,并不会传递给网络层。
图11

要点 - 可靠传输

可靠传输是为了保证包的完整性,当有丢包、受到三次重复确认等情况,就会重新发包。

停止等待ARQ协议

ARQ(Automatic Repeat–reQuest),自动重传请求。
图15

图16

疑问: 若有个包重传了N次还是失败,会一直持续重传到成功为止么?

  • 这个取决于系统的设置,比如有些系统,重传5次还未成功就会发送 reset报文(RST)断开TCP连接。 图22
连续ARQ协议 + 滑动窗口协议

图17
如果接收窗口最多能接收4个包,但发送方只发了2个包,接收方如何确定后面还有没有2个包?
等待一定时间后没有第3个包,就会返回确认收到2个包给发送方。

图18

SACK(选择性确定)

SACK(Selective acknowledgment,选择性确认)技术

  • 告诉发送方哪些数据丢失,哪些数据已经提前收到
  • 使TCP只重新发送丢失的包,不用发送后续所有的分组
    图19
    可靠传输图示:
    图20
    图21
    思考:
    为什么选择在传输层就将数据“大卸八块”分成多个段,而不是等到网络层再分片传递给数据链路层?
    图23

上一篇:07. 网络层
下一篇:09. TCP&流量控制 · TCP&拥塞控制

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值