首页 > 其他分享 >[笔记]网络原理3 - 传输层及其相关协议

[笔记]网络原理3 - 传输层及其相关协议

时间:2024-07-11 11:35:55浏览次数:15  
标签:ARQ Seq 主机 TCP 发送 笔记 传输层 原理

1. 传输层中的一些基本概念

  • TCP 和 UDP 的一些区别
  • UDP 的数据格式,伪首部是固定的 12bytes,源 IP 为 0 17,也是固定表示 UDP 的。伪首部仅仅是用来计算校验和,不会传给网络层。
  • 源端口/目标端口:就是平时用到的 port。源端口是临时开启的随机端口,目标端口有一些常用端口号如下图
  • UDP 首部就 8bytes

2. TCP 的数据格式

  • 数据偏移*4=数据长度,整个 TCP 长度 = 20byte 首部+数据长度。
  • 传输层的数据长度 = 网络层的总长度 – 网络层的首部长度 – 传输层的首部长度。
  • TCP 的[SYN]标志位:SYN=1,ACK=0 表示一个建立连接的请求;对方如果回复 SYN=1,ACK=1,则表示同意建立连接。

3. TCP的自动重传ARQ,连续ARQ,滑动窗口协议

  • 停止等待 ARQ 协议:TCP 的自动重传请求,如下:

  • 比 ARQ 效率高的连续 ARQ 和滑动窗口协议
  • SACK(选择性确认):不同于上述的连续 ARQ,它的先进在于如果一旦发现数据丢失,不会把整个分组重传,它可以查得到是该分组内第几个包丢了,并重发当前包,最多携带 4 组。

4. 从wireshark来看TCP的分段传输

  • 从一段抓包来研究 TCP,在下面包里,从第 5 行开始看:首先从5-9 行,服务器一口气发了 5 个数据包过来,第 10 行客户端才开始确认,确认完毕后服务器从第 11 行又开始往下发数据。Seq是序号,表示发送的数据包第一个字节的编号。Ack 是确认,表示确认收到了多少个字节,接下来从多少字节开始发。第 5-9 行都是服务器发送的数据,Seq 从 1 一直增加到了 4153,len 第一是 312,后面是 1280。但是 Ack 一直是 748 没有变。第 10 行客户端的回复中看出来。客户端的 Req 是 748,Ack 是 5433,表示客户端一口气收到了 5 个服务器发来的数据,并希望服务器继续从 5433bytes 开始发。所以第 11 行,服务器继续从 5433 开始开始发送数据。这里的 Seq 一直是相对 Seq,在传输过程中,原始Seq(raw Seq)是累加的,会特别大。Win 表示窗口,这个字段有流量控制的功能,用来告知对方下一次允许发送的数据大小,避免流量堵塞,发送方的窗口大小不能比接收方的窗口大。
  • 我们数据选择在传输层就分段传输,而没有在网络层切片的原因?因为数据链路和网络层都没有重传功能,没有可靠传输的功能,但是传输层有 ARQ/SACK

5. TCP的建立连接过程

  • 流量控制:Win 表示窗口,这个字段有流量控制的功能,用来告知对方下一次允许发送的数据大小,避免流量堵塞,发送方的窗口大小不能比接收方的窗口大。rwnd 表示接收窗口,swnd 表示发送窗口,cwnd 表示拥塞窗口。
  • MSS(Max Segment Size):每个段最大的数据部分大小,只会在建立连接的时候出现。在建立连接的时候协商好(下图可以看客户端给服务器 1460,服务器回客户端 1412。最终以较小的部分为准),如下图,在 TCP 的三次握手报文中,MSS=1460。SYN=1,ACK=0 表示一个建立连接的请求;对方如果回复 SYN=1,ACK=1,则表示同意建立连接。

6. Seq 和 Ack 之间的交互

6. 从wireshark看TCP释放连接的过程

  • 抓包解释释放连接过程:第一次挥手时,主机 1 主动发送出 FIN 报文段,表示主机 1 告诉主机 2,主机 1 已经没有数据要发送了,但是此时主机 1 还可以接受来自主机 2 的数据。第二次挥手时,当主机 2 返回 ACK 报文段时,表示主机 2 已经知道主机 1 没有数据发送了,但是主机 2 还是可以发送数据到主机 1 的。第三次挥手时,当主机 2 也发送了一个 FIN 报文段时,表示主机 2 告诉主机 1,主机 2 已经没有数据要发送了。第四次挥手时,当主机 1 返回 ACK 报文段时,表示主机 1 已经知道主机 2 没有数据发送了,随后整个 TCP 连接正式断开。
  • 释放连接的 4 次挥手过程:
  • 如果有时抓包只看到 3 次挥手,那是因为第 2,3 次挥手合并了。

标签:ARQ,Seq,主机,TCP,发送,笔记,传输层,原理
From: https://www.cnblogs.com/xiacuncun/p/18295104

相关文章

  • [笔记]网络原理2 - 互连模型,物理层,数据链路层,网络层及其相关协议
    1.五层模型层层叠加,层层封装2.数据链路层中的一些概念MTU:最大传输单元,每一种数据链路层协议都规定了最大能传送的帧的数据长度上限,以太网的MTU最大为1500bytes,最小为64bytes。数据链路层会在数据包的左边(帧开始/结束符)右边(帧开始/结束符)都封装一些东西,封装成帧。......
  • [笔记]网络原理1 - 集线器,交换机,网关,路由器
    1.一些零散的知识记录OSI七层模型:应表会传网数物TCP/IP五层模型:应传网数物TCP/IP四层模型:应传网+网络接口特定格式,在常用五层模型里面物->电信号(Bits,比特流,有一些类似时钟信号的数据流传输);数据链路->MAC地址(Frames,帧);PPP(路由器之间)协议,CSMA/CD(hub,设备间)协议;网......
  • [笔记]网络原理4 -应用层及其相关协议
    1.常见的协议HTTP/HTTPSFTP,文件传输DHCP,动态主机配置DNS,域名系统2.DNS,DomainNameSystem域名的出现是因为IP不好记,而且不能表达组织/公司的名字和性质。市面上的网页虽然是域名访问,但是实际还是要靠IP,毕竟服务器过路由器只能通过IP。域名申请注册的一个链接DNS......
  • 入门的第一课-随笔记录
    Markdown学习标题一级标题:#+空格+标题名称二级标题:##+空格+标题名称三级标题:###+空格+标题名称(最多支持六级标题)字体Hello,World!字体两边各加两个*成为粗体Hello,world!字体两边各加一个*成为斜体Hello,World!斜体加粗则是两边各加三个*9.99两边加两个~则......
  • Linux学习笔记(02)——文件相关知识
    文件系统结构/bin存放二进制可执行文件,这些命令在单用户模式下也能够使用。可以被root和一般的账号使用。/bootUbuntu内核和启动文件,比如vmlinuz-xxx。gurb引导装载程序。/dev设备驱动文件/etc存放一些系统配置文件,比如用户账号和密码文件,各种服务的起始地址。/h......
  • TCP协议三次握手和四次挥手原理图文解析
    前言TCP协议(TransmissionControlProtocol)是计算机网络中最常用的传输层协议之一,负责提供可靠、面向连接的数据传输服务。它存在的目的就是为了让传输更可靠,也更稳定,但同样也会对端口与端口之间的传输速率造成影响。它一般采用两种方式来使传输更加可靠。一种是面向连接,而另......
  • 深入理解 CompletableFuture 的底层原理
    引言在现代Java编程中,异步编程变得越来越重要。为了实现高效和非阻塞的代码,Java8引入了CompletableFuture,一个用于构建异步应用程序的强大工具。本文将详细探讨CompletableFuture的底层原理,展示其工作机制,并通过代码示例说明如何在实际应用中使用它。异步编程的背景......
  • 线段树分治学习笔记
    线段树分治是一种通过线段树维护时间轴,实现一些可撤销的信息维护问题的手段。线段树分治是离线算法。具体地,对于若干个修改与询问,按照时间戳像区间修改一样挂在线段树的节点上,然后遍历整棵线段树,将节点上的操作计入贡献,对于一个时间戳为\(t\)的询问,线段树上区间\([t,t]\)即......
  • 【持续更新】平衡树笔记
    目录1从BST到平衡树2替罪羊树2.1替罪羊树的维护2.2替罪羊树的基本操作2.2.1替罪羊树的结点信息2.2.2替罪羊树的空间利用2.2.3替罪羊树的重建2.2.4替罪羊树的插入、删除2.2.5替罪羊树的按数找排名、按排名找数2.2.6替罪羊树的找前驱、后继2.3替罪羊树完整代码1从BS......
  • 文件系统(九):一文看懂yaffs2文件系统原理
    liwen012024.07.07前言yaffs是专为nandflash设计的一款文件系统,与jffs类似,都是属于日志结构文件系统。与jffs不同的是,yaffs文件系统利用了nandflash一些特有属性,所以在数据读写擦除和回收上都有较大的差异。关于jffs2文件系统的介绍可以查看《文件系统(八):LinuxJFFS......