传输层(代码片段)

mengd mengd     2023-04-19     296

关键词:

网络层:IP(RIP、OSPF、BGP)、ICMP、IGMP、ARP

传输层:TCP、UDP

应用层:http、https、ftp、SMTP、POP3、RDP

一、传输层概述

技术图片

1. 传输层两个协议应用场景

TCP:分段、编号、流量控制、建立会话、netstat -n

UDP:一个数据包就能完成数据通信、不建立会话、多播

  1. TCP(Transmission Control Protocol)传输控制协议

    应用场景:需要将要传输的文件分段传输时;就需要TCP协议来建立会话实现可靠传输;同时也有流量控制功能。(例如QQ传文件)
    查看会话 netstat -n
    查看建立会话的进程 netstat -nb

    这种逻辑通信信道就相当于一条全双工的可靠信道

  2. UDP(User Data Protocol)用户数据报协议

    应用场景:一个数据包就能完成数据通信;不需要建立会话和流量控制;多播/广播;是一种不可靠传输。(例如QQ聊天,屏幕广播)

TCP 传送的数据单位协议是 TCP 报文段(segment)

UDP 传送的数据单位协议是 UDP 报文或用户数据报

2. 传输层和应用层之间的关系

TCP和UDP协议和不同的端口即可对应一个应用层的协议

http = TCP+80

https = TCP+443

ftp = TCP+21

SMTP = TCP+25

POP3 = TCP+110

RDP = TCP + 3389、远程桌面服务

共享文件夹 = TCP + 445

SQL = TCP + 1433

DNS = UDP+53 or TCP+53

3. 应用层协议和服务之间的关系

服务运行后在TCP或UDP的某个端口侦听客户端的请求

ip地址来定位计算机,用端口来定位服务

查看自己计算机侦听的端口

netstat    -an

4. 运输层协议和网络层协议的主要区别

技术图片

5. 运输层的主要功能

  1. 运输层为应用进程之间提供端到端的逻辑通信(但网络层是为主机之间提供逻辑通信)。

  2. 运输层还要对收到的报文进行差错检测。

  3. 运输层需要有两种不同的运输协议,即面向连接的 TCP 和无连接的 UDP。

6. TCP/IP 体系中的运输层协议

技术图片

7. TCP、IP筛选实现服务器安全

TCP/IP筛选自win7后纳入防火墙了 ,点击“入站规则”或“ 出站规则” ,然后点击“新建规则” ,选择“端口”,并点击“下一步” ,这里就可以选择协议类型TCP或UDP,以及需要筛选的端口,设置完成后,点击“下一步”。

技术图片

值得注意:

  1. 更改端口增加服务器安全
  2. Windows防火墙不能防控灰鸽子木马程序
  3. IPSec严格控制网络流量

二、用户数据报协议 UDP

  1. UDP 只在 IP 的数据报服务之上增加了很少一点的功能,即端口的功能和差错检测的功能。
  2. 虽然 UDP 用户数据报只能提供不可靠的交付,但 UDP 在某些方面有其特殊的优点。

1. UDP 的主要特点

  1. UDP 是无连接的,即发送数据之前不需要建立连接。
  2. UDP 使用尽最大努力交付,即不保证可靠交付,同时也不使用拥塞控制。
  3. UDP 是面向报文的。UDP 没有拥塞控制,很适合多媒体通信的要求。
  4. UDP 支持一对一、一对多、多对一和多对多的交互通信。
  5. UDP 的首部开销小,只有 8 个字节。

技术图片

2. UDP的首部格式

技术图片

三、传输控制协议 TCP 概述

1. TCP协议的特点

  1. TCP 是面向连接的运输层协议。
  2. 每一条 TCP 连接只能有两个端点(endpoint),每一条 TCP 连接只能是点对点的(一对一)。
  3. TCP 提供可靠交付的服务。
  4. TCP 提供全双工通信。
  5. 面向字节流,如下:

技术图片

2. TCP的连接

  1. TCP 把连接作为最基本的抽象。
  2. 每一条 TCP 连接有两个端点。
  3. TCP 连接的端点不是主机,不是主机的IP 地址,不是应用进程,也不是运输层的协议端口。TCP 连接的端点叫做套接字(socket)或插口
  4. 端口号拼接到(contatenated with) IP 地址即构成了套接字。

技术图片

四、可靠传输的工作原理

1. 停止等待协议

技术图片

  1. 在发送完一个分组后,必须暂时保留已发送的分组的副本。
  2. 分组和确认分组都必须进行编号。
  3. 超时计时器的重传时间应当比数据在分组传输的平均往返时间更长一些

技术图片

2. 可靠通信的实现

  1. 使用上述的确认和重传机制,我们就可以在不可靠的传输网络上实现可靠的通信。
  2. 这种可靠传输协议常称为自动重传请求ARQ (Automatic Repeat reQuest)。
  3. ARQ 表明重传的请求是自动进行的。接收方不需要请求发送方重传某个出错的分组 。

3. 信道利用率

停止等待协议的优点是简单,但缺点是信道利用率太低

技术图片
技术图片

4. 提供信道的利用率:流水线传输

技术图片

5. 连续 ARQ 协议

流水线传输如何可靠?使用滑动窗口技术实现可靠传输

技术图片
技术图片

6. 累积确认

  1. 接收方一般采用累积确认的方式。即不必对收到的分组逐个发送确认,而是对按序到达的最后一个分组发送确认,这样就表示:到这个分组为止的所有分组都已正确收到了
  2. 累积确认有的优点是:容易实现,即使确认丢失也不必重传。缺点是:不能向发送方反映出接收方已经正确收到的所有分组的信息。

7. Go-back-N(回退 N)

  1. 如果发送方发送了前 5 个分组,而中间的第 3 个分组丢失了。这时接收方只能对前两个分组发出确认。发送方无法知道后面三个分组的下落,而只好把后面的三个分组都再重传一次。
  2. 这就叫做 Go-back-N(回退 N),表示需要再退回来重传已发送过的 N 个分组。
  3. 可见当通信线路质量不好时,连续 ARQ 协议会带来负面的影响。

8. TCP 可靠通信的具体实现

  1. TCP 连接的每一端都必须设有两个窗口——一个发送窗口和一个接收窗口
  2. TCP 的可靠传输机制用字节的序号进行控制。TCP 所有的确认都是基于序号而不是基于报文段。
  3. TCP 两端的四个窗口经常处于动态变化之中。
  4. TCP连接的往返时间 RTT 也不是固定不变的。需要使用特定的算法估算较为合理的重传时间。

五、TCP 报文段的首部格式

技术图片

  1. 源端口和目的端口字段——各占 2 字节。端口是运输层与应用层的服务接口。运输层的复用和分用功能都要通过端口才能实现。?
  2. 序号字段——占 4 字节。TCP 连接中传送的数据流中的每一个字节都编上一个序号。序号字段的值则指的是本报文段所发送的数据的第一个字节的序号。
  3. 确认号字段——占 4 字节,是期望收到对方的下一个报文段的数据的第一个字节的序号。
  4. 数据偏移(即首部长度)——占 4 位,它指出 TCP 报文段的数据起始处距离 TCP 报文段的起始处有多远。“数据偏移”的单位是 32 位字(以 4 字节为计算单位)。
  5. 保留字段——占 6 位,保留为今后使用,但目前应置为 0
  6. 紧急 URG —— 当 URG = 1 时,表明紧急指针字段有效。它告诉系统此报文段中有紧急数据,应尽快传送(相当于高优先级的数据)
  7. 确认 ACK —— 只有当 ACK = 1 时确认号字段才有效。当 ACK = 0 时,确认号无效
  8. 推送 PSH (PuSH) —— 接收 TCP 收到 PSH = 1 的报文段,就尽快地交付接收应用进程,而不再等到整个缓存都填满了后再向上交付。
  9. 复位 RST (ReSeT) —— 当 RST = 1 时,表明 TCP 连接中出现严重差错(如由于主机崩溃或其他原因),必须释放连接,然后再重新建立运输连接。
  10. 同步 SYN —— 同步 SYN = 1 表示这是一个连接请求或连接接受报文
  11. 终止 FIN (FINis) —— 用来释放一个连接。FIN = 1 表明此报文段的发送端的数据已发送完毕,并要求释放运输连接
  12. 窗口字段 —— 占 2 字节,用来让对方设置发送窗口的依据,单位为字节。
  13. 检验和 —— 占 2 字节。检验和字段检验的范围包括首部和数据这两部分。在计算检验和时,要在 TCP 报文段的前面加上 12 字节的伪首部。
  14. 紧急指针字段 —— 占 16 位,指出在本报文段中紧急数据共有多少个字节(紧急数据放在本报文段数据的最前面)。

1. 抓包分析

技术图片

  1. ARP,建立可靠传输
  2. UDP(DNS同时占用UDP和TCP的53端口),域名解析
  3. TCP,识别网关MAC地址

技术图片

模拟建立会话到传输数据到确认的过程如下:

技术图片

六、TCP 可靠传输的实现

1. 以字节为单位的滑动窗口技术

技术图片
技术图片
技术图片

技术图片

技术图片

技术图片

发送缓存与接收缓存的作用

发送缓存用来暂时存放:

? 1. 发送应用程序传送给发送方 TCP 准备发送的数据;

? 2. TCP 已发送出但尚未收到确认的数据。

接收缓存用来暂时存放:

? 1. 按序到达的、但尚未被接收应用程序读取的数据;

? 2. 不按序到达的数据。

需要注意:

  1. A 的发送窗口并不总是和 B 的接收窗口一样大(因为有一定的时间滞后)。
  2. TCP 标准没有规定对不按序到达的数据应如何处理。通常是先临时存放在接收窗口中,等到字节流中所缺少的字节收到后,再按序交付上层的应用进程。
  3. TCP 要求接收方必须有累积确认的功能,这样可以减小传输开销。

2. 超时重传时间的选择

技术图片

3. 选择确认 SACK (Selective ACK)

  1. 接收方收到了和前面的字节流不连续的两个字节块。
  2. 如果这些字节的序号都在接收窗口之内,那么接收方就先收下这些数据,但要把这些信息准确地告诉发送方,使发送方不要再重复发送这些已收到的数据。

技术图片

七、TCP 的流量控制

1. 利用滑动窗口实现流量控制

  1. 一般说来,我们总是希望数据传输得更快一些。但如果发送方把数据发送得过快,接收方就可能来不及接收,这就会造成数据的丢失。
  2. 流量控制(flow control)就是让发送方的发送速率不要太快,既要让接收方来得及接收,也不要使网络发生拥塞。
  3. 利用滑动窗口机制可以很方便地在 TCP 连接上实现流量控制。

技术图片

持续计时器 (persistence timer)。

  1. TCP 为每一个连接设有一个持续计时器。
  2. 只要 TCP 连接的一方收到对方的零窗口通知,就启动持续计时器。
  3. 若持续计时器设置的时间到期,就发送一个零窗口探测报文段(仅携带 1 字节的数据),而对方就在确认这个探测报文段时给出了现在的窗口值。
  4. 若窗口仍然是零,则收到这个报文段的一方就重新设置持续计时器。
  5. 若窗口不是零,则死锁的僵局就可以打破了

2. 必须考虑传输效率

可以用不同的机制来控制 TCP 报文段的发送时机:

  1. 第一种机制是 TCP 维持一个变量,它等于最大报文段长度 MSS。只要缓存中存放的数据达到 MSS 字节时,就组装成一个 TCP 报文段发送出去。
  2. 第二种机制是由发送方的应用进程指明要求发送报文段,即 TCP 支持的推送(push)操作。
  3. 第三种机制是发送方的一个计时器期限到了,这时就把当前已有的缓存数据装入报文段(但长度不能超过 MSS)发送出去。

八、TCP的拥塞控制

1. 拥塞控制的一般原理

在某段时间,若对网络中某资源的需求超过了该资源所能提供的可用部分,网络的性能就要变坏——产生拥塞(congestion)。

技术图片

技术图片

2. 拥塞控制方法:慢开始和拥塞避免

技术图片
技术图片

  1. 在主机刚刚开始发送报文段时可先设置拥塞窗口 cwnd = 1,即设置为一个最大报文段 MSS 的数值。
  2. 在每收到一个对新的报文段的确认后,将拥塞窗口加 1,即增加一个 MSS 的数值。
  3. 用这样的方法逐步增大发送端的拥塞窗口 cwnd,可以使分组注入到网络的速率更加合理。

技术图片
技术图片

3. 拥塞控制方法:快重传和快恢复

技术图片
技术图片

技术图片

九、TCP的传输连接管理(重点)

运输连接就有三个阶段,即:连接建立、数据传送和连接释放。

TCP 连接的建立都是采用客户服务器方式。

主动发起连接建立的应用进程叫做客户(client)。

被动等待连接建立的应用进程叫做服务器(server)。

1. TCP 的连接建立

用三次握手建立 TCP 连接

技术图片

  1. A 的 TCP 向 B 发出连接请求报文段,其首部中的同步位 SYN = 1,并选择序号 seq = x,表明传送数据时的第一个数据字节的序号是 x。
  2. B 的 TCP 收到连接请求报文段后,如同意,则发回确认。B 在确认报文段中应使 SYN = 1,使 ACK = 1 ,其确认号ack = x + 1,自己选择的序号 seq = y。
  3. A 收到此报文段后向 B 给出确认,其 ACK = 1, 确认号 ack = y + 1。A 的 TCP 通知上层应用进程,连接已经建立。

B 的 TCP 收到主机 A 的确认后,也通知其上层应用进程:TCP 连接已经建立。

例子如下:

技术图片

用三次握手建立 TCP 连接的各状态 :

技术图片

2. TCP 的连接释放

四次挥手

技术图片

技术图片

技术图片

技术图片

技术图片

A 必须等待 2MSL 的时间

  1. 为了保证 A 发送的最后一个 ACK 报文段能够到达 B。

  2. 防止 “已失效的连接请求报文段”出现在本连接中。A 在发送完最后一个 ACK 报文段后,再经过时间 2MSL,就可以使本连接持续的时间内所产生的所有报文段,都从网络中消失。这样就可以使下一个新的连接中不会出现这种旧的连接请求报文段。

为什么连接的时候是三次握手,关闭的时候却是四次握手?

答:因为当Server端收到Client端的SYN连接请求报文后,可以直接发送SYN+ACK报文。其中ACK报文是用来应答的,SYN报文是用来同步的。但是关闭连接时,当Server端收到FIN报文时,很可能并不会立即关闭SOCKET,所以只能先回复一个ACK报文,告诉Client端,"你发的FIN报文我收到了"。只有等到我Server端所有的报文都发送完了,我才能发送FIN报文,因此不能一起发送。故需要四步握手。

十、常见攻击方式

1. SYN攻击原理

何为syn攻击?

  首先在TCP/IP中,tcp协议提供可靠的socket连接服务,通过3次握手建立可靠连接。

  syn其实就是在进行到第二阶段结束后,此时服务器不是已经发送了syn消息和synack消息了吗,这服务器真是个老好人啊,由于tcp3次握手机制,它得等着终端那家伙给它反馈synack消息啊,所以吧,服务器得分配一定的资源等着终端那家伙啊。可是呢,这终端比较坏,不但不回复synack包给服务器,反倒搞一大堆第一阶段的syn请求消息。这下服务器可不好过了啊,得腾出好多好多资源给终端留着啊,最后可能就把自己搞死了。这就是所谓的syn攻击啊,又称为ddos攻击。

如图所示:利用软件随机生成IP地址访问服务器

技术图片

2. LAND攻击

LAND攻击利用了TCP连接建立的三次握手过程,通过向一个目标计算机发送一个TCP SYN报文(连接 建立请求报文)而完成对目标计算机的攻击。与正常的TCP SYN报文不同的是,LAND攻击报文的源IP地址 和目的IP地址是相同的,都是目标计算机的IP地址。这样目标计算机接收到这个SYN报文后,就会向该报文 的源地址发送一个ACK报文,并建立一个TCP连接控制结构(TCB),而该报文的源地址就是自己,因此, 这个ACK报文就发给了自己。这样如果攻击者发送了足够多的SYN报文,则目标计算机的TCB可能会耗尽, 最终不能正常服务。这也是一种DOS攻击。

如图所示:利用软件进行,源地址IP和目的IP地址相同

技术图片

计算机网络-5-传输层(代码片段)

文章目录计算机网络-5-传输层1.传输层概述1.1传输层1.2传输层的两个协议1.3传输层的寻址和端口2.UDP协议2.1用户数据报协议UDP概述2.2UDP首部格式3.TCP协议特点&TCP报文段格式3.1TCP协议的特点3.2TCP报文格式4.TCP连接管理4.1TCP的连接... 查看详情

笔记传输层tcp/udp(代码片段)

OSI7层1-物理层2-数据链路层3-网络层编址和路由4-传输层提供端到端的数据连接(端,就是端口的端)TCPUDP5-会话层(系统内部实现机制,数据包中无法体现出来)6-表示层(系统内部实现机制,数据包中无法体现出来)7-应用层=======... 查看详情

计算机网络8:传输层相关(代码片段)

1-传输层网络层只把分组发送到目的主机,但是真正通信的并不是主机而是主机中的进程。传输层提供了进程间的逻辑通信,传输层向高层用户屏蔽了下面网络层的核心细节,使应用程序看起来像是在两个传输层实体之间有一条... 查看详情

计网传输层(tcpudp可靠传输流量控制......)(代码片段)

文章目录传输层UDP协议TCP协议TCP首部字段可靠传输流量控制窗口关闭问题糊涂窗口综合症拥塞控制慢启动拥塞避免拥塞发生快速恢复连接管理建立连接(3次握手)释放连接(4次挥手)传输层传输层有两大协议ÿ... 查看详情

王道计算机网络传输层(代码片段)

王道考研计算机网络传输层1、传输层1.1、传输层的两个协议1.1.1、面向连接的传输控制协议TCP1.1.2、无连接的用户数据报协议UDP1.2、传输层的寻址与端口1.3、UDP协议1.3.1、UDP首部格式1.3.2、UDP校验1.4、TCP协议1.4.1、TCP报文段首部格... 查看详情

王道计算机网络传输层(代码片段)

王道考研计算机网络传输层1、传输层1.1、传输层的两个协议1.1.1、面向连接的传输控制协议TCP1.1.2、无连接的用户数据报协议UDP1.2、传输层的寻址与端口1.3、UDP协议1.3.1、UDP首部格式1.3.2、UDP校验1.4、TCP协议1.4.1、TCP报文段首部格... 查看详情

计网自顶向下--深入理解传输层(代码片段)

传输层目录传输层可靠传输层模型RDT1.0RDT2.0RDT2.1RDT2.2RDT3.0pipelinedsendingGo-Back-N(GBN)TCP详解连接的具体含义(TheTCPConnection)TCP结构(TCPSegmentStructure)TCPSequenceNumbersandAcknowledgmentNumbersTCP的重传机制(Round-TripTimeEsti 查看详情

005-tcp传输控制协议(代码片段)

一、概述  传输控制协议(英语:TransmissionControlProtocol,缩写为TCP)是一种面向连接的、可靠的、基于字节流的传输层通信协议,由IETF的RFC793定义。在简化的计算机网络OSI模型中,它完成第四层传输层所指定的功能,用户数... 查看详情

计算机网络之传输层概述udp协议以及tcp协议特点和报文段408_1(代码片段)

一、传输层(一)传输层概述只有主机才有的层次。传输层的功能:①、传输层提供进程和进程之间的逻辑通信。【网络层提供主机之间的逻辑通信。】②、复用和分用③、传输层对收到的报文进行差错检测。④、传... 查看详情

tcp传输控制协议(转)(代码片段)

开头先说几个协议:IP:网际协议TCP:传输控制协议Http:超文本传输协议AMQP:高级消息队列协议一:TCP是什么?TCP(TransmissionControlProtocol传输控制协议)是一种面向连接的、可靠的、基于字节流的传输层通信协议。首先来看看OS... 查看详情

计算机网络---剖析七层协议(代码片段)

一.ISO七层协议应用层应用层表示层 会话层 传输层传输层网络层网络层数据链路层物理层物理层 物理层:为数据端设备提供原始比特流的传输的通路      网络通信的数据传输介质,由电缆与设备共同构成(网线,... 查看详情

传输层(代码片段)

网络层:IP(RIP、OSPF、BGP)、ICMP、IGMP、ARP传输层:TCP、UDP应用层:http、https、ftp、SMTP、POP3、RDP一、传输层概述1.传输层两个协议应用场景TCP:分段、编号、流量控制、建立会话、netstat-nUDP:一个数据包就能完成数据通信、不建立... 查看详情

数据链路层(代码片段)

...处理主机之间的通信****三个基本问题:封装成帧,透明传输,差错检验**封装成帧:网络层数据包到数据链路层后因为分组交换会被分成小份的数据,这些小分数据报被头尾加上帧首部和帧尾部形成数据帧,数据传输单位。透明... 查看详情

网络协议系列八-传输层-tcp之可靠传输(代码片段)

...提问的。一、TCPTCP(TransmissionControlProtocol):传输控制协议。TCP的几个要点:可靠传输、流量控制、拥塞控制、连接管理(建立和释放连接)。也正因为这几点使得首部变得很复杂。1.1.数据偏移&# 查看详情

王道计算机网络传输层(代码片段)

王道考研计算机网络传输层1、传输层1.1、传输层的两个协议1.1.1、面向连接的传输控制协议TCP1.1.2、无连接的用户数据报协议UDP1.2、传输层的寻址与端口1.3、UDP协议1.3.1、UDP首部格式1.3.2、UDP校验1.4、TCP协议1.4.1、TCP报文段首部格... 查看详情

dtls数据包传输层安全性协议详解(代码片段)

...DTLS相比TLS做了一些改进3、DTLS的消息格式3.1、记录层3.2、传输层映射3.3、记录负载保护3.4、握手消息格式3.5、握手交互消息内容    互联网先驱们最开始在设计互联网协议时主要考虑的是可用性,安全性是没有考虑在其中... 查看详情

linux网络基础--传输层详解(代码片段)

网络基础--传输层详解🍅传输层🍋再谈端口号🥝netstat指令🥝端口号划分范围🥝常见的知名端口号(Well-KnowPortNumber):🍋UDP协议🥝UDP协议段格式🥝UDP协议的特点🍓面向数据报🥝UDP的缓... 查看详情

linux网络基础--传输层详解(代码片段)

网络基础--传输层详解🍅传输层🍋再谈端口号🥝netstat指令🥝端口号划分范围🥝常见的知名端口号(Well-KnowPortNumber):🍋UDP协议🥝UDP协议段格式🥝UDP协议的特点🍓面向数据报🥝UDP的缓... 查看详情