TCP/IP协议之传输层

TCP/IP协议之传输层
一.基本概念
****传输层是整个网络体系结构中的关键层次之一,主要负责向两个主机中进程之间的通信提供服务。由于一个主机同时运行多个进程,因此运输层具有复用和分用功能。传输层在终端用户之间提供透明的数据传输,向上层提供可靠的数据传输服务。传输层在给定的链路上通过流量控制、分段/重组和差错控制来保证数据传输的可靠性。传输层的一些协议是面向链接的,这就意味着传输层能保持对分段的跟踪,并且重传那些失败的分段。
**** 传输层中最为常见的两个协议分别是传输控制协议TCP(Transmission Control Protocol)和用户数据包协议UDP(User Datagram Protocol)。

二.主要作用
**** 传输层协议能提供应用的多路复用/分用服务、可靠数据传送、带宽保证及延迟保证等。网络层提供的是“best effort”尽力而为的服务,网络层提供的无连接服务不可靠(丢包、重复),并且路由器可能崩溃,或者传输线路中断,所以传输层必须足够健壮来解决网络层不可靠,不稳定的问题,比如说传输层可检测到包丢失、损坏、乱序等差错情况,采取相应措施;或者当数据传输过程中网络连接中断,传输层可与远程传输实体建立一新的网络连接,在中断处继续数据的传输

****多路复用和分用。
复用:当传输层从应用程序接收报文后要封装在传输层的段中再交给网络层发送。
分用:当传输层从网络层接收数据后,必须将数据正确递交给某个应用程序。也就是传输层曾能够区分不同进程的数据并且加以区分处理。可靠数据传输,比如传输层的TCP协议,提供了面向连接的,可靠的,具有拥塞控制的协议,这是为了弥补网络层不足所建立的。
**** 此外,传输层还有寻址的功能,定位应用程序在哪里。以及流量的控制,防止接收端速度太慢造成溢出和丢包的现象。流量控制和拥塞控制的区别是:流量控制只是端端之间,只需要管理两个端之间的流量传输即可,也就是局部的。但是拥塞控制是全局的,是整个网络所做的事情,需要所有的路由器主机一起努力完成的事情。在传输层,既有流量控制也有拥塞控制。
**** 传输协议要解决的问题取决于网络底层所能提供的服务质量。
三.端口号
****传输层也有这种类似于地址的概念,那就是端口号。端口号用来识别同一台计算机中进行通信的不同应用程序。因此,它也被称为程序地址。
在这里插入图片描述
在TCP/IP协议栈中,端口号是0~65535之间的整数
TCP/IP模型中传输层的两个协议TCP和UDP依靠端口号区分不同的进程

IANA(互联网地址指派机构)将端口号划分为3个范围:熟知的、注册的和动态的(或私有的)。
熟知端口:0~1023,由IANA指派和控制。
注册端口:1024~49151,IANA不指派也不控制。它们只能在IANA注册以防止重复。
动态端口:49152~65535,既不用指派也不用注册。它们可以由任何进程来使用,是临时的端口。
在这里插入图片描述
在这里插入图片描述
四.TCP协议和UDP协议
(1)TCP协议
TCP全称为“传输控制协议”,即要对数据的传输进行一个详细的控制。
特点:1.是面向连接的传输层协议。
2.是端对端的,只能是一对一连接。
3.可靠的交付服务。无差错、无重复、且有序。
4.面向字节流
在这里插入图片描述
TCP协议段格式

  • 16位源/目的端口号:表示数据是从哪个进程来,到哪个进程去。
  • 32位***/32位确认号:在后面详解
  • 4位TCP报头长度:表示该TCP头部有多少个32位bit(有多少个4字节); 所以TCP头部最大长度是15 * 4 =60
  • 6位标志位:
    ACK: 确认报文段,ACK=1,表示服务器端(客户端)对客户端(服务器端)进行应答。
    SYN: 同步报文段,SYN=1,表示尝试和对方建立连接。
    FIN: 结束报文段,FIN=1,表示尝试断开连接。
    RST: 复位报文段,RST=1,表示尝试和对方重新建立连接。
    16位校验和:和UDP的类似,都是检验数据传输是否出错。

TCP连接管理机制
在正常情况下, TCP要经过三次握手建立连接, 四次挥手断开连接

分段与重组
在这里插入图片描述
确认与重传
****连接建立成功之后,发送的每一条数据也有可能会“丢失”,因此就需要确认应答。
****主机A发送数据给B之后,可能因为网络拥堵等原因,数据无法到达主机B;
如果主机A在一个特定的时间间隔内没有收到B发来的确认应答,就会进行重发

在这里插入图片描述
滑动窗口
由于一发一收的方式性能较低,所以采用一次发送多条数据,就可以大大的提高性能(其实是将多个段的等待时间重叠在一起了)
在这里插入图片描述
流量控制
TCP支持根据接收端的处理能力,来决定发送端的发送速度,这个机制就叫做流量控制。

  • 接收端将自己可以接收的缓冲区大小放入TCP首部中的“窗口大小”字段,通过ACK端通知发送端;
  • 窗口大小字段越大,说明网络的吞吐量越高;
  • 接收端一旦发现自己的缓冲区快满了,就会将窗口大小设置成一个更小的值通知给发送端;
  • 发送端接收到这个窗口之后,就会减慢自己的发送速度;
  • 如果接收端缓冲区满了,就会将窗口置为0;这时发送方不再发送数据,但是需要定期发送一个窗口探测数据段,使接收端把窗口大小告诉发送端。

拥塞控制
根据当前网络的拥堵程度,来决定发送端的发送速度,这个机制就叫做拥塞控制。
在这里插入图片描述

(2)UDP协议
UDP为应用程序提供面向无连接的服务。传输数据之前源端和目的端不需要建立连接
不需要维护连接状态,收发状态等,因此服务器可同时向多个客户端传输相同的消息
UDP适用于对传输效率要求高的运用。
(3)TCP和UDP协议区别

在这里插入图片描述
四.传输层涉及的安全问题
TCP 欺骗、TCP拒绝服务、UDP拒绝服务、端口扫描、……
1.TCP欺骗
攻击原理:
(1)攻击者先将要伪装的主机攻克
(2)攻击者用被攻克的主机的地址作为源地址给目的主机发送TCP SYN报文
(3)目标主机回应TCP SYN/ACK报文,携带序列码S
(4)C收不到序列码,但为了完成握手必须使用S+1作为序列码进行应答,这时C可以通过监听SYN/ACK报文,根据得到的值进行计算或者根据操作系统的特新进行猜测
(5)攻击者使用得出的序列码S回应给目标主机,握手完成,虚假连接建立

2.TCP拒绝服务——SYN Flood攻击
攻击原理:SYN报文是TCP连接的第一个报文,攻击者通过大量发送SYN报文,造成大量未完全建立的TCP连接,占用被攻击者的资源。
在这里插入图片描述
3.端口扫描攻击
攻击原理:攻击者通常使用一些软件,先大范围的主机的一系列TCP/UDP端口发起连接,根据应答报文判断主机是否使用这些端口提供服务
防范策略:配置端口扫描攻击防范参数后,设备对进入的TCP,UDP,ICMP报文进行检测,并以每个源地址作为索引,判断该源地址发送报文的目的端口与前一报文的目的端口是否不同,如果是则异常数加1,当异常频率到达阈值时,则认为该源IP地址的报文为端口扫描攻击,并将该源ip地址加入黑名单

4.UDP拒绝服务
攻击原理:攻击者通过向服务器发送大量的UDP报文,占用服务器的链路带宽,导致服务器负担过重而不能正常向外提供服务。

在这里插入图片描述