IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 网络协议 -> 网络协议学习笔记 · 08 -> 正文阅读

[网络协议]网络协议学习笔记 · 08

学习笔记系列文章


网络互连模型

图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
  网络协议 最新文章
使用Easyswoole 搭建简单的Websoket服务
常见的数据通信方式有哪些?
Openssl 1024bit RSA算法---公私钥获取和处
HTTPS协议的密钥交换流程
《小白WEB安全入门》03. 漏洞篇
HttpRunner4.x 安装与使用
2021-07-04
手写RPC学习笔记
K8S高可用版本部署
mySQL计算IP地址范围
上一篇文章      下一篇文章      查看所有文章
加:2022-08-06 11:14:36  更:2022-08-06 11:15:59 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/25 23:53:08-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码