Blog.011 传输层协议详解

本章目录

 

 

 

1. 传输层协议的分类
2. TCP协议
  2.1 TCP协议的概念
  2.2 TCP报文段
3. TCP连接
  3.1 TCP建立连接·三次握手
  3.2 TCP断开连接·四次挥手
  3.3 TCP半关闭、半连接、半打开的概念
4.常用的TCP端口号及其功能
5. UDP协议
  5.1 UDP协议的概念
  5.2 UDP报文的首部格式
6. 常用的UDP端口号及其功能

 

 

 

1.传输层协议的分类

    传输层是一种只有主机才拥有的层次,使用网络层的服务为应用层提供通信服务。传输层提供进程与进程之间的通信,有两种协议:

    (1)TCP(Transmission Control Protocol)传输控制协议;
    (2)UDP(User Datagram Protocol)用户数据报协议。

2. TCP协议

  2.1 TCP协议的概念

    (1)TCP是面向连接的、可靠的进程到进程通信的协议;
    (2)TCP提供全双工服务,即数据可在同一时间双向传输;

  2.2 TCP报文段

 

    (1)TCP将若干个字节构成一个分组,叫报文段(Segment);
    (2)TCP报文段封装在IP数据报中。

 

  • 序号:发送端为每个字节进行编号,便于接收端正确重组;
  • 确认号:用于确认发送端的信息;
  • 窗口大小:用于说明本地可接受数据段的数目,窗口大小是可变的;
  • SYN:同步序号位,TCP需要建立连接时将该值设为1;
  • ACK:确认序号位,当该位为1时,用于确认发送方的数据;
  • FIN:当TCP断开连接时该位为1。

3. TCP连接

  3.1 TCP建立连接·三次握手★★★

 

  • 第一次握手:PC1 给 PC2 发一个 SYN 报文。
  • 首部的同步位SYN=1,初始序号seq=x,SYN=1的报文段不能携带数据,但要消耗掉一个序号。
  • 第二次握手:PC2 收到 PC1 的 SYN 报文之后,会以自己的 SYN 报文作为应答,同时会把 PC1 的 ISN + 1 作为ACK 的值,表示自己已经收到了 PC1 的 SYN。
  • 在确认报文段中SYN=1,ACK=1,确认号ack=x+1,初始序号seq=y。
  • 第三次握手:PC1 收到 SYN 报文之后,会发送一个 ACK 报文,当然,也是一样把 PC2 的 ISN + 1 作为 ACK 的值,表示已经收到了 PC2 的 SYN 报文。
  • 确认报文段ACK=1,确认号ack=y+1,序号seq=x+1(初始为seq=x,第二个报文段所以要+1),ACK报文段可以携带数据,不携带数据则不消耗序号。

  3.2 TCP断开连接·四次挥手★★★

 

  • 第一次挥手:PC1 发送一个 FIN 报文。
  • 即发出连接释放报文段(FIN=1),并停止再发送数据,主动关闭TCP连接,等待 PC2 的确认。
  • 第二次挥手:PC2 收到 FIN 之后,会发送 ACK 报文,表明已经收到 PC1 的报文了。
  • 即 PC2 收到连接释放报文段后即发出确认报文段(ACK=1),此时的 TCP 处于半关闭状态,PC1 到 PC2 的连接释放。PC1 收到 PC2 的确认后,等待 PC2 发出的连接释放报文段。
  • 第三次挥手:如果 PC2 也想断开连接了,和 PC1 的第一次挥手一样,发送 FIN 报文。
  • 即 PC2 没有要向 PC1 发出的数据,PC2 发出连接释放报文段(FIN=1,ACK=1),等待 PC1 的确认。
  • 第四次挥手:PC1 收到 FIN 之后,一样发送一个 ACK 报文作为应答,需要过一阵子以确保 PC2 收到自己的 ACK 报文之后才会关闭连接,待 PC2 收到 ACK 报文之后,关闭连接。

 

  3.3 TCP半连接、半关闭、半打开的概念

    (1)半关闭:当TCP链接中A向B发送FIN请求关闭,另一端B回应ACK之后,并没有立即发送FIN给A,A处于半连接(半开关)状态,此时A可以接收B发送的数据,但是A已经不能再向B发送数据。
    (2)半连接:发生在TCP三次握手中,如果A向B发起链接,B也按照正常情况响应了,但是A不进行三次握手,这就是半连接。

  • 半连接攻击(SYN攻击):半连接会造成B分配的内存资源就一直这么耗着,直到资源耗尽。

    (3)如果一方关闭或者异常关闭(断电、断网),而另一方并不知情,这样的连接称之为半打开。处于半打开的连接,如果双方不进行数据通信,是发现不了问题的,只有在通信真正察觉到这个连接已经处于半打开状态,如果双方不传输数据的话,仍处于连接状态的一方就不会检测另外一方已经出现异常。

  • 解决方法:引入心跳机制就可以察觉半打开。如果需要发数据的状态下,一方收到以后发现此连接并不存在,就会恢复RST包告知,即重新建立连接。

 

 4. 常用的TCP端口号及其功能★★★

 

端口 协议 说明
21 FTP FTP服务器所开放的控制端口
23 TELNET 用于远程登录,可以远程控制管理目标计算机
25 SMTP SMTP服务器开放的端口,用于发送邮件
80 HTTP 超文本传输协议
110 POP3 用于邮件的接收

 

5. UDP协议

    Internet 协议集支持一个无连接的传输协议,该协议称为用户数据报协议(UDP,User Datagram Protocol)。UDP 为应用程序提供了一种无需建立连接就可以发送封装的 IP 数据包的方法。

  5.1 UDP协议的概念 

    (1)无连接、不可靠的传输协议
    (2)花费的开销小

  5.2 UDP报文的首部格式

 

    (1)源端口号:表示发送端端口号,字段长为16位。没有源端口时该字段的值为0,可用于不需要返回值的通信中。
    (2)目标端口号:表示接收端端口号,字段长度为16位。4
    (3)UDP长度:该字段保存了UDP首部的长度跟数据的长度之和。
    (4)校验和:校验和是为了提供可靠的UDP首部和数据而设计的。

 

6.常用的UDP端口号及其功能★★★

 

 

端口 协议 说明
69 TFTP 简单文件传输协议
111 RPC 远程过程调用
123 NTP 网络时间协议
posted @ 2021-05-20 09:54  洛洛你好  阅读(253)  评论(0)    收藏  举报